查詢編輯查詢儲存 (原始檔控制 VSPackage)
Visual Studio 編輯器可以廣播查詢編輯查詢儲存 (QEQS) 事件。 Visual Studio 原始檔控制 Stub 實作 QEQS 服務,因此它是 QEQS 事件的接收者。 這些事件接著會委派給目前使用中的原始檔控制 VSPackage。 使用中的原始檔控制 VSPackage 實作 IVsQueryEditQuerySave2 和其方法。 通常在第一次編輯文件之前和儲存文件之前立即呼叫 IVsQueryEditQuerySave2
介面的方法。
QueryEditQuerySave 事件
原始檔控制 VSPackage 必須實作 IVsQueryEditQuerySave2
介面和必要方法來處理 QEQS 事件。 下面簡要介紹 VSPackage 至少必須實作的兩個方法。 實際實作必須符合原始檔控制模型的邏輯。
QueryEditFiles 方法
當任何專案或編輯器要修改檔案時,就會呼叫 QueryEditFiles 方法。 在理想情況下,在修改檔案之前和儲存檔案時呼叫此方法。 叫用時,IVsQueryEditQuerySave2::QueryEditFiles
方法會檢查指定的檔案是否在原始檔控制之下、是否需要簽出,以及是否可以重新載入它們。 如果出現無法編輯檔案的情況,IVsQueryEditQuerySave2::QueryEditFiles
方法會告訴呼叫程式取消編輯。 呼叫者也可以指定叫用模式。 在「無訊息」模式中,只有在此方法未造成任何 UI 出現時,才會採取動作。 如果無法避免 UI,則必須傳回旗標以指出問題。
方法會以交易方式執行;也就是說,如果在單一檔案上取消編輯,則會取消所有檔案的編輯。 相反地,如果允許編輯,則所有文件都允許編輯。 如果該方法允許對指定的一組檔案進行一次編輯,那麼它必須一律允許在隨後的呼叫中對同一組檔案進行編輯。 allow-edit 循環一直持續到檔案關閉、儲存和重新載入;檔案屬性 (屬性) 發生變化;或原始檔控制套件變更為止。 實作 IVsQueryEditQuerySave2::QueryEditFiles
方法時需要考慮的情況包括多個檔案、特殊檔案、來自使用者的取消和記憶體內部編輯。
QuerySaveFiles 方法
當任何專案或編輯器需要儲存檔案時,就會呼叫 QuerySaveFiles。 叫用時,IVsQueryEditQuerySave2::QuerySaveFiles
方法會檢查指定的檔案是否為唯讀,以及它們是否在原始檔控制之下。 如果需要遷出檔案,呼叫會委派給原始檔控制套件。 如果出現無法儲存檔案的情況,IVsQueryEditQuerySave2::QuerySaveFiles
方法必須告知編輯器取消儲存。 與 IVsQueryEditQuerySave2::QueryEditFiles
方法一樣,呼叫者可以指定叫用模式。 在「無訊息」模式中,只有在此方法未造成任何 UI 出現時,才會採取動作。 如果無法避免 UI,則必須傳回旗標以指出問題。
此方法必須以交易方式執行;也就是說,如果在單一檔案上取消儲存,則會取消所有檔案的儲存。 相反地,如果允許儲存,則所有文件都允許儲存。 與 IVsQueryEditQuerySave2::QueryEditFiles
方法一樣,在實作 IVsQueryEditQuerySave2::QuerySaveFiles
方法時需要考慮的情況包括多個檔案、特殊檔案、來自使用者的取消和記憶體內部編輯。