卸載和 Reloading 的巢狀專案的考量因素
當您實作巢狀的專案類型時,您必須先執行額外的步驟,當您卸載並重新載入專案。 若要正確地通知方案事件的接聽程式,您必須正確地引發OnBeforeUnloadProject和OnAfterLoadProject事件。
您必須引發這些事件,以這種方式的其中一個原因是您不想原始程式碼控制 (SCC) 從伺服器刪除的項目,然後將它們新增為新的如果沒有Get從 SCC 的作業。 在此情況下,新的檔案會載入 SCC 之外,您必須卸載並重新載入所有的檔案,以備不同。 SCC 呼叫ReloadItem。 您的實作,該呼叫的是要刪除的專案,並重新建立它再實作IVsFireSolutionEvents呼叫OnBeforeUnloadProject和OnAfterLoadProject。 當您執行這項實作時,SCC 會通知關於專案已暫時刪除,並再次新增。 因此,SCC 不能進行專案時,如果專案實際從伺服器刪除,然後再次新增。
重新載入專案
若要支援的巢狀專案重新載入,實作ReloadItem方法。 在實作中的ReloadItem,您關閉巢狀的專案,然後再重新建立。
通常當重新載入專案,會在 IDE 引發OnBeforeUnloadProject和**M:Microsoft.VisualStudio.Shell.Interop.IVsSolutionEvents3.OnAfterLoadProject(Microsoft.VisualStudio.Shell.Interop.IVsHierarchy,Microsoft.VisualStudio.Shell.Interop.IVsHierarchy)**事件。 不過,對於巢狀專案將會被刪除並重新載入,父專案啟動的處理程序中,而不是在 IDE。 因為父專案不會引發解決方案事件,IDE 會有任何程序的初始設定的相關資訊,都不會引發事件。
若要處理這個過程中,父專案的呼叫QueryInterface的IVsFireSolutionEvents介面關閉IVsSolution介面。 IVsFireSolutionEvents具有函式,判斷要引發 IDE OnBeforeUnloadProject卸載巢狀的專案,並接著引發的事件OnAfterLoadProject事件,以重新載入同一個專案。