gpt4 book ai didi

visual-studio - 在 Visual Studio 2010 中捕获生成输出

转载 作者:行者123 更新时间:2023-12-04 05:41:50 24 4
gpt4 key购买 nike

有没有办法可以捕获构建输出,即输出到输出窗口的文本?现在,我从输出窗口复制和粘贴文本的唯一替代方法是从命令行构建并将输出重定向到文件。

快速查看 C# 编译器命令行选项并没有显示任何用于为警告和错误等消息指定输出文件的选项,所以我猜测 VS Hook 到 csc.exe 进程的输出流,以捕获其文本并写入它到输出窗口。也许自定义应用程序也可以加入其中。

最佳答案

将以下宏添加到 VS EnvironmentEvent模块(工具->宏->宏 IDE...)或 ALT+F11。宏在构建完成后运行,无论成功与否。

这将从输出窗口输出文本,更具体地说是 Build build_output.log 的输出窗口 View .其他 IDE Guids can be found on MSDN .

作为引用,该解决方案基于 HOWTO: Get an OutputWindowPane to output some string from a Visual Studio add-in or macro

Visual Studio provides an Output window ("View", "Other Windows", "Output" menu) to show messages, debug information, etc. That window provides several panes that can be selected through a combobox, such as "Source Control", "Build", "Debug", etc.

The automation model (EnvDTE) provides the EnvDTE.OutputWindow, EnvDTE.OutputWindowPanes and EnvDTE.OutputWindowPane classes.


 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

上面的内容也可以调整为可能在每个项目的基础上输出构建信息。构建日志等的文件名可能可以根据当前正在构建的项目进行配置(对此不太确定),最重要的是您可以保留构建历史。

可以 Hook 的 VS 事件有很多,所以可以做的事情是无穷无尽的

这是在 VS2010 Ultimate 上测试的...

关于visual-studio - 在 Visual Studio 2010 中捕获生成输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5298428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com