VSPackage 中的資源
您可以將當地語系化資源內嵌在原生附屬 UI DLL、受控附屬 DLL 或受控 VSPackage 本身。
某些資源無法內嵌在 VSPackage 中。 下列受控類型可以內嵌:
字串
封裝載入機碼 (也是字串)
工具視窗圖示
編譯的命令資料表輸出 (CTO) 檔案
CTO 點陣圖
命令列說明
關於對話方塊資料
受控套件中的資源會依資源識別碼選取的。 CTO 檔案是一個例外,它必須命名為 CTMENU。 CTO 檔案必須以 byte[]
的形式出現在資源資料表中。 所有其他資源項目都會依類型來識別。
您可以使用 PackageRegistrationAttribute 屬性向 Visual Studio 指出受控資源可供使用。
以這種方式設定 PackageRegistrationAttribute 指示 Visual Studio 在搜尋資源時,應該忽略非受控附屬 DLL,例如:使用 LoadPackageString。 如果 Visual Studio 遇到兩個以上具有相同資源識別碼的資源,它會使用它找到的第一個資源。
範例
下列範例是工具視窗圖示的受控表示。
<data name="1001"
type="System.Resources.ResXFileRef,System.Windows.Forms">
<value>
MyToolWinIcon.bmp;
System.Drawing.Bitmap,
System.Drawing,
Version=1.0.0.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a
</value>
</data>
下列範例示範如何內嵌必須命名為 CTMENU 的 CTO 位元組陣列。
<data name="CTMENU"
type="System.Resources.ResXFileRef,System.Windows.Forms">
<value>
MyPackage.cto;
System.Byte[],
mscorlib,
Version=1.0.0.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a
</value>
</data>
實作注意事項
Visual Studio 會盡可能延遲載入 VSPackage。 在 VSPackage 中內嵌 CTO 檔案的結果就是 Visual Studio 必須在安裝程式期間 (也就是建置合併的命令資料表時) 將這類 VSPackage 載入記憶體中。 可以透過檢查中繼資料從 VSPackage 中擷取資源,而無需執行 VSPackage 中的程式碼。 VSPackage 目前尚未初始化,因此效能損失最少。
當 Visual Studio 在安裝之後向 VSPackage 要求資源時,該套件可能已經載入並初始化,因此效能損失最少。