C# visual studio snippet

【小工具推薦】SnippetEditor

李宗翰 2016/12/27 15:57:37
1933

主題:

【小工具推薦】SnippetEditor

文章簡介:

使用Visual Studio撰寫程式時,常常因為某些情境,需要重覆撰寫類似的程式碼,有些人會重複複製/貼上相同的程式碼再一一修改變數,但只要有一個小小的疏漏,就留下BUG等待有一天被找到。

要解決上述問題並加快效率,推薦使用VS內建的Snippet進行作業,而編輯它的工具,就是Snippet Editor。

範例語言:

C#

作者:

Reck Lee

版本/產出日期:

2016/12/26


小工具推薦SnippetEditor

作者:Reck Lee

I. 前言:

何謂「Code Snippet [1*]程式碼片段(Code Snippet)是可重複使用的程式碼之小型區塊,可以使用內容功能表命令或快速鍵的組合在程式碼檔案中插入 它們通常包含常用的程式碼區塊,例如 try-finally if-else 區塊,但是它們可以用來插入整個類別或方法



II. 如何使用內建語法

在程式碼視窗的內容功能表中按一下 [插入程式碼片段](快速鍵ctrl + K, ctrl + X),然後按 [Visual C#],輸入 tryf,之後按下TAB,或者您可以輸入 tryf 然後按下TAB + TAB,插入這個程式碼片段。

或是使用捷徑輸入tryf(TAB + TAB)

=>



III. 如何自訂程式碼片段(官方版本)

若要自行建立自己想要的程式碼片段,依MSDN [2*]說明,首先你要搞懂以下這個結構

<?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>


然後依自己的需求(此例為C#)編輯成如下的內容,

<CodeSnippets xmlns="http//schemas.microsoft.com/VisualStudio/CodeSnippet">

<CodeSnippet>

<Header>

<!-- Add Header information here -->

</Header>

<Snippet>

<!-- Add additional Snippet information here -->

<Declarations>

<Literal>

<ID>SqlConnString</ID>

<ToolTip>Replace with a SQL connection string.</ToolTip>

<Default>"SQL connection string"</Default>

</Literal>

<Object>

<ID>SqlConnection</ID>

<Type>System.Data.SqlClient.SqlConnection</Type>

<ToolTip>Replace with a connection object in your application.</ToolTip>

<Default>dcConnection</Default>

</Object>

</Declarations>

<Code Language="CSharp">

<![CDATA[

daCustomers = new SqlClient.SqlDataAdapter();

selectCommand = new SqlClient.SqlCommand($SqlConnString$);

daCustomers.SelectCommand = selectCommand;

daCustomers.SelectCommand.Connection = $SqlConnection$;

]]>

</Code>

</Snippet>

</CodeSnippet>

</CodeSnippets>


接著要找到匯入的Visual Studio版本、位置,再分成兩段匯入至系統內

步驟

1. 開啟程式碼片段管理員 ([工具/程式碼片段管理員])

2. 按一下 [匯入] 按鈕

3. 加入程式碼片段(使用ctrl-K,ctrl+X開啟的那種)%USERPROFILE%\Documents\Visual Studio 2013\Code Snippets\Visual C#\My Code Snippets

4. 若要加入描述和捷徑欄位,則要再步驟3的目錄再新增一個CSharpCodeSnippet.snippet

5. 再在裡面新增內容為

<Header>

<Title>Hello World VB</Title>

<Author>Myself</Author>

<Description>Says Hello to the world.</Description>

<Shortcut>hello</Shortcut>

</Header>

6. 最後開啟專案進行測試(例如 輸入hello再按兩次Tab)


好的,經歷這些過程著實累人,建一個就要這麼多功夫,如果要建一大票自己想用的,大概此時就想放棄了。



IV. 使用SnippetEditor建立程式碼片段

幸好在廣大網友的努力下,在BillMcC 的專案中,提出了Snippet Editor(目前stablev2.1.0.0)來進行上述複雜的過程,讓加入自訂程式碼片段的過程變得十分簡單,我們來看看要如何使用吧。


首先,先到此專案的官網 [3*]下載(圖紅框處,點擊即可直接下載)


    下載後解壓縮,會看到該程式的目錄,點擊主程式(圖紅框處)即可開啟

    

主程式開啟後,畫面如下:



V. 新增一個自訂的程式碼片段(以C#為例)

步驟如下

1. 左上角選擇Visual Studio版本(本例使用Visual Studio 2010)

2. 依專案類型,向下選擇到對應的程式碼片段目錄(本例使用Visual C#)按右鍵選擇Add New Snippet)

3. 給新的Snippet一個足以辨識的名稱

4. 用滑鼠點擊該項目兩次後,開啟編輯畫面

5. 假設我們需要大量輸入的程式碼結構如下
(若預計要重覆輸入的變數非~~~常的多時)

List<SqlParameter> ListExecSP = new List<SqlParameter>();


SqlParameter SP1 = new SqlParameter(@SP1, SqlDbType.NVarChar,4000);

ListExecSP.Add(SP1);


SqlParameter SP2 = new SqlParameter("@SP2", SqlDbType.Char, 2);

ListExecSP.Add(SP2);


6. 我們把其中一段程式碼貼上至Snippet Editor,並修改相關參數(捷徑名稱設為cnSP)後,畫面如下

7. 接下來,用滑鼠標要變更為變數的字,並按下下方黃色的+號,畫面如下


再依需求變更相關設定如下

ID 辨識用的唯一變數
Defaults to 若不輸入時,預設帶入什麼文字
kind 定義ID是什麼類型的,共有兩個選項=>
Literal 變更的變數名稱(純文字)
Object 變數型態

8. 重覆步驟7,將全部調整完成後,按下上方的「Save」按鈕就完成啦,畫面如下


VI. 使用設計好的自訂程式碼片段

回到Visual Studio開發畫面,打入cnSP(上節步驟6輸入的shortcut)後,按兩次tab(TAB + TAB)畫面如下

=>

接著依畫面輸入(tab可切換各個變數)後,就可以快速產出對應的程式碼如下

=>

=>

VII. 結語

好的工具能提供更有效率又穩定的程式碼產出,很可惜作者的此專案只支援到VS2010,希望未來還可以支援更新的版本。


VIII. VS2012之後的Snippet使用的工具

VS2012版本之後,有別的作者進行類似的專案開發,可以參考官網 [4*]介紹頁 [5*],謝謝。



參考資料

1、 Code Snippet(程式碼片段)
https //msdn.microsoft.com/zh-tw/library/ms165392.aspx

2、 建立程式碼片段
https //msdn.microsoft.com/zh-tw/library/ms165394.aspx

3、 Snippet Editor
http //snippeteditor.codeplex.com/

4、 Snippet Designer
https //github.com/mmanela/snippetdesigner

5、 Visual Studio Extension - Snippet Designer 簡介(by 91)
https //msdn.microsoft.com/zh-tw/communitydocs/visual-studio/ta15021401

李宗翰