在 Visual Studio 中创建代码片段

代码片段是预编写的代码段,可以随时将这些代码段插入到应用程序中。 可以通过使用代码片段来减少键入重复代码或搜索示例所用的时间,从而提高工作效率和可靠性。

可以创建自己的代码片段,并将其添加到 Visual Studio 已包含的代码片段中。 本文演示了如何通过几个步骤创建代码片段的过程。 只需创建一个 XML 文件,填写适当的元素,然后将代码添加到文件中即可。 此外还可以使用替换参数和项目引用。 然后将代码片段导入 Visual Studio 安装。

创建代码片段

1、打开 Visual Studio,然后选择“开始”屏幕中的“继续但无需代码”

1.jpg

2、在菜单栏中,选择“文件”>“新建文件”,或按 Ctrl+N

3、在“新建文件”对话框中选择“XML 文件”,然后选择“打开”

2.jpg

4、将以下基础代码片段模板粘贴到代码编辑器中。

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title></Title>
        </Header>
        <Snippet>
            <Code Language="">
                <![CDATA[]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

5、在代码片段的 Title 元素中输入标题 Square Root

6、在 Code 元素的“语言”属性中,对于 C# 代码片段请填写的 CSharp,对于 Visual Basic 请填写 VB

7、将以下代码片段添加到 Code 元素的 CDATA 部分。

对于 C#:

<![CDATA[double root = Math.Sqrt(16);]]>

对于 Visual Basic:

<![CDATA[Dim root = Math.Sqrt(16)]]>

无法指定如何对代码片段 CDATA 部分中的代码行进行格式设置或缩进。 插入后,语言服务将自动设置所插入代码的格式。

8、在任意位置将代码片段保存为 SquareRoot.snippet

导入代码片段

1、要将代码片段导入 Visual Studio 安装,请选择“工具”>“代码片段管理器”或按 Ctrl+K、B

2、在“代码片段管理器”中,选择“导入”按钮。

3、导航到代码片段所在位置,选择该代码片段,然后选择“打开”

4、在“导入代码片段”对话框中,选择右窗格中的“My Code Snippets”文件夹。 选择完成,然后选择确定

代码片段会复制到以下某一位置,具体取决于代码语言:

%USERPROFILE%\Documents\Visual Studio 2022\Code Snippets\Visual C#\My Code Snippets
%USERPROFILE%\Documents\Visual Studio 2022\Code Snippets\Visual Basic\My Code Snippets

5、通过打开 C# 或 Visual Basic 项目来测试代码片段。 在编辑器中打开代码文件后,执行以下操作之一:

在 Visual Studio 菜单栏上,选择“编辑”>“IntelliSense”>“插入片段”。

右键单击,然后从关联菜单中选择“片段”>“插入片段”。

在键盘上按 Ctrl+K、X。

6、打开“My Code Snippets”文件夹,然后双击名为 Square Root 的代码片段。 该代码片段代码已插入代码文件中。

“说明”和“快捷方式”字段

在“代码片段管理器”中查看“说明”字段时,可以获得有关代码片段的详细信息。 快捷方式是为了插入代码片段而键入的标记。

1、要编辑代码片段,请根据代码语言从以下位置之一打开代码片段文件:

%USERPROFILE%\Documents\Visual Studio 2022\Code Snippets\Visual C#\My Code Snippets/SquareRoot.snippet
%USERPROFILE%\Documents\Visual Studio 2022\Code Snippets\Visual Basic\My Code Snippets/SquareRoot.snippet
由于要编辑在其中放置 Visual Studio 的目录中的文件,因此无需重新将其导入到 Visual Studio。

2、将 AuthorDescription 和 Shortcut 元素添加到 Header 元素中,然后相应填充。

3、确认 Header 元素看起来类似于以下示例,然后保存文件。

<Header>
    <Title>Square Root</Title>
    <Author>Myself</Author>
    <Description>Calculates the square root of 16.</Description>
    <Shortcut>sqrt</Shortcut>
</Header>


4、打开 Visual Studio Code“代码片段管理器”并选中你的代码片段。 在右窗格中,注意“说明”、“创建者”和“快捷方式”字段现在已填充。

3.jpg

5、要测试快捷方式,请打开之前使用的项目,在编辑器中键入 sqrt 并按 Tab(Visual Basic 按一次,C# 按两次)。 代码片段代码已插入。

替换参数

你可能希望用户替换代码片段的一部分。 例如,可能希望用户将变量名称替换为其当前项目中的某个名称。

可以提供两种类型的替换:文本和对象。

使用串元素来标识整体包含在代码片段中的代码替换对象,可在插入到代码中后进行自定义。 例如,字符串或数值。

使用对象元素标识代码片段需要、但可能是在代码片段外部定义的项。 例如,对象实例或控件。

可以使用 SquareRoot.snippet 文件中的 Literal 元素来帮助用户轻松更改数字以计算其平方根。

1、修改 SquareRoot.snippet 文件中的 Snippet 元素,如下所示:

<Snippet>
  <Code Language="CSharp">
    <![CDATA[double root = Math.Sqrt($Number$);]]>
  </Code>
  <Declarations>
    <Literal>
      <ID>Number</ID>
      <ToolTip>Enter the number you want the square root of.</ToolTip>
      <Default>16</Default>
    </Literal>
  </Declarations>
</Snippet>

请注意,串替换将会获得一个 ID (Number)。 将该 ID 用 $ 字符括起来,从而在代码片段中引用,如下所示:

<![CDATA[double root = Math.Sqrt($Number$);]]>

2、保存片段文件。

3、打开项目,并插入片段。

已插入代码片段,并且突出显示要替换的可编辑文本。 将鼠标悬停在替换参数上,以查看该值的工具提示。

4.jpg

如果片段中有多个可替换的参数,可按 Tab,从一个参数导航到另一个参数,以更改值。

导入命名空间

可通过包含 Imports 元素,使用代码片段添加 using 指令 (C#) 或 Imports 语句 (Visual Basic)。 对于 .NET Framework 项目,还可以通过使用 References 元素将引用添加到项目。

以下 XML 显示在 System.IO 命名空间中使用 File.Exists 方法的代码片段,因此可定义 Imports 元素,以导入 System.IO 命名空间。

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>File Exists</Title>
      <Shortcut>exists</Shortcut>
    </Header>
    <Snippet>
      <Code Language="CSharp">
        <![CDATA[var exists = File.Exists("C:\\Temp\\Notes.txt");]]>
      </Code>
      <Imports>
        <Import>
          <Namespace>System.IO</Namespace>
        </Import>
      </Imports>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>