Подтвердить что ты не робот

Как получить вывод задачи exec с помощью msbuild

Я пытаюсь получить простой вывод с помощью задачи 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
  ----------------------------------------
  ----------------------------------------
  ----------------------------------------

Как я могу получить вывод с помощью script?

4b9b3361

Ответ 1

Хорошие новости всем! Теперь вы можете захватывать вывод из <Exec> с .NET 4.5.

Вот так:

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

Просто:

  • Добавьте ConsoleToMsBuild="true" в тэг <Exec>
  • Захват вывода с использованием параметра ConsoleOutput в теге <Output>

Наконец-то!

Документация здесь

Ответ 2

Я дошел до такой степени, что меня так расстроило ограничения MSBuild и того, что должно было работать, но не (по крайней мере, не в каждом контексте), что в значительной степени в любое время, когда мне нужно делать что-либо с MSBuild, я создаю задачу пользовательской сборки в С#.

Если ни одно из других предложений не работает, вы можете сделать это таким образом.

Ответ 3

Вы можете передать вывод в файл, так сказать, и прочитать его обратно.

echo test output > somefile.txt