範本目錄描述檔 (.Vsdir)
範本目錄描述檔 (.vsdir) 是一個文字檔,可讓整合開發環境 (IDE) 在對話方塊中顯示與專案相關聯的資料夾、精靈 .vsz 檔案和範本檔案。 內容包含各檔案或資料夾的一筆記錄。 雖然通常會提供一個 .vsdir 檔來描述多個資料夾、精靈或範本檔案,但會合併參考位置中的所有 .vsdir 檔。
資料夾 (子目錄)、.vsdir 檔中所參考的檔案以及 .vsdir 檔本身,全都位於相同的目錄中。 當 IDE 執行精靈或在 [新增專案] 或 [新增專案] 對話方塊中顯示資料夾或檔案時,IDE 會檢查包含已執行檔案的目錄,以確定 .vsdir 檔是否存在。 如果找到 .vsdir 檔,IDE 會讀取此檔案,以確定其是否包含執行或顯示之資料夾或檔案的項目。 如果找到項目,IDE 會使用精靈執行中的資訊,或顯示內容。
下列程式碼範例來自 <EnvSDK>\BscPrj\BscPrj\BscPrj\BscPrjProjectItems\Source_Files 登录機碼中的 SourceFiles.vsdir 檔案:
HeaderFile.h|{E59935A1-6156-11d1-87A6-00A0C91E2A46}|#125|130|#126|0|0|0|#127
SourceFile.cpp|{E59935A1-6156-11d1-87A6-00A0C91E2A46}|#122|110|#123|0|0|0|#124
在此情況下,兩筆記錄都在一支檔案中。 新行 (換行字元) 會分隔每筆記錄。 每一行都代表不同的檔案類型。 直立線符號 (|) 字元會分隔每筆記錄中的欄位。 單一目錄可以包含多個具有不同檔名的 .vsdir 檔,或是每個檔案類型都有一個 .vsdir 檔。
欄位
下表列出針對每筆記錄指定的欄位。
欄位 | 描述 |
---|---|
相對路徑名稱 (RelPathName) | 資料夾、範本或 .vsz 檔的名稱,例如 HeaderFile.h 或 MyWizard.vsz。 此欄位也可以是用來表示資料夾的名稱。 |
{clsidPackage} | VSPackage 的 GUID 可在 VSPackage 的附屬動態連結庫 (DLL) 資源中存取當地語系化字串,例如 LocalizedName、Description、IconResourceId 和 SuggestedBaseName。 如果未提供 DLLPath,則會套用 IconResourceId。 注意: 除非一或多個之前欄位是資源識別碼,否則此欄位是選擇性的。 針對與未當地語系化文字的第三方精靈對應的 .vsdir 檔,此欄位通常為空白。 |
LocalizedName | 範本檔案或精靈的當地語系化名稱。 此欄位可以是 "#ResID" 格式的字串或資源識別碼。 此名稱顯示在 [新增項目] 對話方塊中。 注意:如果 LocalizedName 是資源識別碼,則需要 {clsidPackage}。 |
SortPriority | 整數,表示這個範本檔或精靈的相對優先順序。 例如,如果此項目的值為 1,則此項目會以值 1 顯示在其他項目旁邊,且以排序值 2 或更大值顯示在所有項目之前。 排序優先順序相對於相同目錄中的項目。 同一個目錄中可能有一個以上的 .vsdir 檔。 在此情況下,會將來自該目錄中的所有 的專案。 vsdir 檔合併。 具有相同優先權的項目,會以不區分大小寫的顯示名稱語彙順序列出。 _wcsicmp 函式會用來排列項目。.vsdir 檔中未描述的項目包含大於 .vsdir 檔中所列最高優先順序編號的優先順序數字。 結果是,這些項目不論名稱為何,均位於顯示清單的結尾。 |
描述 | 範本檔或精靈的當地語系化描述。 此欄位可以是 "#ResID" 格式的字串或資源識別碼。 選取項目時,此字串會出現在 [新專案] 或 [新增專案] 對話方塊中。 |
DLLPath 或 {clsidPackage} | 用來載入範本檔或精靈的圖示。 圖示會透過使用 IconResourceId,以 .dll 或 .exe 檔案的資源形式載入。 可以透過使用完整路徑或使用 VSPackage 的 GUID 來識別此 .dll 或 .exe 檔。 VSPackage 的實作 DLL 是用來載入圖示 (而非附屬 DLL)。 |
IconResourceId | DLL 或 VSPackage 實作 DLL 中的資源識別碼,由其決定要顯示的圖示。 |
旗標 (__VSDIRFLAGS) | 用來停用或啟用 [新增項目] 對話方塊上的 [名稱] 和 [位置] 欄位。 [旗標] 欄位值是必要位元旗標組合的十進位對等項。 當使用者在 [新增] 索引標籤上選取項目時,專案會決定第一次顯示 [新增項目] 對話方塊時,是否顯示 [名稱] 欄位和 [位置] 欄位。 透過 .vsdir 檔的項目,只能控制選取項目時是否啟用欄位,或是停用欄位。 |
SuggestedBaseName | 表示檔案、精靈或範本的預設名稱。 此欄位是 "#ResID" 格式的字串或資源識別碼。 IDE 會使用此值來提供項目的預設名稱。 這個基底值會附加整數值,讓名稱成為唯一名稱,例如 MyFile21.asp。 在上一個清單中,Description、DLLPath、IconResourceId、Flags 和 SuggestedBaseNumber 僅適用於範本和精靈檔。 這些欄位不適用於資料夾。 此事實會說明於 <EnvSDK>\BscPrj\BscPrj\BscPrjProjectItems 登錄機碼中的程式碼。 此檔案包含三筆記錄 (每個資料夾各一筆),每筆記錄有四個欄位:RelPathName、{clsidPackage}、LocalizedName 和 SortPriority。 General|{E59935A1-6156-11d1-87A6-00A0C91E2A46}|#110|100 Source_Files|{E59935A1-6156-11d1-87A6-00A0C91E2A46}|#111|110 Env|{E59935A1-6156-11d1-87A6-00A0C91E2A46}|#112|120 |
當建立精靈檔案時,也應該考慮下列問題。
沒有任何有意義資料的任何非必要欄位,都應該包含 0 (零) 做為預留位置。
如果未提供當地語系化名稱,則會在精靈檔中使用相對路徑名稱。
DLLPath 會覆寫圖示位置的 clsidPackage。
如果未定義任何圖示,IDE 會以具有該副檔名的檔案取代預設圖示。
如果未提供建議的基底名稱,則會使用 'Project'。
如果刪除 .vsz 檔、資料夾或範本檔,也必須從 .vsdir 檔中移除其相關聯的記錄。