现在的位置: 首页 > 综合 > 正文

AssemblyInfo信息的批量修改(.NET 宏)

2012年09月22日 ⁄ 综合 ⁄ 共 2446字 ⁄ 字号 评论关闭

有这个问题,主要是几个原因

1:最近发现在项目引用中,出现引用了DEBUG版本的DLL,所以我需要区分一个DLL是Release、还是Debug版本(方法

2:有了方法,就要改AssemblyInfo信息了。这里是没办法用查找、替换的方式来实现。最后用了宏,来完成对AssemblyDescription这个标签的批量修改。

Public Module RecordingModule
    
Sub TemporaryMacro()
        DTE.ExecuteCommand(
"Edit.FindinFiles")
        DTE.Windows.Item(
"{CF2DDC32-8CAD-11D2-9302-005345000000}").Activate() '查找和替换
        DTE.Find.FilesOfType = "Assemblyinfo.cs"
        DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
        DTE.Find.FindWhat 
= "[assembly: AssemblyDescription("""")]"
        DTE.Find.Target 
= vsFindTarget.vsFindTargetFiles
        DTE.Find.MatchCase 
= False
        DTE.Find.MatchWholeWord 
= False
        DTE.Find.MatchInHiddenText 
= True
        DTE.Find.PatternSyntax 
= vsFindPatternSyntax.vsFindPatternSyntaxLiteral
        DTE.Find.SearchPath 
= "整个解决方案"
        DTE.Find.SearchSubfolders 
= True
        DTE.Find.FilesOfType 
= "Assemblyinfo.cs"
        DTE.Find.ResultsLocation 
= vsFindResultsLocation.vsFindResults1
        DTE.Find.Action 
= vsFindAction.vsFindActionFindAll
        
If (DTE.Find.Execute() = vsFindResult.vsFindResultNotFound) Then
            
Throw New System.Exception("vsFindResultNotFound")
        
End If

        System.Threading.Thread.Sleep(1000)

        Dim reg As New Regex("匹配文件: (\d*)")
        
Dim match = reg.Match(DTE.StatusBar.Text)
        
If match.Success Then

            For i = 1 To Convert.ToInt32(match.Groups(1).Value)

                DTE.Windows.Item(Constants.vsWindowKindFindResults1).Activate()
                DTE.ExecuteCommand("Edit.GoToFindResults1NextLocation")
                DTE.Windows.Item(
"AssemblyInfo.cs [只读]").Activate() '如果你没有使用VSS版本控制直接修改成 DTE.Windows.Item("AssemblyInfo.cs")
                DTE.ActiveDocument.Selection.EndOfLine(True)
                DTE.ActiveDocument.Selection.DeleteLeft()
                DTE.ActiveDocument.Selection.Text 
= "#if DEBUG"
                DTE.ActiveDocument.Selection.NewLine()
                DTE.ActiveDocument.Selection.Text 
= "[assembly: AssemblyDescription(""Debug"")]"
                DTE.ActiveDocument.Selection.NewLine()
                DTE.ActiveDocument.Selection.Text 
= "#else"
                DTE.ActiveDocument.Selection.NewLine()
                DTE.ActiveDocument.Selection.Text 
= "[assembly:AssemblyDescription(""Release"")]"
                DTE.ActiveDocument.Selection.NewLine()
                DTE.ActiveDocument.Selection.Text 
= "#endif"
            
Next

        End If

    End Sub
End Module

抱歉!评论已关闭.