片段

Intoduction

因为 Visual Studio 2005 可以制作智能感知代码片段。这允许你只需键入一个关键字并按两次 tab 键即可生成一些代码。

使用代码

制作 Intellisense Code Snippet 所需的 XML 代码如下:

<?xml version="1.0" encoding="utf-8"?>

<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/CodeSnippet">
  <CodeSnippet Format="1.0.0"> <!-- format attribute is required -->

    <Header> <!-- 1 -->
      <Title></Title>
      <Author></Author>
      <Shortcut></Shortcut>
      <Description></Description>
      <Keywords>
        <Keyword>abc<Keyword>
        <Keyword>def<Keyword>
      </keywords>
    </Header>

    <Snippet> <!-- 2 -->

      <Imports> <!-- 2.1 -->
        <Import>
          <Namespace>System</Namespace>
        </Import>
      </Imports>

      <Declarations> <!-- 2.2 -->
        <Literal Editable="true/false"> <!-- 2.2.1 -->
          <ID>example</ID>
          <Type>System.String</Type>
          <ToolTip>A tip you can show</ToolTip>
          <Default>default value</Default>
          <Function></Function> <!-- 2.2.2 -->
        </Literal>

        <Object> <!-- 2.2.1 -->
          <ID>example</ID>
          <Type>System.String</Type>
          <ToolTip>A tip you can show</ToolTip>
          <Default>default value</Default>
          <Function></Function> <!-- 2.2.2 -->
        </Object>
      </Declarations>

      <References> <!-- 2.3 -->
        <Reference>
          <Assembly>System.Data.dll</Assembly>
        </Reference>
      </References>

      <Code Language=""> <!-- 2.4 -->
        <![CDATA[
            <!-- your code here if you use literals use dollar chars  -->
        ]]>
      </Code>

    </Snippet>

  </CodeSnippet>
</CodeSnippets>

在代码段标记中,你有两个名为 Header 和 Snippet 的必需标记。你可以在下一个标题中找到更多信息。名称附近的数字是与上面代码中的数字相对应的通讯员。

可以在 CodeSnippets 元素中添加零个或多个 CodeSnippet 元素。

1.标题

在 Header-tag 中,你可以放置​​一些关于代码段的具体信息以及他的工作内容。你可以在此标记内使用的重要标记是:

源表(但编辑): msdn.microsoft.com

2.片段

在代码段标记中,你可以使用三种不同的代码。这可以是:

  • 导入
  • 声明
  • 代码(必填)
  • 参考

这些解释如下。

2.1 导入

Imports 包含代码所需的命名空间。使用此标记内的 import-tag,你可以在此处使用 Namespace-tag 放置所需的命名空间。

2.2 声明

Declarations 可用于在 Code-tag 中将一些文字或对象声明为代码。孩子是文字和物品。

2.2.1 文字和对象

文字和对象定义了你可以编辑的代码段的文字和对象。功能是文字和对象是相同的,但它有一个额外的类型约束。

Literal 和 object-tag 可以包含下一个子项:

  • ID 文字的 ID(必填)
  • Type 该对象的类型,包括命名空间和类(对象需要)
  • ToolTip 给出一个提示
  • Default 该对象的默认值(必填)
  • Functions

在片段中,有一些预定义的文字。它们列在下面:

2.2.2 功能

Literal 或 Object-tag 中的函数意味着你可以使用函数根据另一个元素生成代码。我知道有三个功能:

功能 描述 语言
GenerateSwitchCases (EnumerationLiteral) 为 EnumerationLiteral 参数指定的枚举成员生成 switch 语句和一组 case 语句。EnumerationLiteral 参数必须是对枚举文字的引用或枚举类型。 Visual C#和 Visual J# 1
ClassName() 返回包含插入的代码段的类的名称。 Visual C#和 Visual J# 1
SimpleTypeName(TypeName) 在调用代码段的上下文中将 TypeName 参数减少为最简单的形式。 Visual C#

1 仅在 Visual Studio 2005 中可用。

源表: msdn.microsoft.com

文字和对象元素的属性

Literal 和 Object 标签可以有一些可选属性。

属性 描述 类型
可编辑 指定在插入代码段后是否可以编辑文字。此属性的默认值为 true。 布尔

源表: msdn.microsoft.com

2.3 参考文献

组引用元素,其中包含有关代码段的程序集引用的信息。这可以包含下一个元素:

  • 程序集: 包含代码段的程序集名称(必需)
  • Url: 包含一个网站,提供有关程序集的更多信息

2.4 代码

代码是你将在 <![CDATA[]]> 之间生成的代码。将文字的 ID 放在美元字符之间,如果填写了声明,Visual Studio 将要求你更改这些默认值。这里,你有一个 C#和 VB 的示例,用于快捷方式 propfull。

<!-- ... Other code ... -->
<Declarations>
  <Literal>
    <Id>variablename</Id>
    <Default>_myproperty</Default>
  </Literal>

  <Literal>
    <Id>propertytype</Id>
    <Default>int</Default>
  </Literal>

  <Literal>
    <Id>propertyname</Id>
    <Default>myproperty</Default>
  </Literal>
</Declarations>

<Code Language="CSharp">
  <![CDATA[
    private $propertyvalue$ $variablename$;

    public $propertyvalue$ $propertyname$
    {
        get { return $variablename$; }
        set { $Variablename$ = Value; }
    }
  ]]>
</Code>

<!-- ... Other code ... -->

<Declarations>
  <Literal>
    <Id>variablename</Id>
    <Default>_myproperty</Default>
  </Literal>

  <Literal>
    <Id>propertytype</Id>
    <Default>int</Default>
  </Literal>

  <Literal>
    <Id>propertyname</Id>
    <Default>myproperty</Default>
  </Literal> 
</Declarations>

<Code Language="VB">
  <![CDATA[
    Private $variablename$ As $propertyvalue$ 
    
    Public Property $propertyname$ As $propertyvalue$
        Get
            Return $variablename$ 
        End Get

        Set (ByVal value As $propertyvalue$)
            $variablename$ = value
        End Set
    End Property
  ]]>
</Code>

<!-- ... Other code ... -->

在所需的语言属性中,你可以定义制作代码段的语言。你可以在下表中找到可以使用的语言。

语言 关键词 适用于下一版本
Visual C# CSHARP 2005 年,2010 年,2012 年及以后
Visual Basic VB 2005 年,2010 年,2012 年及以后
XML XML 2005 年,2010 年,2012 年及以后
Visual J# VJSharp 2005 年,2012 年及以后
C++ CPP 2012 年及以后
JavaScript JavaScript 的 2012 年及以后
JScript 中 JScript 中 2012 年及以后
SQL SQL 2012 年及以后
HTML HTML 2012 年及以后
CSS CSS 2012 年及以后
XAML XAML 2012 年及以后

其他可选属性是:

属性 描述
分隔符 指定用于描述代码中的文字和对象的分隔符。默认情况下,分隔符为 $
指定代码段包含的代码类型,以及必须插入代码段以便编译代码段的位置。

kind 变量的有效值为:

描述
方法体 指定代码段是方法体,因此必须插入方法声明中。
方法 decl 指定代码段是一种方法,因此必须插入到类或模块中。
键入 decl 指定代码段是一种类型,因此必须插入类,模块或命名空间内。
文件 指定代码段是完整代码文件。这些代码段可以单独插入代码文件或命名空间内。
任何 指定可以将代码段插入任何位置。此标记用于与上下文无关的代码片段,例如注释。

源表: msdn.microsoft.com

将 Snippet 导入 Visual Studio

  1. 保存 XML 代码并为其指定扩展名 .snippet

  2. 你可以通过按 Control + K,Control + B 或转到 工具“代码片段管理器…” 将新制作的片段添加到 Visual Studio 中。这打开下一个窗口:

    StackOverflow 文档

  3. 在组合框中选择你已编写代码段语言的语言。单击 “导入…” 并选择你创建的文件。

    StackOverflow 文档

  4. 点击 Finish。如果已使用文件名,Visual Studio 将要求覆盖现有文件。你有三个选择:

    • 覆盖: 覆盖文件。如果要编辑旧代码段,可以使用此选项。
    • 重命名: 将文件重命名为唯一名称。
    • 跳过: 取消导入。将文件重命名为唯一名称。

你还可以通过单击第一个窗口上的 “添加…” 按钮添加包含你创建的所有片段的新位置,然后在 选择文件夹窗口选择该文件*夹*。现在的好处是,当在该文件夹中添加新的有效代码段时,你可以直接在 Visual Studio 中使用它。

注意: 导入代码段以确定错误后进行测试,因此在使用代码段时没有任何问题。如果出现错误,你可以随时删除或覆盖代码段。

兴趣点

你还可以在 MSDN 上查看文档以获取更多信息。