在托管 Vspackage 的资源

Visual Studio SDK 可使托管资源模型的结束本机附属 (UI)用户界面 DLL 纪元可用于 VSPackage 创作。 可以将本地化资源嵌入到本机 UI 附属 DLL,托管附属 DLL,或者在托管 VSPackage。

某些资源不能在 Vspackage 中。 可以嵌入到以下托管类型:

  • 字符串

  • 包还为字符串) 的打入键 (

  • 工具窗口图标

  • 生成命令表 (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 遇到具有相同的资源 ID 的两个或多个资源,找到以使用第一个资源。

示例

下面的示例是工具窗口图标的托管表示。

<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>

下面的示例演示如何将 CTO 字节数组,必须命名 CTMENU。

<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 尽可能。 嵌入 CTO 文件的结果在 VSPackage 是在安装过程中, Visual Studio 内存中必须加载所有此类 Vspackage,是它生成一个合并的命令表。 资源可以从 VSPackage 中提取通过检查元数据,而不运行在 VSPackage 中的代码。 VSPackage 目前没有初始化,因此,性能降低非常小。

当 Visual Studio 在安装后进行请求从 VSPackage 的资源,该包可能已经加载并初始化,因此,性能降低非常小。

请参见

概念

加载 Vspackage

MFC 应用程序中的本地化资源:附属 DLL

其他资源

托管 Vspackage

托管 Vspackage