Как настроить текст автокомментирования в Visual Studio?
Когда я набираю триггер, функция автоматического комментирования в Visual Studio (набирая "'''" или "///"), появляется большая часть деталей комментирования XML, которые мне нравятся. Тем не менее, я обычно добавляю тег history в документацию, чтобы отслеживать и вносить изменения в метод с течением времени.
Можно ли как-то настроить функцию автоматического комментирования, чтобы она добавляла тег истории и, возможно, какой-нибудь общий текст "Имя" - "Дата" - "Изменить заполнитель"?
4 ответа
Я бы предложил использовать GhostDoc. Он генерирует очень умные комментарии, используя /// на основе имен и параметров вашего метода. Кроме того, это полностью настраиваемый.
Я думаю, что вы могли бы использовать инструмент, как сказал dgarcia, но попробуйте выбрать тот, который делает управление версиями неотъемлемым. Лично я не большой поклонник сохранения "истории" или отслеживания проекта с использованием комментариев в коде.
Если вам нравится, как вы можете создать свою собственную настроенную версию сниппета, это будет проще, если вы используете такой инструмент, как Snippy
Скопируйте этот файл на свой
Мои документы \Visual Studio 2005\ Отрывки кода [язык]\ Отрывки кода \
Просто будьте осторожны, чтобы изменить файл, если вы собираетесь использовать его в VB.NET
Надеюсь это поможет
VB использует XML-файл для загрузки документов. Это VBXMLDoc.xml, и это зависит от того, какую версию вы используете, в зависимости от местоположения файла.
Так же, как продолжение комментария к Оливье. Вот копия макроса сейчас, ищите раздел "История", чтобы увидеть, куда я вставил код.
''// 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
По какой-то причине после сохранения, перестройки и перезапуска Visual Studio я не получаю тег истории. Кто-нибудь может увидеть здесь что-то, чего мне не хватает?