實作原始檔控制外掛程式的最佳作法
下列技術的詳細資訊可以幫助您可靠地實作的原始檔控制外掛程式在Visual Studio。
記憶體管理相關的問題
在大部分的情況下,整合式的開發環境 (IDE),也就是呼叫者,會釋放,並會配置記憶體。 原始檔控制外掛程式傳回呼叫端配置的緩衝區中的字串和其他項目。 描述發生位置的特定函式中已說明例外狀況。
陣列的檔名
在陣列中的檔案傳遞時,它不會傳遞為連續的檔案名稱陣列。 其被當成指標陣列傳遞至檔名。 例如,在SccGet 函式,以傳的檔案名稱lpFileNames參數,其中lpFileNames實際上是指向char **。 lpFileNames[0] 是指向第一個名稱, lpFileNames[1] 是指向第二個名稱,依此類推。
大型模型
所有的指標都是 32 位元,即使在 16 位元作業系統上。
完整的路徑
在檔案名稱或目錄指定做為引數時,它們必須是完整的路徑或 UNC 路徑,不包含結束的反斜線。 負責的原始檔控制外掛程式,以便轉換這些為相對路徑,如果也就是基礎的原始檔控制系統的需求。
指定已註冊的 DLL 的完整的路徑
IDE 不會再載入 Dll 的相對路徑 (例如,。 \NewProvider.dll)。 必須指定 DLL 的完整路徑 (例如 C:\Providers\NewProvider.dll)。 這項需求會加強 IDE 的安全性,防止未經授權或模擬的原始檔控制 Dll 的載入。
當您安裝原始檔控制外掛程式時檢查現有的 VSSCI 外掛程式
若要安裝您的原始檔控制外掛程式計劃的使用者可能已經有現有原始檔控制外掛程式安裝在電腦上。 (安裝程式) 安裝程式外掛程式您會建立應該判斷是否有相關的登錄機碼的現有值。 如果這些機碼都已設定,安裝程式應該詢問使用者是否註冊為預設原始檔控制外掛程式的外掛程式,並取代已安裝的那一個。
錯誤結果程式碼和報告
SCC_OK傳回原始檔控制功能的程式碼表示操作已經順利完成的所有檔案。 如果作業失敗,它被期待傳回最後一個遇到的錯誤代碼。
報告的規則是如果錯誤發生在 IDE 中,IDE 會負責向它報告。 在 [原始檔控制系統中發生錯誤,如果原始檔控制外掛程式負責向它報告。 舉個例說,"目前選取任何檔案 」 時會報告 ide,而會報告 「 這個檔案已經簽出 」 外掛程式。
Context 結構
若要在呼叫期間SccInitialize 函式,呼叫端傳遞ppvContext參數,也就是未初始化的處理,為 void。 原始檔控制外掛程式可以忽略這個參數,或它配置任何種類的結構,並傳遞指標到放入指標,該結構。 IDE 不了解這種結構,但此結構傳遞指標到外掛程式的每個呼叫。 這提供有價值的內容快取資訊的外掛程式可以使用以維護持續存在於所有函式呼叫不使用全域變數的全域狀態資訊。 外掛程式負責釋出的結構,在呼叫SccUninitialize 函式。
如果外掛程式設定SCC_CAP_REENTRANT中位元SccInitialize 函式 (特別是在lpSccCaps參數),多個內容的結構用來追蹤所有已開啟的專案。
位元旗標和其他命令選項
針對每個命令,例如SccGet 函式,IDE 可以指定許多選項,變更命令的行為。
API 支援透過 ide 特定選項的設定值fOptions參數。 這些選項所述特定命令使用的位元旗標與它們所影響的命令。 一般情況下,這些都是,使用者就不會提示您的選項。
最使用者可設定的設定選項中未定義這種方式,因為它們在原始檔控制外掛程式之間差異非常大。 因此,建議使用的機制是進階 ] 按鈕。 舉個例說,在取得 對話方塊中,IDE 會顯示資訊,它能夠了解,但它也會顯示 進階按鈕若此外掛程式內有此命令的選項。 當使用者按一下進階按鈕時,IDE 呼叫SccGetCommandOptions 函式啟用原始檔控制外掛程式,以提示使用者輸入資訊,例如位元旗標或日期/時間。 外掛程式傳回這項資訊在結構中上, 一步期間會傳遞SccGet指令。