您可以使用代碼段來減少輸入重複程式碼或搜尋範例所花費的時間,以提高生產力和可靠性。 代碼段是預先授權的程式代碼片段,可供插入您的應用程式。
您可以建立自己的代碼段,並將其新增至 Visual Studio 已包含的代碼段。 本文會逐步解說如何在幾個步驟中建立代碼段。 您可以建立 XML 檔案、填入適當的元素,並將程式代碼新增至檔案。 您可以選擇性地使用取代參數和項目參考。 然後,您會將代碼段匯入 Visual Studio 安裝。
建立程式碼段
開啟 Visual Studio,然後在 Start 畫面上選取 繼續而不載入程式碼。
從功能表欄選取 [ 檔案>新檔案],或輸入 Ctrl+N。
在 [ 新增檔案 ] 對話框中,選取 [XML 檔案],然後選取 [ 開啟]。
將下列基本代碼段範本貼到程式碼編輯器中。
<?xml version="1.0" encoding="utf-8"?> <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title></Title> </Header> <Snippet> <Code Language=""> <![CDATA[]]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>請將標題 平方根 放入代碼段
Title元素中。在
Language項目的 屬性Code中,填入 C# 代碼段的 CSharp 或 Visual Basic 的 VB 。將下列代碼片段新增至
Code元素內的CDATA區段。針對 C#:
<![CDATA[double root = Math.Sqrt(16);]]>針對 Visual Basic:
<![CDATA[Dim root = Math.Sqrt(16)]]>備註
您無法指定如何在代碼段的程式代碼區段
CDATA中格式化或縮排行。 插入時,語言服務會自動格式化插入的程序代碼。將代碼段隨處儲存為 SquareRoot.snippet。
匯入代碼段
若要將代碼段匯入 Visual Studio 安裝,請選取 [工具>代碼段管理員 ],或按 Ctrl+K、 B。
在 [代碼段管理員] 中,選取 [ 匯 入] 按鈕。
流覽至代碼段的位置,選取它,然後選取 [ 開啟]。
在 [ 匯入代碼段] 對話框中,選取右窗格中的 [我的代碼段 ] 資料夾。 選取結束,然後選取 OK。
代碼段會根據程式代碼語言複製到下列其中一個位置:
- %USERPROFILE%\Documents\Visual Studio 2022\Code Snippets\Visual C#\My Code Snippets
- %USERPROFILE%\Documents\Visual Studio 2022\Code Snippets\Visual Basic\My Code Snippets
- %USERPROFILE%\Documents\Visual Studio 2019\Code Snippets\Visual C#\My Code Snippets
- %USERPROFILE%\Documents\Visual Studio 2019\Code Snippets\Visual Basic\My Code Snippets
開啟 C# 或 Visual Basic 項目來測試您的代碼段。 在編輯器中開啟程式代碼檔案時,請採取下列其中一個動作:
- 在 Visual Studio 選單欄上,選擇 [編輯>IntelliSense>插入代碼段]。
- 按下滑鼠右鍵,然後從快捷功能表中選擇 代碼段>插入代碼段。
- 從鍵盤按 Ctrl+K、 X。
開啟 [我的代碼段],然後按兩下名為 Square Root 的代碼段。 程式碼片段會插入程式碼檔案中。
描述和快捷方式欄位
在 [ 代碼段管理員] 中檢視時,描述欄位會提供代碼段的詳細資訊。 快捷鍵是您可以輸入以插入代碼段的標籤。
若要編輯您的代碼段,請根據程式碼語言,從下列其中一個位置開啟代碼段檔案:
- %USERPROFILE%\Documents\Visual Studio 2022\Code Snippets\Visual C#\My Code Snippets/SquareRoot.snippet
- %USERPROFILE%\Documents\Visual Studio 2022\Code Snippets\Visual Basic\My Code Snippets/SquareRoot.snippet
- %USERPROFILE%\Documents\Visual Studio 2019\Code Snippets\Visual C#\My Code Snippets/SquareRoot.snippet
- %USERPROFILE%\Documents\Visual Studio 2019\Code Snippets\Visual Basic\My Code Snippets/SquareRoot.snippet
小提示
因為您要在 Visual Studio 放置檔案的目錄中編輯檔案,所以您不需要將它重新匯入 Visual Studio。
將
Author、Description和Shortcut元素新增到Header元素,並填入內容。確認
Header項目看起來類似下列範例,並儲存盤案。<Header> <Title>Square Root</Title> <Author>Myself</Author> <Description>Calculates the square root of 16.</Description> <Shortcut>sqrt</Shortcut> </Header>開啟 Visual Studio 代碼段管理員 ,然後選取您的代碼段。 在右窗格中,請注意現在已填入 [描述]、[ 作者] 和 [ 快捷方式 ] 字段。
若要測試快捷方式,請開啟您先前使用的專案,在編輯器中輸入 sqrt ,然後針對 Visual Basic 按 一次 Tab 鍵,或針對 C# 按兩次。 插入代碼片段。
替換參數
您可能希望使用者取代程式碼片段的部分。 例如,您可能希望使用者將變數名稱替換為他們目前專案中的變數名稱。
您可以提供兩種類型的取代:字面值和物件。
使用 Literal 元素 來識別一個完全包含在程式碼片段內的代碼替換項目,此項目在插入程式碼後可以自定義。 例如,字串或數值。
使用 Object 元素 來識別代碼片段所需但可能定義於該片段外的項目。 例如,對象實例或控件。
您可以在 SquareRoot.snippet 檔案中使用 Literal 元素,協助用戶輕鬆地變更要計算平方根的數字。
在 SquareRoot.snippet 檔案中修改
Snippet元素,如下所示:<Snippet> <Code Language="CSharp"> <![CDATA[double root = Math.Sqrt($Number$);]]> </Code> <Declarations> <Literal> <ID>Number</ID> <ToolTip>Enter the number you want the square root of.</ToolTip> <Default>16</Default> </Literal> </Declarations> </Snippet>請注意,文字替換會獲得一個 ID,
Number。 您可以將該識別碼用$字元包住,以便在程式碼片段中參考。<![CDATA[double root = Math.Sqrt($Number$);]]>儲存程式碼片段檔案。
開啟專案並插入代碼段。
代碼片段被插入,且可編輯的文字常數會高亮顯示以供替換。 將滑鼠游標懸停在替代參數上,以查看該值的工具提示。
小提示
如果代碼段中有多個可取代參數,您可以按 Tab 鍵,從一個參數巡覽到另一個參數來變更值。
匯入命名空間
您可以使用代碼段新增 using 指示詞(C#)或 Imports 語句(Visual Basic),藉此包含 Imports 元素。 針對 .NET Framework 專案,您也可以使用 References 元素來新增項目的參考。
下列 XML 顯示了一段代碼,其中在System.IO命名空間中使用File.Exists方法,因此定義了Imports元素以匯入System.IO命名空間。
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>File Exists</Title>
<Shortcut>exists</Shortcut>
</Header>
<Snippet>
<Code Language="CSharp">
<![CDATA[var exists = File.Exists("C:\\Temp\\Notes.txt");]]>
</Code>
<Imports>
<Import>
<Namespace>System.IO</Namespace>
</Import>
</Imports>
</Snippet>
</CodeSnippet>
</CodeSnippets>