共用方式為


卸載並重新載入巢狀專案的考量

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

當您實作巢狀的專案類型時,您必須執行額外的步驟,當您卸除並重新載入專案。 若要正確通知方案事件接聽程式,您必須正確地引發OnBeforeUnloadProjectOnAfterLoadProject事件。

您必須引發這些事件以這種方式的其中一個原因是您不想原始程式碼控制 (SCC) 才能從伺服器刪除的項目,然後將它們當做新項目是否有GetSCC 作業。 在此情況下,從 SCC 會載入新的檔案,並可卸載並重新載入的所有檔案,以防不相同。 SCC 呼叫ReloadItem。 該呼叫的實作是刪除專案,並重新建立它一次實作IVsFireSolutionEvents呼叫OnBeforeUnloadProjectOnAfterLoadProject。 當您執行這項實作時,SCC 會收到通知,專案已暫時刪除,並再次新增。 因此,SCC 無法運作的專案上,如果專案已實際從伺服器刪除,然後再次加入。

重新載入專案

若要支援巢狀專案重新載入,實作ReloadItem方法。 在您實作ReloadItem,關閉巢狀的專案,然後再重新建立它們。

通常當重新載入專案時,IDE 會引發OnBeforeUnloadProjectM:Microsoft.VisualStudio.Shell.Interop.IVsSolutionEvents3.OnAfterLoadProject(Microsoft.VisualStudio.Shell.Interop.IVsHierarchy,Microsoft.VisualStudio.Shell.Interop.IVsHierarchy)事件。 不過,巢狀專案中,將會刪除並重新載入,父專案起始程序,而不是 IDE。 由於父專案不會引發方案事件,且 IDE 沒有初始化程序的相關資訊,都不會引發事件。

若要處理程序中,父專案呼叫QueryInterfaceIVsFireSolutionEvents介面關閉IVsSolution介面。 IVsFireSolutionEvents具有函式,指示 IDE 引發OnBeforeUnloadProject事件,以卸載巢狀的專案,然後再引發OnAfterLoadProject事件重新載入相同的專案。

另請參閱

IVsSolutionEvents3
巢狀專案