Pro*_*ofK 7 build visual-studio-2010 visual-studio
有没有办法可以捕获构建输出,即输出到输出窗口的文本?现在,我唯一可以从输出窗口复制和粘贴文本的替代方法是从命令行构建并将输出重定向到文件.
快速浏览一下C#编译器命令行选项并没有显示为警告和错误等消息指定输出文件的任何选项,因此我猜测VS钩子进入csc.exe进程的输出流,捕获其文本并写入到输出窗口.也许自定义应用程序也可能存在差距.
将以下宏添加到VS EnvironmentEvent
模块(工具 - >宏 - >宏IDE ...)或ALT + F11.无论是否成功,构建完成后宏都会运行.
这将管道输出窗口的文本输出,更具体地说Build
是输出窗口的视图build_output.log
.其他IDE Guids可以在MSDN上找到.
作为参考,解决方案基于HOWTO:获取OutputWindowPane从Visual Studio加载项或宏输出一些字符串
Visual Studio提供了一个Output窗口("View","Other Windows","Output"菜单)来显示消息,调试信息等.该窗口提供了几个可以通过组合框选择的窗格,例如"Source Control", "构建","调试"等
自动化模型(EnvDTE)提供EnvDTE.OutputWindow,EnvDTE.OutputWindowPanes和EnvDTE.OutputWindowPane类.
Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone
Const BUILD_OUTPUT_PANE_GUID As String = "{1BD8A850-02D1-11D1-BEE7-00A0C913D1F8}"
Dim t As OutputWindowPane
Dim txtOutput As TextDocument
Dim txtSelection As TextSelection
Dim vsWindow As Window
vsWindow = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
Dim vsOutputWindow As OutputWindow
Dim objOutputWindowPane As OutputWindowPane
Dim objBuildOutputWindowPane As OutputWindowPane
vsOutputWindow = DirectCast(vsWindow.Object, OutputWindow)
For Each objOutputWindowPane In vsOutputWindow.OutputWindowPanes
If objOutputWindowPane.Guid.ToUpper = BUILD_OUTPUT_PANE_GUID Then
objBuildOutputWindowPane = objOutputWindowPane
Exit For
End If
Next
txtOutput = objBuildOutputWindowPane.TextDocument
txtSelection = txtOutput.Selection
txtSelection.StartOfDocument(False)
txtSelection.EndOfDocument(True)
objBuildOutputWindowPane.OutputString(Date.Now)
txtSelection = txtOutput.Selection
solutionDir = IO.Path.GetDirectoryName(DTE.Solution.FullName)
My.Computer.FileSystem.WriteAllText(solutionDir & "\build_output.log", txtSelection.Text, False)
MsgBox(txtSelection.Text)
End Sub
Run Code Online (Sandbox Code Playgroud)
以上内容可以调整为可能在每个项目的基础上输出构建信息.构建日志等的文件名可能基于正在构建的当前项目进行配置(对此不太确定),最重要的是,您可以保留构建历史记录.
有一个可以挂钩的VS事件,所以人们可以做的事情是无穷无尽的
这是在VS2010 Ultimate上测试的......
归档时间: |
|
查看次数: |
5366 次 |
最近记录: |