vs中有代码段功能,能够提高生产力,下面简单介绍一下。
以下内容来自于http://www.cnblogs.com/actberw/archive/2010/04/09/1708395.html。
一、理解code snippet的角色
在vs2005中及visual C# express版本中都支持一种技术,被称为code snippet,这项技术是下面两种相关代码生成技术的基础:
- 扩展模板(expansion template)(中文vs里翻译为代码段)
- 围绕
总之,code snippet技术存在的唯一原因--开发人员的生产力。扩展模板和围绕使开发者可以快速的使用下面的任何途径产生代码块。
- IDE的编辑->只能感应菜单
- 快捷键
- 鼠标右键
- 输入一个已注册的snippet的shortcut
二、简单的实例
1)代码段示例
为了说明expansion temlpate的作用,假设你已经创建了一个c#类(佳作SportsCar),而且希望快速的给它添加一个属性,除了可以手动输入以外,你可以使用上面提到的方式激活property扩展(Expansion),如IDE的编辑->智能感应->插入代码段即可,在选择列表中选择property(vs2008里是pro),如下图:
可以双击,或者按两下tab键,一旦激活就会产生如下代码(vs2005会产生一个私有字段)
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
public int MyProperty { get; set; }
如下图:
黄色的部分(vs2008中颜色不一样)可以编辑属性名称(可以通过tab键来在高亮字段键跳转)
2)围绕示例
为了说明,假设你有代码段想把它放到#region/#endregion指令当中,首先选中代码段,右击选择插入代码段
在弹出的列表中选择#region,编辑region,name
三、Code Snippet文件的位置
在下面的位置中你可以找到大量的内置的Code Snippet文件,vs2005中是以.xml结尾,vs2008中是以.snippet结尾
<drive>:\Program Files\Microsoft Visual Studio8\VC#\Expansions\1033\Expansions
<drive>:\Program Files\Microsoft Visual Studio9.0\VC#\Snippets\1033\Visula c#
vs2010路径:
<drive>::\Program Files\Microsoft Visual Studio 10.0\VC#\Snippets\2052\Visual C#
四、Code Snippet文件的结构
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippet Format="1.0.0">
<Header>
<Title>class</Title>
<Shortcut>class</Shortcut>
<Description>Expansion snippet for class</Description>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal default="true">
<ID>name</ID>
<ToolTip>Class name</ToolTip>
<Default>MyClass</Default>
</Literal>
</Declarations>
<Code Language="csharp" Format="CData">
<![CDATA[class $name$
{
$selected$$end$
}]]>
</Code>
</Snippet>
</CodeSnippet>
包含一个名为CodeSnippet的根节点,和两个子节点:Header,Snippet,(vs2008中在CodeSnippet外有CodeSnippets节点)
<Header>节点及子节点
header节点用来描述code snappet的节本属性,包括如下子节点 :
<Header>子元素 | 定义 |
<Title> | 显示标题 |
<Shortcut> | 为代码段定义的快捷方式。 在IDE中,输入快捷方式名称然后通过tab键选择下面的代码段,如果你输入部分快捷方式 名称(例如“cla”而不是“class”),你将需要按两次tab键;一次完成名称扩展,另外 一次插入代码段 |
<Description> | 一个人类可读的描述关于代码段的,当从IDE中选中后显示的内容 |
<SnippetType> | 指定代码段所属的类别(扩展,围绕,或重构)。注意,一个代码段可能属于多个组。 微软IDE根据这个值决定使用哪个显示代码段的上下文菜单 |
<Snippet>节点及子节点
snippet节点主要用来定义两部分内容:
a.变量,就是插入时高亮的部分
b.代码骨架
包含的子节点有两个如下literal,code:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
<Declarations>
<Literal default="true">
<ID>name</ID>
<ToolTip>Class name</ToolTip>
<Default>MyClass</Default>
</Literal>
</Declarations>
<Code Language="csharp" Format="CData">
<![CDATA[class $name$
{
$selected$$end$
}]]>
</Code>
Literal节点包括如下子节点 :
<Literal>的子节点 | 定义 |
<ID> | 变量的表示 |
<ToolTip> | 鼠标移动到上面的提示信息 |
<Default> | 变量的默认值 |
<Code>节点
code用来定义要插入的代码,在上面的<Snippet>节点中可以看到有一部分用$$包围着,这语法是用来引用上面<Literal>的<ID>节点定义的变量(注意名称的一致)
关于$selected$ $end$
$selected$是在插入代码段(围绕)时vs用来替换你选中的内容,$end$是插入完成后鼠标停留的位置
五、注册自定义的code snippet
两种方式:
最简单的直接把文件复制到<drive>:\Program Files\Microsoft Visual Studio8\VC#\Expansions\1033\Expansions下(vs2008和vs2010路径见上面),第二种 通过菜单Tools|Code Snippet Manager再弹出菜单中添加即可。