2017-03-22 49 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