1. 程式人生 > >VS自定義程式碼塊Code Snippet

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; }
        }