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

阅读更多

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

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

你可能感兴趣的:(.net,Windows,VSS,thread)