2017-03-22 1 views
2

내 프로젝트의 일부 파일을 생성하는 도구 실행되는 MSBuild를 대상 있습니다 도구가 입력에 몇 가지 오류를 감지하면표시 오류

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

을합니다 (@(Content)를 파일)에서 오류를 표준 오류로 출력합니다. 이로 인해 MSBuild는 빌드를 실패하게되고, Visual Studio는이 텍스트를 오류 목록에 표시합니다.

이제 도구는 오류가있는 정확한 파일 & 행을 알고 오류 목록에이를 표시하고 두 번 클릭하면 파일로 연결됩니다. 이 도구가 독립 실행 형 exe가 아닌 MSBuild 작업 인 경우 TaskLoggingHelper.LogError(..., file, lineNumber, ...)으로 전화 할 수 있습니다. 어떻게 독립 실행 형 exe 도구를 사용하여 동일한 작업을 수행 할 수 있습니까? 도구의 오류를 구문 분석하는 래퍼 작업을 작성해야합니까? 그런 작업이 이미 있습니까?

답변

2

쉽게 알아볼 수있는 메커니즘을 모르지만 예를 들어 Viewing PowerShell's Select-String output in Visual Studio : VS가 예상하는대로 출력을 일치 시키면 자동으로 원하는 동작을 얻습니다. VS는 인스턴스 msbuild를, 컴파일러, 링커 메시지는 모두이 형식을 준수 들어

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

같은 메시지를 찾습니다. 따라서 사용자 정의 도구 출력 형식을 오류 목록에 표시하고 이중 클릭하여 지정된 파일과 행을 탐색 할 수 있습니다.

+0

거룩한 답변으로부터의 거룩한 답변! 마이크로 소프트 환경에서의 높은 경험으로, 귀하의 프로필 페이지에 귀하의 도서 (있는 경우)를 광고하지 않은 것은 유감입니다. – javaLover

+0

@javaLover는 꽃을 가져 주셔서 감사합니다. 불행히도 P는 거의 모든 것이 내 머리 속에 들어있어 내가 게시 할 수없는 프로젝트에 사용합니다. 나는 약간의 지식을 공유하기 위해 비록 msbuild 질문에 대답하려고 노력한다. .. – stijn