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