原始檔控制設定的詳細資料
如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件。
若要實作原始檔控制,您必須適當地設定您的專案系統或編輯器,請執行下列︰
要求權限已變更狀態的轉換
要求儲存檔案的權限
要求權限來新增、 移除或重新命名專案中的檔案
要求權限已變更狀態的轉換
專案或編輯器必須藉由呼叫要求轉換為已變更 (dirty) 狀態的權限IVsQueryEditQuerySave2。 實作每個編輯器IsDocDataDirty必須呼叫QueryEditFiles和獲得核准,以從環境中變更文件,再傳回True
的M:Microsoft.VisualStudio.Shell.Interop.IVsPersistDocData.IsDocDataDirty(System.Int32@)
。 專案基本上是專案檔,一個編輯器,如此一來,具有相同負責實作專案檔的狀態變更追蹤,如文字編輯器為它的檔案。 環境處理的方案時,已變更的狀態,但是您必須處理的任何物件參考的方案,但不會儲存,例如,專案檔案或其項目已變更的狀態。 一般情況下,如果您的專案或編輯器是負責管理持續性的項目,然後它會負責實作狀態變更追蹤。
為了回應IVsQueryEditQuerySave2::QueryEditFiles
呼叫時,環境可以執行下列動作︰
拒絕呼叫來變更、 編輯器或專案在此情況下必須保持不變 (乾淨) 狀態。
指出應重新載入文件資料。 專案中,環境會重新載入專案的資料。 編輯器必須重新載入的資料從磁碟透過其ReloadDocData實作。 在任一情況下,重新載入資料時,可以變更專案或編輯器中的內容。
複雜且難以上手任務為 retrofit 適當IVsQueryEditQuerySave2::QueryEditFiles
到現有的程式碼基底的呼叫。 如此一來,這些呼叫應該在建立專案或編輯器整合。
要求儲存檔案的權限
專案或編輯器儲存檔案之前,必須呼叫QuerySaveFile或QuerySaveFiles。 專案檔案,這些呼叫會自動完成的方案,知道何時要儲存專案檔。 編輯器會負責進行這些呼叫,除非編輯器實作IVsPersistDocData2
helper 函式會使用SaveDocDataToFile。 如果您的編輯器實作IVsPersistDocData2
在這種方式,然後呼叫IVsQueryEditQuerySave2::QuerySaveFile
或IVsQueryEditQuerySave2::QuerySaveFiles
就自動完成。
注意
請一律事先進行這些呼叫 — 也就是您的編輯器時能夠接收取消一次。
要求權限來新增、 移除或重新命名專案中的檔案
專案可以加入、 重新命名或移除檔案或目錄之前,必須呼叫適當IVsTrackProjectDocuments2::OnQuery*
以要求權限環境中的方法。 如果授與權限時,則專案必須完成此作業,然後呼叫它適當IVsTrackProjectDocuments2::OnAfter*
方法來通知作業完成時的環境。 專案必須呼叫的方法IVsTrackProjectDocuments2介面的所有檔案 (例如,特殊檔案) 並不只是父檔案。 檔案呼叫是必要項,但目錄的呼叫是選擇性的。 如果您的專案具有目錄資訊,則應該呼叫適當IVsTrackProjectDocuments2方法,但如果沒有這項資訊,則環境會推斷目錄資訊。
專案不應該呼叫的方法IVsTrackProjectDocuments2
在專案中,開啟或關閉。 要取得此資訊在啟動接聽程式可以等待OnAfterOpenSolution事件並逐一查看方案,以尋找所需的資訊。 關閉時,就不需要這項資訊。 IVsTrackProjectDocuments2
提供從SVsTrackProjectDocuments。
對於每個新增、 重新命名及移除動作沒有OnQuery*
方法和OnAfter*
方法。 呼叫OnQuery*
方法來要求權限新增,請重新命名或移除檔案或目錄。 呼叫OnAfter*
方法之後加入、 重新命名或移除檔案或目錄和專案狀態會反映新的狀態。
另請參閱
IVsPersistDocData
QuerySaveFile
QuerySaveFiles
IVsTrackProjectDocuments2
SaveDocDataToFile
SVsTrackProjectDocuments
支援的原始檔控制