有这个问题,主要是几个原因
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
Dim match = reg.Match(DTE.StatusBar.Text)
If match.Success Then
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 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(
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