片段
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 中可用。
文字和对象元素的属性
Literal 和 Object 标签可以有一些可选属性。
属性 | 描述 | 类型 |
---|---|---|
可编辑 | 指定在插入代码段后是否可以编辑文字。此属性的默认值为 true。 | 布尔 |
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 | 指定代码段是一种类型,因此必须插入类,模块或命名空间内。 |
文件 | 指定代码段是完整代码文件。这些代码段可以单独插入代码文件或命名空间内。 |
任何 | 指定可以将代码段插入任何位置。此标记用于与上下文无关的代码片段,例如注释。 |
将 Snippet 导入 Visual Studio
-
保存 XML 代码并为其指定扩展名
.snippet
。 -
你可以通过按 Control + K,Control + B 或转到 工具 → “代码片段管理器…” 将新制作的片段添加到 Visual Studio 中。这打开下一个窗口:
-
在组合框中选择你已编写代码段语言的语言。单击 “导入…” 并选择你创建的文件。
-
点击
Finish
。如果已使用文件名,Visual Studio 将要求覆盖现有文件。你有三个选择:- 覆盖: 覆盖文件。如果要编辑旧代码段,可以使用此选项。
- 重命名: 将文件重命名为唯一名称。
- 跳过: 取消导入。将文件重命名为唯一名称。
你还可以通过单击第一个窗口上的 “添加…” 按钮添加包含你创建的所有片段的新位置,然后在 选择文件夹窗口中选择该文件*夹*。现在的好处是,当在该文件夹中添加新的有效代码段时,你可以直接在 Visual Studio 中使用它。
注意: 导入代码段以确定错误后进行测试,因此在使用代码段时没有任何问题。如果出现错误,你可以随时删除或覆盖代码段。
兴趣点
你还可以在 MSDN 上查看文档以获取更多信息。