Skip to content

Commit 91ba9b0

Browse files
Sometimes Project related events were called with a null value. Most likely because VS also calls these for Solution Folders
1 parent 52ba347 commit 91ba9b0

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

src/toolkit/Community.VisualStudio.Toolkit.Shared/Solution/SolutionEvents.cs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,9 @@ int IVsSolutionEvents.OnBeforeCloseProject(IVsHierarchy pHierarchy, int fRemoved
104104
ThreadHelper.ThrowIfNotOnUIThread();
105105
if (OnBeforeCloseProject != null)
106106
{
107-
Project? project = SolutionItem.FromHierarchy(pHierarchy, VSConstants.VSITEMID_ROOT) as Project;
108-
OnBeforeCloseProject?.Invoke(project);
107+
SolutionItem? item = SolutionItem.FromHierarchy(pHierarchy, VSConstants.VSITEMID_ROOT);
108+
if (item is Project project)
109+
OnBeforeCloseProject?.Invoke(project);
109110
}
110111
return VSConstants.S_OK;
111112
}
@@ -115,8 +116,9 @@ int IVsSolutionEvents.OnAfterLoadProject(IVsHierarchy pStubHierarchy, IVsHierarc
115116
ThreadHelper.ThrowIfNotOnUIThread();
116117
if (OnAfterLoadProject != null)
117118
{
118-
Project? project = SolutionItem.FromHierarchy(pRealHierarchy, VSConstants.VSITEMID_ROOT) as Project;
119-
OnAfterLoadProject?.Invoke(project);
119+
SolutionItem? item = SolutionItem.FromHierarchy(pHierarchy, VSConstants.VSITEMID_ROOT);
120+
if (item is Project project)
121+
OnAfterLoadProject?.Invoke(project);
120122
}
121123
return VSConstants.S_OK;
122124
}
@@ -132,8 +134,9 @@ int IVsSolutionEvents.OnBeforeUnloadProject(IVsHierarchy pRealHierarchy, IVsHier
132134

133135
if (OnBeforeUnloadProject != null)
134136
{
135-
Project? project = SolutionItem.FromHierarchy(pRealHierarchy, VSConstants.VSITEMID_ROOT) as Project;
136-
OnBeforeUnloadProject?.Invoke(project);
137+
SolutionItem? item = SolutionItem.FromHierarchy(pHierarchy, VSConstants.VSITEMID_ROOT);
138+
if (item is Project project)
139+
OnBeforeUnloadProject?.Invoke(project);
137140
}
138141
return VSConstants.S_OK;
139142
}
@@ -250,8 +253,9 @@ int IVsSolutionEvents4.OnAfterRenameProject(IVsHierarchy pHierarchy)
250253

251254
if (OnAfterRenameProject != null)
252255
{
253-
Project? project = SolutionItem.FromHierarchy(pHierarchy, VSConstants.VSITEMID_ROOT) as Project;
254-
OnAfterRenameProject?.Invoke(project);
256+
SolutionItem? item = SolutionItem.FromHierarchy(pHierarchy, VSConstants.VSITEMID_ROOT);
257+
if (item is Project project)
258+
OnAfterRenameProject?.Invoke(project);
255259
}
256260
return VSConstants.S_OK;
257261
}

0 commit comments

Comments
 (0)