共用方式為


受管理的 VSPackages 中的資源

Visual Studio SDK設計用來結束之原生的附屬使用者介面 (UI) 的 Dll,只要可以 VSPackage 所撰寫的受管理的資源。 在原生附屬 UI 的 Dll,受管理的附屬 Dll,或受管理的 VSPackage 本身中,您可以內嵌當地語系化的資源。

有些資源無法內嵌在 VSPackages 中。 下列的 managed 型別可以內嵌:

  • 字串

  • 套件載入金鑰 (這也是字串)

  • 工具視窗圖示

  • 編譯過的指令表格輸出 (cto 能夠) 檔

  • Cto 能夠點陣圖

  • 命令列說明

  • 關於對話方塊資料

受管理的套件中的資源被選取的資源 id。 例外狀況是 cto 能夠檔,它必須命名為 CTMENU。 Cto 能夠檔案必須出現在 [資源] 表格,做為byte[]。 所有其他的資源項目會識別型別。

您可以使用PackageRegistrationAttribute屬性來向Visual Studio受管理的資源可供使用。

<PackageRegistration(UseManagedResourcesOnly:=True)>
Public NotInheritable Class MyPackage
    Inherits Package
[PackageRegistration(UseManagedResourcesOnly = true)]
public sealed class MyPackage : Package

設定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不論何時儘可能 VSPackages 的延遲載入。 Cto 能夠檔案嵌入 VSPackage 的結果是Visual Studio必須在安裝期間,它會建置合併的指令資料表時才會載入記憶體中的所有這類 VSPackages。 資源可以從 VSPackage 中擷取,藉由檢查中繼資料,而不會發生在 VSPackage 中的程式碼。 VSPackage 未初始化在這個階段中,因此效能損失降到最低。

當Visual Studio VSPackage,以在安裝之後從資源的要求,該套件很可能已經載入並初始化,所以效能損失降到最低。

請參閱

概念

正在載入 VSPackages

MFC 應用程式中的當地語系化資源:附屬 DLL

其他資源

受管理的 VSPackages

受管理的 VSPackages