简体   繁体   English

如何在Visual Studio中自定义自动注释文本?

[英]How do I customize the auto commenting text in Visual Studio?

When I type the trigger the auto comment feature in Visual Studio (by typing "'''" or "///"), most of the XML commenting details show up that I like. 当我在Visual Studio中键入触发器自动注释功能时(通过键入“'''”或“///”),大多数XML注释细节都会显示我喜欢的内容。 However, I typically add the history tag to the documentation so I can track and changes that are made to the method over time. 但是,我通常会将历史记录标记添加到文档中,以便跟踪和更改随时间推移的方法。

Is there any way I can customize the auto commenting feature so that it will add the history tag, and potentially some generic Name - Date - Change placeholder text? 有没有什么方法可以自定义自动评论功能,以便它添加历史记录标记,并可能添加一些通用名称 - 日期 - 更改占位符文本?

I'd suggest using GhostDoc . 我建议使用GhostDoc It generates very smart comments using /// based on your method names and parameters. 它根据您的方法名称和参数使用///生成非常智能的注释。 Also, it is fully customizable. 此外,它是完全可定制的。

I think that you could use a tool as dgarcia said but try to chose one that makes the version control insetad, Personally I'm not a huge fan of keep the "history" or track of the project using comments in the code. 我认为你可以使用dgarcia所说的工具,但是尝试选择一个使版本控制insetad的工具,我个人并不是使用代码中的注释保留项目的“历史”或跟踪的忠实粉丝。

If you like that way you could create your own customized version of the snippet, this is easier if you use a tool like Snippy 如果您喜欢这种方式,您可以创建自己的自定义版本的代码段,如果您使用像Snippy这样的工具,这会更容易

Copy this file to your 将此文件复制到您的

My Documents\\Visual Studio 2005\\Code Snippets[Language]\\My Code Snippets\\ 我的文档\\ Visual Studio 2005 \\代码片段[语言] \\我的代码片段\\

Just be carefull to change the file if you gonna use it in VB.NET 如果要在VB.NET中使用它,请小心更改文件

Hope this help 希望这有帮助

Just as followup to the comment to Olivier. 就像对奥利维尔的评论的后续行动一样。 Here is a copy of the macro now, look for the '' Do History section to see where I inserted code. 这是宏的副本,查找''历史记录部分以查看我插入代码的位置。

    ''// InsertDocComments goes through the current document using the VS Code Model
    ''// to add documentation style comments to each function.
    ''
    Sub InsertDocComments()
        Dim projectItem As ProjectItem
        Dim fileCodeModel As FileCodeModel
        Dim codeElement As CodeElement
        Dim codeElementType As CodeType
        Dim editPoint As EditPoint
        Dim commentStart As String

        projectItem = DTE.ActiveDocument.ProjectItem
        fileCodeModel = projectItem.FileCodeModel
        codeElement = fileCodeModel.CodeElements.Item(1)

        ''// For the sample, don't bother recursively descending all code like
        ''// the OutlineCode sample does. Just get a first CodeType in the
        ''// file.
        If (TypeOf codeElement Is CodeNamespace) Then
            codeElement = codeElement.members.item(1)
        End If
        If (TypeOf codeElement Is CodeType) Then
            codeElementType = CType(codeElement, CodeType)
        Else
            Throw New Exception("Didn't find a type definition as first thing in file or find a namespace as the first thing with a type inside the namespace.")
        End If

        editPoint = codeElementType.GetStartPoint(vsCMPart.vsCMPartHeader).CreateEditPoint()

        ''// Make doc comment start.
        commentStart = LineOrientedCommentStart()
        If (commentStart.Length = 2) Then
            commentStart = commentStart & commentStart.Chars(1) & " "
        ElseIf (commentStart.Length = 1) Then
            commentStart = commentStart & commentStart.Chars(0) & commentStart.Chars(0) & " "
        End If

        ''// Make this atomically undo'able.  Use Try...Finally to ensure Undo
        ''// Context is close.
        Try
            DTE.UndoContext.Open("Insert Doc Comments")

            ''// Iterate over code elements emitting doc comments for functions.
            For Each codeElement In codeElementType.Members
                If (codeElement.Kind = vsCMElement.vsCMElementFunction) Then
                    ''// Get Params.
                    Dim parameters As CodeElements
                    Dim codeFunction As CodeFunction
                    Dim codeElement2 As CodeElement
                    Dim codeParameter As CodeParameter

                    codeFunction = codeElement
                    editPoint.MoveToPoint(codeFunction.GetStartPoint(vsCMPart.vsCMPartHeader))
                    ''//editPoint.LineUp()
                    parameters = codeFunction.Parameters

                    ''// Do comment.
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbCrLf)
                    editPoint.LineUp()
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbTab & commentStart & "<summary>")
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbCrLf)
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbTab & commentStart & "Summary of " & codeElement.Name & ".")
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbCrLf)
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbTab & commentStart & "</summary>")
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbCrLf)
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbTab & commentStart)

                    For Each codeElement2 In parameters
                        codeParameter = codeElement2
                        editPoint.Insert("<param name=" & codeParameter.Name & "></param>")
                        editPoint.Insert(Microsoft.VisualBasic.Constants.vbCrLf)
                        editPoint.Insert(Microsoft.VisualBasic.Constants.vbTab & commentStart)
                    Next ''//param

                    ''// Do history tag.
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbCrLf)
                    editPoint.LineUp()
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbTab & commentStart & "<history>")
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbCrLf)
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbTab & commentStart & "Name   MM/DD/YYYY   [Created]")
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbCrLf)
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbTab & commentStart & "</history>")
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbCrLf)
                    editPoint.Insert(Microsoft.VisualBasic.Constants.vbTab & commentStart)

                End If ''//we have a function
            Next ''//code elt member

        Finally
            DTE.UndoContext.Close()
        End Try
    End Sub

For some reason, after a save, rebuild, and a restart of Visual Studio, I'm not getting the history tag. 出于某种原因,在保存,重建和重新启动Visual Studio之后,我没有获得历史记录标记。 Can anybody see something here I'm missing? 任何人都可以在这里看到我失踪的东西吗?

vb uses a xml file to load the defults. vb使用xml文件加载defults。 It is VBXMLDoc.xml and it depends on what version you are running as to the location of the file. 它是VBXMLDoc.xml,它取决于您运行的文件位置。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM