有这个问题,主要是几个原因
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
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