VS自定義代碼塊Code Snippet
一 、簡述
我們在開發當中,避免不了一些重復的開發工作,在你漫長的開發以及學習當中,你會發現有這麽一部分代碼是你時常會使用到的。我想這個工具也是針對這個原因出來的吧,它就是預先把你需要的這部分代碼的主幹部分給它提練出來,然後你只要修改局部的某些部分內容,從而完成你代碼的編輯工作。這樣的好處,就是當你使用一個快捷鍵的方式,就可以把你這部分常用的代碼直接插入到你需要的代碼文件當中。而不需要你由頭到尾地重復一些額外的工作,縮短你的開發時間,提高你的工作效率。這就是今天要說到的Code Snippet
二 、Code Snippet介紹
一個 CodeSnippet 則主要包含 <Header> 和 <Snippet> 兩部分。一個 <CodeSnippets> 元素可以包含多個不同的 <CodeSnippet> 。其中 <Header> 部分主要是對這個 Snippet 的一個聲明,包括 Snippet 的名稱、描述、作者及 Snippet 的類型。
1.Header
<Title>表示此代碼段標題
<Shortcut>設置快捷鍵
<Description>對代碼段的描述
<SnippetTypes>可以包含多個<SnippetType>其取值有三種Expansion、SurroundsWith、Refactoring 。Expansion允許代碼插入在光標處;SurroundsWith允許代碼圍繞在選中代碼兩邊;Refactoring指定了C#重構過程中所使用的Snippet,在自定義Snippet中不能使用。如果該值不做設置,則Snippet可以放在任何地方。
<Snippet>節點是實現代碼管理的地方,其包含四個子節點<Code><Declarations><Imports><References>
2.Snippet
<Code>
包含<![CDATA[]]>中,放置模版代碼,此節點設置Language(C# VB XML),Kind(類型:如方法體,方法聲明),Delimiter(分隔符,默認值是$)
private $type$ $field$;
public $type$ $property$
{
get { return $field$;}
set { $field$ = value;}
}
為定義的模板代碼,type,field,property為定義的變量,變量在Declarations的Literal中聲明。
$end$為當按enter鍵後光標的默認位置
<Declarations>
包含多個<Literal>和<Object>節點,<Literal>用於設定變量值<Object>用於聲明模版對象。
這裏只說明Literal
ID 默認屬性名稱
ToolTip 屬性說明
Default 默認類型
<Imports>
引入命名空間,只支持vb . - -#.
<References>
添加程序集引用,只支持vb . - -#.
三 、Code Snippet簡單使用
首先可以在 工具 >> 代碼片段管理器 中找到系統定義的snippet代碼片段。如for,if等,可以看到對應語言和存儲位置。
下面以propfull自動屬性為例講解:
創建文件propfull.snippet,實質為xml文件
<?xml version="1.0" encoding="utf-8"?> <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title>propfull</Title> <Shortcut>propfull</Shortcut> <Description>屬性和支持字段的代碼片段</Description> <Author>Microsoft Corporation</Author> <SnippetTypes> <SnippetType>Expansion</SnippetType> </SnippetTypes> </Header> <Snippet> <Declarations> <Literal> <ID>type</ID> <ToolTip>屬性類型</ToolTip> <Default>int</Default> </Literal> <Literal> <ID>property</ID> <ToolTip>屬性名</ToolTip> <Default>MyProperty</Default> </Literal> <Literal> <ID>field</ID> <ToolTip>支持此屬性的變量</ToolTip> <Default>myVar</Default> </Literal> </Declarations> <Code Language="csharp"><![CDATA[private $type$ $field$; public $type$ $property$ { get { return $field$;} set { $field$ = value;} } $end$]]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>
定義好放在C#對於路徑下,然後就可以在VS中敲入propfull,就會實現以下輸出
private int myVar; public int MyProperty { get { return myVar; } set { myVar = value; } }
VS自定義代碼塊Code Snippet