片段

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 中可用。

源表: msdn.microsoft.com

文字和物件元素的屬性

Literal 和 Object 標籤可以有一些可選屬性。

屬性 描述 型別
可編輯 指定在插入程式碼段後是否可以編輯文字。此屬性的預設值為 true。 布林

源表: msdn.microsoft.com

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 指定程式碼段是一種型別,因此必須插入類,模組或名稱空間內。
檔案 指定程式碼段是完整程式碼檔案。這些程式碼段可以單獨插入程式碼檔案或名稱空間內。
任何 指定可以將程式碼段插入任何位置。此標記用於與上下文無關的程式碼片段,例如註釋。

源表: msdn.microsoft.com

將 Snippet 匯入 Visual Studio

  1. 儲存 XML 程式碼併為其指定副檔名 .snippet

  2. 你可以通過按 Control + K,Control + B 或轉到 工具“程式碼片段管理器…” 將新制作的片段新增到 Visual Studio 中。這開啟下一個視窗:

    StackOverflow 文件

  3. 在組合框中選擇你已編寫程式碼段語言的語言。單擊 “匯入…” 並選擇你建立的檔案。

    StackOverflow 文件

  4. 點選 Finish。如果已使用檔名,Visual Studio 將要求覆蓋現有檔案。你有三個選擇:

    • 覆蓋: 覆蓋檔案。如果要編輯舊程式碼段,可以使用此選項。
    • 重新命名: 將檔案重新命名為唯一名稱。
    • 跳過: 取消匯入。將檔案重新命名為唯一名稱。

你還可以通過單擊第一個視窗上的 “新增…” 按鈕新增包含你建立的所有片段的新位置,然後在 選擇資料夾視窗選擇該檔案*夾*。現在的好處是,當在該資料夾中新增新的有效程式碼段時,你可以直接在 Visual Studio 中使用它。

注意: 匯入程式碼段以確定錯誤後進行測試,因此在使用程式碼段時沒有任何問題。如果出現錯誤,你可以隨時刪除或覆蓋程式碼段。

興趣點

你還可以在 MSDN 上檢視文件以獲取更多資訊。