[msbuild] msbuild로 exec 작업 출력을 얻는 방법

exec 작업으로 간단한 출력을 얻으려고합니다 msbuild.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="Test">
    <Exec Command="echo test output">
      <Output TaskParameter="Outputs" ItemName="Test1" />
    </Exec>
    <Exec Command="echo test output">
      <Output TaskParameter="Outputs" PropertyName="Test2" />
    </Exec>
    <Message Text="----------------------------------------"/>
    <Message Text="@(Test1)"/>
    <Message Text="----------------------------------------"/>
    <Message Text="$(Test2)"/>
    <Message Text="----------------------------------------"/>
  </Target>
</Project>

그러나 다음 출력을 얻으십시오.

  echo test output
  test output
  echo test output
  test output
  ----------------------------------------
  ----------------------------------------
  ----------------------------------------

스크립트에서 출력을 얻으려면 어떻게해야합니까?



답변

모두 좋은 소식입니다! 이제 <Exec>.NET 4.5 부터 출력을 캡처 할 수 있습니다 .

이렇게 :

<Exec ... ConsoleToMSBuild="true">
  <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" />
</Exec>

간단히:

  • 추가 ConsoleToMsBuild="true"귀하에 <Exec>태그
  • 태그 의 ConsoleOutput매개 변수를 사용하여 출력 캡처<Output>

드디어!

여기에 문서화


답변

나는 MSBuild의 한계와 작동해야하지만 작동하지 않는 것 (적어도 모든 상황에서)에 대해 너무 좌절감을 느끼는 지점에 이르렀습니다. , C #에서 사용자 지정 빌드 작업을 만듭니다.

다른 제안 중 어느 것도 효과가 없다면 확실히 그렇게 할 수 있습니다.


답변

출력 줄이 세미콜론으로 구분되는 일반 문자열이 아닌 배열과 같은 구조로 출력을 캡처하려면 PropertyName 대신 ItemName 을 사용하십시오 .

<Exec ... ConsoleToMSBuild="true">
  <Output TaskParameter="ConsoleOutput" ItemName="OutputOfExec" />
</Exec>


답변

말하자면 출력을 파일로 파이프하고 다시 읽을 수 있습니다.

echo test output > somefile.txt


답변