2017-03-22 57 views
2

我的项目有它运行其中产生了一些文件的工具一个MSBuild目标:从源文件/行构建时工具显示错误

<Exec Command="$(MyTool) @(Content)" 
     ConsoleToMSBuild="true" 
     IgnoreExitCode="False" 
     LogStandardErrorAsError="true" /> 

如果该工具检测到其输入的一些错误(@(Content)文件),它会将错误输出到标准错误。这使MSBuild无法构建,而Visual Studio在错误列表中显示此文本 - 所有这些都很棒!

现在,该工具也知道确切的文件&行的错误是,我想错误列表显示,并双击将导致该文件。如果该工具是MSBuild任务而不是独立的exe,我可以拨打TaskLoggingHelper.LogError(..., file, lineNumber, ...)。我怎样才能完成一个独立的exe工具?我是否需要编写一个解析工具错误的包装任务?有这样的任务吗?

回答

2

我不知道任何现成的机制来做到这一点,但看到例如Viewing PowerShell's Select-String output in Visual Studio:你需要做的是让你的输出符合VS的期望,并自动获得所需的行为。 VS查找消息像

<file>(<line>): error <code>: <message> 

举例的MSBuild器,编译器的消息都坚持这一格式。因此,如果您有自定义工具输出该格式,它将显示在错误列表中,您可以双击它以导航到指定的文件和行。

+0

神圣的答案圣洁!在微软环境中拥有丰富的经验,可惜你没有在你的个人资料页面上刊登任何你的书籍(如果有的话)。 – javaLover

+0

@javaLover感谢您的花:P遗憾的是,对于您来说,几乎一切都在我的脑海中,并且用于我无法发布的项目中。尽管分享一些知识,但我尽量回答msbuild问题。 – stijn