我的项目有一个MSBuild目标,它运行一个生成一些文件的工具:
<Exec Command="$(MyTool) @(Content)"
ConsoleToMSBuild="true"
IgnoreExitCode="False"
LogStandardErrorAsError="true" />
如果该工具在其输入中检测到某些错误(@(Content)
文件),则会将错误输出到标准错误。这使得MSBuild使构建失败,Visual Studio在错误列表中显示此文本 - 所有这些都很棒!
现在,该工具还知道错误所在的确切文件和行,并且我希望错误列表显示该错误,并且双击将导致该文件。如果该工具是MSBuild任务而不是独立的exe,我可以调用TaskLoggingHelper.LogError(..., file, lineNumber, ...)
。如何使用独立的exe工具完成相同的操作?我是否需要编写一个解析工具错误的包装器任务?是否有这样的任务可用?
答案 0 :(得分:3)
我不知道有任何现成的机制可以做到这一点,但请参阅例如Viewing PowerShell's Select-String output in Visual Studio:你需要做的就是让你的输出与VS所期望的相匹配,你自动获得所需的行为。 VS寻找像
这样的消息<file>(<line>): error <code>: <message>
例如msbuild,编译器,链接器消息都遵循这种格式。因此,如果您的自定义工具输出格式化,它将显示在错误列表中,您可以双击它以导航到指定的文件和行。