title: Visual Studio中使用Macros插件給代碼添加注釋、時間和以及自動腳本
date: 2020-09-11
sidebarDepth: 2
tags:
- 代碼
- Visual studio
- 時間
- 注釋
- Macros
categories: - 開發
- 微軟技術
- windows
Macros for Visual Studio插件是一款非常易用的自動腳本插件,支持visual studio各個版本,用來創建todo、時間備注以及文件頭尾注釋。
Macros for Visual Studio插件是一款非常易用的自動腳本插件,支持visual studio各個版本,用來創建todo、時間備注以及文件頭尾注釋。
簡介
什么是創建信息注釋?
創建信息注釋,類似於文件的創建信息,一般來說,至少要有創建人和創建時間。如果說有人修改了方法也應該添加一個更新信息注釋。
為什么要添加創建信息注釋?
可能在一個人編碼的時候,創建信息注釋並不太重要,但是如果許多人共同維護一個項目,並且經常會出現多個人修改同一個文件的代碼 時,這就顯得很重要了,哪里的代碼出現了什么問題,可以直接責任到人,誰改的代碼出現了問題就應該誰去修改代碼。
雖然使用svn、git管理工具,可以有提交日志,可以方便的管理,但如果在代碼中進行注釋,則會更好的提升效率。
如果是在vs code中,則可以使用
Insert Date String等插件,部署后使用ctrl+Shift+I就能插入當前時間,顯然這對於visual stuido大型編程來說還不足。
創建信息注釋
- 1.最初的想法是重寫 VS 內置的文檔注釋,然而並沒有找到這樣的解決方案。找到的基本都是修改新建類或接口時模板文件從而添加注釋,並沒有在方法上加注釋 的解決方案。
這個方案否定之后,嘗試着使用自定義代碼段來實現在生成注釋的基礎上再添加創建信息注釋。
- 2.自定義代碼段
自定義代碼段參考示例:
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>cm</Title>
<Shortcut>cm</Shortcut>
<Description>新建代碼注釋 的代碼片段</Description>
<Author>liweihan</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>Description</ID>
<ToolTip>方法描述</ToolTip>
<Default>方法描述</Default>
</Literal>
<Literal>
<ID>Author</ID>
<ToolTip>作者</ToolTip>
<Default>liweihan</Default>
</Literal>
<Literal>
<ID>CreateDate</ID>
<ToolTip>日期</ToolTip>
<Default>@@Today</Default>
</Literal>
</Declarations>
<Code Language="csharp">
<![CDATA[/// <summary>
/// $Description$
/// @Author:$Author$
/// @CreateDate:$CreateDate$$end$
/// </summary>]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
這樣的代碼段還有許多不足,現在作者是寫死的,創建時間需要再插入代碼段之后再進行手動修改, 我希望能夠自動生成作者和當前日期, 作者寫死的問題不大,因為這個代碼段只我一個人使用,直接寫死反而更方便,這里使用一個變量方便進行修改, 關鍵是當前日期沒有辦法獲取到,查閱了很多資料,代碼段並不支持直接插入當前日期,stackoverflow 上有人討論過這個問題,解決方案是利用宏自動生成當前日期,但是文中提到的解決方案不可用,不過倒給了我解決問題的思路——利用宏去插入當前日期。
- 3.宏插入當前日期 我在 VS 的 擴展與更新 中下載了一個 管理宏的插件——
Macros for Visual studio
你也可以直接在visualstudio的market市場下載,地址:
https://marketplace.visualstudio.com/items?itemName=VisualStudioPlatformTeam.MacrosforVisualStudio
這有一個官方示例動圖:

這是在visual studio中下部署環境:

下載安裝之后需要重啟 VS ,重啟之后在 菜單欄中的工具下就可以看到:

這個宏管理器自帶了一些 Samples ,其中有一個可以插入日期的宏

選擇 Assign Shortcut 進行設置快捷鍵就可以在 VS 中使用啦,默認的格式是 “mm/dd/yyyy”

如果你像我一樣不喜歡默認的日期格式,可以在對應項上右鍵選擇“打開”,進行編輯,里面是 js 代碼,有一些 js 基礎的話修改起來會 更方便,我修改了下代碼,將日期格式修改為了“yyyy-MM-dd”格式。

- 4.完整操作流程
首先,在方法體上輸入“///”,VS 會自動生成默認的文檔注釋,先寫好注釋
復制<summary>部分的注釋,選中 <summary> 部分,參數及返回信息保留,輸入定義好的代碼段快捷鍵,雙擊 Tab 鍵插入代碼段
將復制的注釋粘貼到 方法描述 處,添加注釋
按 Tab 鍵切換到 當前日期,在 @@Today 處,按設置的插入當前日期的宏快捷鍵,VS 會自動插入當前日期
更新信息注釋
更新信息代碼段示例:
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>up</Title>
<Shortcut>up</Shortcut>
<Description>更新代碼注釋 的代碼片段</Description>
<Author>liweihan</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>Description</ID>
<ToolTip>更新描述</ToolTip>
<Default>更新描述</Default>
</Literal>
<Literal>
<ID>UpdatedBy</ID>
<ToolTip>更新人</ToolTip>
<Default>liweihan</Default>
</Literal>
<Literal>
<ID>UpdatedDate</ID>
<ToolTip>日期</ToolTip>
<Default>@@Today</Default>
</Literal>
</Declarations>
<Code Language="csharp">
<![CDATA[/// $Description$ @UpdatedBy:$UpdatedBy$ @UpdatedDate:$UpdatedDate$$end$ ]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
將自定義代碼段添加到 VS
在 VS 中打開代碼段管理器

選擇語言為 “CSharp”,選中“My Code Snippets”,選擇“Visual C#”也可以,這里為了區分自己的代碼段和系統代碼段我選擇了"My Code Snippets",復制位置中的路徑,並在資源管理器中打開路徑
將自定義的代碼段(*.snippet)拷貝到上一步打開的目錄中,重啟VS就可以了
