VS中如何快捷地给自己的代码添加创建信息注释

Intro

以下讨论的都是没有使用 GIT 来管理源代码的情况,如果使用 GIT 管理源代码可直接使用VS的Git扩展就不需要考虑以下问题。

  1. 什么是创建信息注释?

    创建信息注释,类似于文件的创建信息,一般来说,至少要有创建人和创建时间。如果说有人修改了方法也应该添加一个更新信息注释。

  2. 为什么要添加创建信息注释?

    可能在一个人编码的时候,创建信息注释并不太重要,但是如果许多人共同维护一个项目,并且经常会出现多个人修改同一个文件的代码 时,这就显得很重要了,哪里的代码出现了什么问题,可以直接责任到人,谁改的代码出现了问题就应该谁去修改代码。

创建信息注释

  1. 找解决方案 最初的想法是重写 VS 内置的文档注释,然而并没有找到这样的解决方案。找到的基本都是修改新建类或接口时模板文件从而添加注释,并没有在方法上加注释 的解决方案。

    这个方案否定之后,尝试着使用自定义代码段来实现在生成注释的基础上再添加创建信息注释。

  2. 自定义代码段

    自定义代码段参考示例:

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    3. <CodeSnippet Format="1.0.0">
    4. <Header>
    5. <Title>cm</Title>
    6. <Shortcut>cm</Shortcut>
    7. <Description>新建代码注释 的代码片段</Description>
    8. <Author>liweihan</Author>
    9. <SnippetTypes>
    10. <SnippetType>Expansion</SnippetType>
    11. </SnippetTypes>
    12. </Header>
    13. <Snippet>
    14. <Declarations>
    15. <Literal>
    16. <ID>Description</ID>
    17. <ToolTip>方法描述</ToolTip>
    18. <Default>方法描述</Default>
    19. </Literal>
    20. <Literal>
    21. <ID>Author</ID>
    22. <ToolTip>作者</ToolTip>
    23. <Default>liweihan</Default>
    24. </Literal>
    25. <Literal>
    26. <ID>CreateDate</ID>
    27. <ToolTip>日期</ToolTip>
    28. <Default>@@Today</Default>
    29. </Literal>
    30. </Declarations>
    31. <Code Language="csharp">
    32. <![CDATA[/// <summary>
    33. /// $Description$
    34. /// @Author:$Author$
    35. /// @CreateDate:$CreateDate$$end$
    36. /// </summary>]]>
    37. </Code>
    38. </Snippet>
    39. </CodeSnippet>
    40. </CodeSnippets>

     

     这样的代码段还有许多不足,现在作者是写死的,创建时间需要再插入代码段之后再进行手动修改, 我希望能够自动生成作者和当前日期, 作者写死的问题不大,因为这个代码段只我一个人使用,直接写死反而更方便,这里使用一个变量方便进行修改, 关键是当前日期没有办法获取到,查阅了很多资料,代码段并不支持直接插入当前日期,stackoverflow 上有人讨论过这个问题,解决方案是利用宏自动生成当前日期,但是文中提到的解决方案不可用,不过倒给了我解决问题的思路——利用宏去插入当前日期。

  3. 宏插入当前日期 我在 VS 的 扩展与更新 中下载了一个 管理宏的插件—— Macros for Visual studio

    下载安装之后需要重启 VS ,重启之后在 菜单栏中的工具下就可以看到:

    这个宏管理器自带了一些 Samples ,其中有一个可以插入日期的宏

    选择 Assign Shortcut 进行设置快捷键就可以在 VS 中使用啦,默认的格式是 “mm/dd/yyyy”

    如果你像我一样不喜欢默认的日期格式,可以在对应项上右键选择“打开”,进行编辑,里面是 js 代码,有一些 js 基础的话修改起来会 更方便,我修改了下代码,将日期格式修改为了“yyyy-MM-dd”格式。

  4. 完整操作流程

    • 首先,在方法体上输入“///”,VS 会自动生成默认的文档注释,先写好注释
    • 复制<summary>部分的注释,选中 <summary> 部分,参数及返回信息保留,输入定义好的代码段快捷键,双击 Tab 键插入代码段
    • 将复制的注释粘贴到 方法描述 处,添加注释
    • Tab 键切换到 当前日期,在 @@Today 处,按设置的插入当前日期的宏快捷键,VS 会自动插入当前日期

更新信息注释

更新信息代码段示例:

  1.   <?xml version="1.0" encoding="utf-8"?>
  2. <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  3. <CodeSnippet Format="1.0.0">
  4. <Header>
  5. <Title>up</Title>
  6. <Shortcut>up</Shortcut>
  7. <Description>更新代码注释 的代码片段</Description>
  8. <Author>liweihan</Author>
  9. <SnippetTypes>
  10. <SnippetType>Expansion</SnippetType>
  11. </SnippetTypes>
  12. </Header>
  13. <Snippet>
  14. <Declarations>
  15. <Literal>
  16. <ID>Description</ID>
  17. <ToolTip>更新描述</ToolTip>
  18. <Default>更新描述</Default>
  19. </Literal>
  20. <Literal>
  21. <ID>UpdatedBy</ID>
  22. <ToolTip>更新人</ToolTip>
  23. <Default>liweihan</Default>
  24. </Literal>
  25. <Literal>
  26. <ID>UpdatedDate</ID>
  27. <ToolTip>日期</ToolTip>
  28. <Default>@@Today</Default>
  29. </Literal>
  30. </Declarations>
  31. <Code Language="csharp">
  32. <![CDATA[/// $Description$ @UpdatedBy:$UpdatedBy$ @UpdatedDate:$UpdatedDate$$end$ ]]>
  33. </Code>
  34. </Snippet>
  35. </CodeSnippet>
  36. </CodeSnippets>

将自定义代码段添加到 VS

  • VS 中打开代码段管理器

  • 选择语言为 “CSharp”,选中“My Code Snippets”,选择“Visual C#”也可以,这里为了区分自己的代码段和系统代码段我选择了"My Code Snippets",复制位置中的路径,并在资源管理器中打开路径
  • 将自定义的代码段(*.snippet)拷贝到上一步打开的目录中,重启VS就可以了

VS中如何快捷地给自己的代码添加创建信息注释的更多相关文章

  1. Visual Studio中使用Macros插件给代码添加注释、时间和以及自动脚本

    title: Visual Studio中使用Macros插件给代码添加注释.时间和以及自动脚本 date: 2020-09-11 sidebarDepth: 2 tags: 代码 Visual st ...

  2. (30)odoo中的快捷标签

    * 快捷标签   提供快捷标签是为了简化代码的编码,把复杂的工作封装化   * 找到封装化的源码:  openerp/tools/convert.py   xml_import      self._ ...

  3. uboot中的快捷菜单的制作说明 【转】

    转自:http://blog.chinaunix.net/uid-22030783-id-366971.html   在uboot中加入快捷操作菜单的方法非常简单,在论坛发布的uboot201003V ...

  4. uboot中的快捷菜单的制作说明

    转:http://blog.chinaunix.net/uid-22030783-id-366971.html 在uboot中加入快捷操作菜单的方法非常简单,在论坛发布的uboot201003V1.1 ...

  5. “RazorEngine.Templating.TemplateCompilationException”类型的异常在 RazorEngine.NET4.0.dll 中发生,但未在用户代码中进行处理

    错误信息: "RazorEngine.Templating.TemplateCompilationException"类型的异常在 RazorEngine.NET4.0.dll 中 ...

  6. 开始VS 2012中LightSwitch系列的第4部分:太多信息了!使用查询来排序和筛选数据

    [原文发表地址]  Beginning LightSwitch in VS 2012 Part 4: Too much information! Sorting and Filtering Data ...

  7. Scala 深入浅出实战经典 第51讲:Scala中链式调用风格的实现代码实战及其在Spark中应用

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  8. 从C#中通过Windows窗体添加信息到数据库 (添加学生信息)

    如上图所示界面,当我们点击保存按钮时将会将表格中的数据保存到数据库中去,与数据库进行一个交互 第一步我们就是要获取到表格中的数据 string pwd = textpwd.Text; //获得第一次输 ...

  9. SQL中批量删除被注入的恶意代码的方法

    下文将为您介绍SQL中批量删除被注入的恶意代码的方法,供您参考,如果您也遇到了这样的问题,不妨一看,相信对您会有所帮助. 1,如果你的数据表很少的话,那么写几条简单的sql就搞定了 对于表中的nvch ...

随机推荐

  1. Css概要与选择器,刻度单位

    目录 一.CSS3概要 1.1.特点 1.2.效果演示 1.3.帮助文档与学习 二.选择器 1.1.基础的选择器 1.2.组合选择器 1.3.属性选择器 1.4.伪类 1.5.伪元素 三.特殊性(优先 ...

  2. HTML5系列:HTML5绘图

    1. canvas元素基础 canvas元素是HTML5中新增的一个重要元素,专门用来绘制图形. 在页面中使用canvas元素绘制图形需要经过的三个步骤: 步骤一  使用canvas元素创建一个画布区 ...

  3. 【原创】开源Math.NET基础数学类库使用(09)相关数论函数使用

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...

  4. jQuery架构剖析

    对于jQuery的整体架构,经典之处有三: 1.jQuery的无new构建 2.jQuery的链式调用 3.jQuery的插件接口 想必兄弟姐妹们也觉得这架构不错哈,但有时又畏惧去拜读大量的jQuer ...

  5. 解决Oracle SQL Developer无法连接远程服务器的问题

    在使用Oracle SQL Developer连接远程服务器的时候,出现如下的错误 在服务器本地是可以正常连接的.这个让人想起来,跟SQL Server的一些设计有些类似,服务器估计默认只在本地监听, ...

  6. MyCAT常用分片规则之分片枚举

    MyCAT支持多种分片规则,下面测试的这种是分片枚举.适用场景,列值的个数是固定的,譬如省份,月份等. 在这里,需定义三个值,规则均是在rule.xml中定义. 1. tableRule 2. fun ...

  7. html标签属性(attribute)和dom元素的属性(property)

    简介 attribute和property都有属性之意,但对于attribute和property的区分其实并不难.从对象来说,attribute是html文档上标签属性, 而property则是对应 ...

  8. ZOJ Problem Set - 1292 Integer Inquiry

    题目本身属于简单题,但是注意在输出的时候,题目很变态的对格式做了很多要求: 1.输入的N与下面的block有一个空行 2.每次输出与下一个输入的block有一个空行 3.但是特别注意,当是最后一个输出 ...

  9. Oracle同义词+dblink的实际应用

    Oracle同义词+dblink的实际应用 业务需求:原数据库(10.2.0.4.0),新数据库(11.2.0.3) 由于程序的需求原因,现在需要把新库上的某个用户直接映射到老库用户下: 1. 备份原 ...

  10. 将Resource中的图片资源动态绑定到PictureBox中:

    //CurrentCommunication为解决方案的名字,dynamic为图片的名字 pictureBox1.Image = CurrentCommunication.Properties.Res ...