gpt4 book ai didi

compiler-construction - 在Visual Studio 2013中写入输出构建 Pane +错误列表,无需双击即可使用msbuild/new进程双击条目以出错

转载 作者:行者123 更新时间:2023-12-02 10:46:54 25 4
gpt4 key购买 nike

我使用的是自定义生成工具,我从正在创建的Visual Studio 2013扩展包中将其作为dll调用,我想从此工具返回的字符串输出进行解析,以获取错误,行号等信息。并将其输出到构建 Pane +错误列表,并具有双击该错误的功能,可以转到文件中的源位置。

目前,我可以将信息输出到 Pane 和错误列表中,但是双击源功能在输出列表或错误列表中均不起作用(在输出窗口中单击字符串时,其作用类似于文本中的普通文本)文件)。

下面的代码是我尝试使用OutputTaskItemString将测试错误写入构建 Pane /错误列表的尝试。我相信该字符串的格式正确,以便Visual Studio可以解析“错误感知”功能。

如果我将我的工具作为外部流程运行到stdout,则输出到 Pane 的效果很好,但错误列表中没有任何内容。

       var outputWindow = GetService(
typeof(SVsOutputWindow)) as IVsOutputWindow;
IVsOutputWindowPane pane;
Guid guidGeneralPane =
VSConstants.GUID_BuildOutputWindowPane;
outputWindow.GetPane(ref guidGeneralPane, out pane);

pane.Activate();

pane.OutputTaskItemString("I:\\LLVM_BUILD\\VC12\\64\\Release\\bin\\test.cpp(12,2) : error: void function 'functionTest' should not return a value [-Wreturn-type] return 0;", VSTASKPRIORITY.TP_HIGH, VSTASKCATEGORY.CAT_BUILDCOMPILE,
"Error", (int)Microsoft.VisualStudio.Shell.Interop._vstaskbitmap.BMP_COMPILE, "I:\\LLVM_BUILD\\VC12\\64\\Release\\bin\\test.cpp", 12, "error: void function 'functionTest' should not return a value [-Wreturn-type] return 0");

pane.FlushToTaskList();

关于此主题还有其他问题,但是没有一个问题可以为我要尝试做的事情提供解决方案(“错误识别”生成输出,无需msbuild或触发外部进程)。

最佳答案

原来我只需要在输出字符串中使用换行符。另请注意,错误行是基于0的数组,因此0 =第1行。

            pane.OutputTaskItemString("I:\\LLVM_BUILD\\VC12\\64\\Release\\bin\\test.cpp(12,2) :  error: void function 'functionTest' should not return a value [-Wreturn-type]\n return 0;\n", VSTASKPRIORITY.TP_HIGH, VSTASKCATEGORY.CAT_BUILDCOMPILE,
"Error", (int)Microsoft.VisualStudio.Shell.Interop._vstaskbitmap.BMP_COMPILE, "I:\\LLVM_BUILD\\VC12\\64\\Release\\bin\\test.cpp", 11, "error: void function 'functionTest' should not return a value [-Wreturn-type] return 0");

pane.FlushToTaskList();

这样,您应该在输出 Pane 和错误列表中获得可单击的错误(显然,您需要自己解析每个对OutputTaskItemString的调用的错误信息)。

关于compiler-construction - 在Visual Studio 2013中写入输出构建 Pane +错误列表,无需双击即可使用msbuild/new进程双击条目以出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23322295/

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