那么我们是不是可以自定义一个Code Snippet用来作Code Expansion呢?经过试验,答案是肯定的!下面我们来看一下怎么完成这个工作。
首先,每个Code Snippet都对应了一个XML文件。在Code Snippets Manager中,我们可以看到这些XML的存放地点。如图:

打开这个XML文件,可以看到如下的内容:







































我来解释一下其中主要的标签的作用:

定义了用来扩展的缩写是prop




定义了这个Snippet是用来作Code Expansion的。SnippetType的可能的取值还有

你猜得没错这个就是用来设置Intellisense中的Surround With的功能的。一个Snippet可以同时拥有这两个类型。
<Declarations>标签中定义了扩展之后,需要用户填写的部分。每个<Literal>标签定义一个变量。<Default>定义了默认的取值。
最重要的就是<Code>中的内容了,这个就是扩展后的样子了。
下面我写了一个用来自动扩展出一个NUnit的TestFixture的Code Snippet。




























注意在这里,我在<Code>中使用了$end$这个预设的变量,这个变量表明了在输入完所有的Literal之后,光标将停留的位置。
写完了之后,将这个XML文件保存到一个新建的目录。然后在Code Snippets Manager中,加入这个目录,然后就可以在IDE中使用这个Code Snippet了。
现在,按下tstFix之后按Tab键,就会自动生成一个带有[TestFixture]属性的类了。
大家还可以按照这个方法去试一下Surround With的功能。