创建 .vsct 文件

有多种方法可以创建基于 XML 的 Visual Studio 命令表配置 (.vsct) 文件。

  • 可以在 Visual Studio 包模板中创建新的 VSPackage。

  • 可以使用基于 XML 的命令表配置编译器 Vsct.exe 从现有的 .wifi 文件生成文件。

  • 可以使用 Vsct.exe 从现有 .cto 文件生成 .vsct 文件。

  • 可以手动创建新的 .vsct 文件。

    本文介绍如何手动创建新的 .vsct 文件。

手动创建新的 .vsct 文件

  1. 启动 Visual Studio。

  2. “文件” 菜单上,指向 “新建” ,然后单击 “文件”

  3. “模板 ”窗格中,单击“ XML 文件 ”,然后单击“ 打开”。

  4. “视图”菜单上,单击“属性以显示 XML 文件的属性。

  5. “属性”窗口中,单击“架构”属性上的浏览”按钮。

  6. 在 XSD 架构列表中,选择 vsct.xsd 架构。 如果它不在列表中,请单击“添加,然后在本地驱动器上查找该文件。 完成后,单击确定

  7. 在 XML 文件中,键入 <CommandTable ,然后按 Tab。通过键入 >来关闭标记。

    此操作将创建一个基本的 .vsct 文件。

  8. 根据 VSCT XML 架构引用填写要添加的 XML 文件的元素。 有关详细信息,请参阅 Author .vsct 文件

从现有的 .wifi 文件创建 .vsct 文件

可以从现有命令表 .wifi 源文件创建基于 XML 的 .vsct 文件。 通过执行此操作,可以利用新的基于 XML 的 Visual Studio 命令表 (VSCT) 编译器格式。

从 .ctc 文件创建 .vsct 文件

  1. 获取 Perl 语言的副本。

  2. 获取 Perl 脚本 的副本 ConvertCTCToVSCT.pl,通常位于 <Visual Studio SDK 安装路径>\VisualStudioIntegration\Tools\bin 文件夹中。

  3. 获取要转换的 .azure 源文件的副本。

  4. 将这些文件放在同一个目录中。

  5. 在 Visual Studio 命令提示符窗口中,导航到目录。

  6. 类型

    perl.exe ConvertCTCtoVSCT.pl PkgCmd.ctc PkgCmd.vsct
    

    其中 PkgCmd.wifi 是 .wifi 文件的名称,PkgCmd.vsct 是要创建的 .vsct 文件的名称

    此操作将创建新的 .vsct XML 命令表源文件。 可以使用 Vsct.exe(VSCT 编译器)编译文件,就像使用任何其他 .vsct 文件一样。

    注意

    可以通过重新格式化 XML 注释来提高 .vsct 文件的可读性

从现有 .cto 文件创建 .vsct 文件

可以从现有的二进制 .cto 文件创建基于 XML 的 .vsct 文件。 这样既可充分利用新的命令表编译器格式。 即使 .cto 文件是从 .ct 文件中编译的,此过程也有效。 可以编辑 .vsct 文件并将其编译为另一个 .cto 文件。

从 .cto 文件创建 .Vsct 文件

  1. 获取 .cto 文件及其相应的 .ctsym 文件的副本

  2. 将文件放置在与 vsct.exe 编译器相同的目录中。

  3. 在 Visual Studio 命令提示符处,转到包含 .cto.ctsym 文件的目录。

  4. 类型

    vsct.exe <ctofilename>.cto <vsctfilename>.vsct -S<symfilename>.ctsym
    

    其中 <ctofilename> 是 .cto 文件的名称,<vsctfilename> 是要创建的 .vsct 文件的名称,而 <symfilename> 是 .ctsym 文件的名称

    此过程将创建新的 .vsct XML 命令表编译器文件。 可以使用 vsct.exe(vsct 编译器)编辑和编译文件,就像使用任何其他 .vsct 文件一样。

编译代码

只需将 .vsct 文件添加到项目就不会导致它进行编译。 必须在生成过程中合并它。

将 .vsct 文件添加到项目编译

  1. 在编辑器中打开项目文件。 如果加载项目,必须先卸载该项目。

  2. 添加包含VSCTCompile元素的 ItemGroup 元素,如以下示例所示。

    <ItemGroup>
      <VSCTCompile Include="TopLevelMenu.vsct">
        <ResourceName>Menus.ctmenu</ResourceName>
      </VSCTCompile>
    </ItemGroup>
    
    

    元素 ResourceName 应始终设置为 Menus.ctmenu

  3. 如果项目包含 .resx 文件,请添加 EmbeddedResource 包含 MergeWithCTO 元素的元素,如以下示例所示:

    <EmbeddedResource Include="VSPackage.resx">
      <MergeWithCTO>true</MergeWithCTO>
      <ManifestResourceName>VSPackage</ManifestResourceName>
    </EmbeddedResource>
    
    

    此标记应位于包含嵌入资源的元素内 ItemGroup

  4. 在编辑器中打开通常名为 <ProjectName>Package.cs 或< ProjectName>Package.vb 的包文件。

  5. ProvideMenuResource将属性添加到包类,如以下示例所示。

    [ProvideMenuResource("Menus.ctmenu", 1)]
    

    第一个参数值必须与在项目文件中定义的属性的值 ResourceName 匹配。