2009-01-08 31 views
9

Cuando escribo el disparador de la función de comentario automático en Visual Studio (escribiendo "'' '" o "///"), la mayoría de los comentarios XML aparecen como me gustan. Sin embargo, normalmente agrego la etiqueta de historial a la documentación para poder rastrear y los cambios que se realizan en el método a lo largo del tiempo.¿Cómo personalizo el texto de comentarios automáticos en Visual Studio?

¿Hay alguna manera de personalizar la función de comentarios automáticos para que agregue la etiqueta del historial y, potencialmente, algún nombre genérico - Fecha - Cambiar el texto del marcador de posición?

Respuesta

11

Sugiero usar GhostDoc. Genera comentarios muy inteligentes utilizando /// en función de los nombres y parámetros de tu método. Además, es completamente personalizable.

+0

Excelente recurso! Desafortunadamente, somos una tienda VB aquí y GhostDoc aparece como "experimental" para el código VB.NET. Sin embargo, estoy manteniendo este marcador para mis propios proyectos de C# en casa. ¡Gracias! –

+0

Doh> _ DavGarcia

+0

Solo mediante una actualización, GhostDoc 2.5 admite comentarios en VB.NET. Simplemente fui a las Opciones de GhostDoc y agregué mi etiqueta de historial (con una variable para poner en la fecha actual) y todo estaba listo. –

3

Creo que podría usar una herramienta como dice dgarcia, pero trate de elegir una que haga que el control de versión se inserte, personalmente no soy un gran fan de mantener la "historia" o la pista del proyecto usando comentarios en el código.

Si te gusta de esa manera usted puede crear su propia versión personalizada del fragmento, esto es más fácil si se utiliza una herramienta como Snippy

Copy this file a sus

Mis documentos \ Visual Studio 2005 \ fragmentos de código [idioma] \ Mis fragmentos de código \

Sólo ten cuidado de cambiar el archivo si va a usarlo en VB.NET

esperanza esta ayuda

1

Al igual que el seguimiento del comentario a Olivier. Aquí hay una copia de la macro ahora, busque la sección "Hacer historial" para ver dónde inserté el código.

''// 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 

Por alguna razón, después de la parada, reconstruir y reiniciar Visual Studio, ahora no recibo la etiqueta de la historia. ¿Alguien puede ver algo aquí que me falta?

+0

No creo que este macro sea lo que el Visual Studio IDE usa cuando tipea '' 'antes de un Sub. Puede ejecutar su macro modificada haciendo clic derecho en Macro Explorer y seleccionando Ejecutar. Esto inserta comentarios antes de cada rutina, ya sea que ya estén o no comentados. –

+0

Hmm, suena como algo para probar. ¿Alguna idea sobre el nombre real de macro que se ejecuta? –

1

vb usa un archivo xml para cargar los defults. Es VBXMLDoc.xml y depende de qué versión esté ejecutando en cuanto a la ubicación del archivo.

Cuestiones relacionadas