您的位置:首页 > 其它

利用宏自动在类文件中添加注释信息

2010-03-26 16:54 471 查看
有些时候我们为了版权或是别的原因需要在文件的头部添加一些注释,比如我新加入的这家公司就要求在文件的头部添加文件名、路径名、项目名以及公司版权声明等信息。当遇到这种情况的时候我一般想到的是查找当前手头可用的工具,看看有没有可以直接自动完成的,如果没有就自己编写一个工具来完成。

针对上面的需求我查找了一下安装的Resharper工具,发现Resharper只能添加固定类型的头注释,无法动态的设置文件名、路径名以及项目名,这显然不符合我的要求,所以我就想到了用宏来完成工作,下面是注释文件的样式和宏代码,希望对您有帮助。

再次更新

Option Explicit Off
Option Strict Off

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics
Imports VSLangProj
Imports System.Windows.Forms
Imports System.Runtime.InteropServices
Imports System.Collections.Generic
Imports System.Text
Imports System.IO

Public Module AddFileHeader
Dim document As Document = DTE.ActiveDocument
Dim selection As TextSelection = DTE.ActiveDocument.Selection
Dim headerText As String
Dim filename As String = Document.Name
Dim pathname As String = Document.Path.Substring(Document.Path.LastIndexOf("src\") + 4).Trim("\") '根据需要自动截取,这里是从项目根目录开始
Dim projectname As String = document.ProjectItem.ContainingProject.Name

Public Sub AddFileHeader()
Try
document = DTE.ActiveDocument
selection = DTE.ActiveDocument.Selection
headerText = ""
filename = document.Name
pathname = document.Path.Substring(document.Path.LastIndexOf("src\") + 4).Trim("\")
projectname = document.ProjectItem.ContainingProject.Name

deleteExistComment()
insertComment()
Finally
Application.DoEvents()
End Try
End Sub

Private Sub deleteExistComment()
selection.StartOfDocument()
DTE.ExecuteCommand("Edit.Find")
DTE.Windows.Item(filename).Activate()
DTE.Find.FindWhat = "using System"
DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
DTE.Find.MatchCase = False
DTE.Find.MatchWholeWord = False
DTE.Find.Backwards = False
DTE.Find.MatchInHiddenText = True
DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral
DTE.Find.Action = vsFindAction.vsFindActionFind
If (DTE.Find.Execute() = vsFindResult.vsFindResultNotFound) Then
Return
End If
DTE.Windows.Item(filename).Activate()
DTE.ActiveDocument.Selection.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstColumn)
DTE.ActiveDocument.Selection.LineUp(True, 100)
DTE.ActiveDocument.Selection.Delete()
DTE.Windows.Item("{CF2DDC32-8CAD-11D2-9302-005345000000}").Close()
End Sub

Private Sub insertComment()
selection.Insert("/***************************************************************** ")
selection.NewLine()

selection.Insert("* Copyright (C) 在这里填写你的信息")
selection.NewLine()

selection.Insert("* 文件名称: ")
selection.Insert(filename)
selection.NewLine()

selection.Insert("* 功能描述: ")
selection.NewLine()

selection.Insert("* 作    者: ZhangRongHua ")
selection.NewLine()

selection.Insert("* 创建时间: ")
selection.Insert(Date.Today.ToString("yyyy-MM-dd"))
selection.NewLine()

selection.Insert("*")
selection.NewLine()
selection.Insert("* 修改记录:")
selection.NewLine()
selection.Insert("* 修改人:")
selection.NewLine()
selection.Insert("*********************************************************************/")
selection.NewLine()

End Sub

End Module
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: