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