片段
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 上檢視文件以獲取更多資訊。