将代码片段作为 Visual Studio 扩展分发

可以向朋友提供代码片段,然后让他们使用代码片段管理器在自己的计算机上安装代码片段。 但是,如果你有若干代码片段要分发或者希望进行范围更广泛的分发,则可以将代码片段文件包含到 Visual Studio 扩展中。 然后,Visual Studio 用户可安装扩展,以获得这些片段。

先决条件

安装“Visual Studio 扩展开发”工作负载,以访问“VSIX 项目”项目模板

“Visual Studio 扩展开发”工作负载

设置扩展目录结构

在此过程中,将使用相同的 Hello World 代码片段,该代码片段创建自演练:创建代码片段。 本文提供了片段 XML,因此无需返回创建片段。

  1. 根据“空 VSIX 项目”模板创建一个新项目,并将该项目命名为 TestSnippet

  2. TestSnippet 项目中,添加新的 XML 文件并将其称为 VBCodeSnippet.snippet.snippet 是新的文件扩展名)。 将内容替换为以下 XML:

    <?xml version="1.0" encoding="utf-8"?>
    <CodeSnippets
        xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
      <CodeSnippet Format="1.0.0">
        <Header>
          <Title>Hello World VB</Title>
          <Shortcut>HelloWorld</Shortcut>
          <Description>Inserts code</Description>
          <Author>MSIT</Author>
          <SnippetTypes>
            <SnippetType>Expansion</SnippetType>
            <SnippetType>SurroundsWith</SnippetType>
          </SnippetTypes>
        </Header>
        <Snippet>
          <Code Language="VB">
            <![CDATA[Console.WriteLine("Hello, World!")]]>
          </Code>
        </Snippet>
      </CodeSnippet>
    </CodeSnippets>
    
  3. 在解决方案资源管理器中,选择项目节点,并添加一个文件夹,该文件夹的名称为想要代码片段在代码片段管理器中显示的名称。 在本例中,名称应为 HelloWorldVB。

  4. 将 .snippet 文件移动到 HelloWorldVB 文件夹 。

  5. 在解决方案资源管理器中选择 .snippet 文件,确保“属性”窗口中的“生成操作”设置为“内容”,“复制到输出目录”设置为“始终复制”,“包含在 VSIX 中”设置为“true”

添加 .pkgdef 文件

  1. 将文本文件添加到 HelloWorldVB 文件夹,并将其命名为 HelloWorldVB.pkgdef。 此文件用于向注册表添加某些项。 有关详细信息,请参阅查看代码段的注册表(可选)

  2. 向文件中添加以下行。

    // Visual Basic
    [$RootKey$\Languages\CodeExpansions\Basic\Paths]
    "HelloWorldVB"="$PackageFolder$"
    

    如果检查此键,可以查看如何指定 Visual Basic 以外的语言。

  3. 在解决方案资源管理器中,选择 .pkgdef 文件,并在“属性”窗口中确保

    • 将“生成操作”设置为“内容”
    • 将“复制到输出目录”设置为“始终复制”
    • 将“包含在 VSIX 中”设置为“true”
  4. 将.pkgdef 文件添加为 VSIX 清单中的资产。 在 source.extension.vsixmanifest 文件中,转到“资产”选项卡,然后单击“新建” 。

  5. 在“添加新资产”对话框中,将“类型”设置为“Microsoft.VisualStudio.VsPackage”,将“源”设置为“文件系统上的文件”,将“路径”设置为“HelloWorldVB.pkgdef”(它应显示在下拉列表中)。 选择“确定”以保存此新资产。

注册代码片段

  1. 转到“工具”>“代码片段管理器”,并将“语言”设置为“Basic”。

  2. 选择“添加...”,浏览到解决方案目录的 HelloWorldVB 文件夹,然后选择“选择文件夹”。

  3. HelloWorldVB 现在是代码片段文件夹之一。 展开文件夹以查看 HelloWorldVB 代码片段。 选择“确定”保存此新添加的文件夹。

测试代码片段

现在,可以确保代码片段在 Visual Studio 的实验实例中的工作。 实验实例是 Visual Studio 的第二份副本,它独立于用于编写代码的副本。 它可让在扩展上工作,而不会影响你的开发环境。

  1. 生成项目并启动调试。

    将出现 Visual Studio 的第二个实例。

  2. 测试代码片段。 在实验实例中,打开 Visual Basic 项目,并打开一个代码文件。 将光标置于代码中的某处,右键单击,然后在上下文菜单中选择“代码片段”和“插入片段”。

  3. 双击 HelloWorldVB 文件夹。 将会看到一个弹出窗口“<插入片段: HelloWorldVB >”,该窗口中包含下拉列表“HelloWorldVB”。 双击 HelloWorldVB 下拉列表。

    代码文件中添加了以下行:

    Console.WriteLine("Hello, World!")
    

查看代码片段的注册表(可选)

.pkgdef 文件用于向注册表添加某些项。 注册代码段后,如果需要在专用注册表配置单元中查看注册表项,可以在以下子项下找到它们:

Visual Studio 2022:HKEY_USERS\IsolatedHiveName\Software\Microsoft\VisualStudio\17.0_configID\Languages\CodeExpansions\Basic\Paths

Visual Studio 2019:HKEY_USERS\IsolatedHiveName\Software\Microsoft\VisualStudio\16.0_configID\Languages\CodeExpansions\Basic\Paths

若要查看此位置的注册表项,请先关闭 Visual Studio,打开注册表编辑器,然后将专用注册表配置单元加载到 HKEY_USERS 中。

重要

如果检查注册表,请确保在启动 Visual Studio 之前卸载专用注册表配置单元。

例如,注册表项可能如下所示。

代码片段的注册表项的屏幕截图。