Как вызвать msbuild из командного файла из msbuild из команды build? - PullRequest
2 голосов
/ 16 декабря 2011

Я использую Team Build (2010) для вызова сценария msbuild с задачей Exec, которая вызывает пакетный файл, который, в свою очередь, вызывает msbuild. Как это:

<Exec Command="BatchFileThatCallsMSBuild.bat" />

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

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

'msbuild' is not recognized as an internal or external command, operable program or batch file.

Как настроить необходимую среду в задаче exec?

Я попытался изменить команду на:

<Exec Command="%22$(VS100COMNTOOLS)..\..\VC\vcvarsall.bat%22&amp;BatchFileThatCallsMSBuild.bat" />

но без кубиков, все же msbuild не найден.

1 Ответ

2 голосов
/ 17 декабря 2011

Ответ, который я придумал, заключался в том, чтобы воспользоваться многострочной командной строкой из редко демонстрируемой в сети командной строки для задачи Exec.

<Exec Command="call &quot;%VS100COMNTOOLS%..\..\VC\vcvarsall.bat&quot; x86
    set AnotherEnvVar=$(RandomMSBuildProperty)
    call BatchFileThatCallsMSBuild.bat
    type file_with_output_from_the_msbuilds_in_the_batchfile.log" />

Это позволило мне настроить базовую среду сборки (вызов vcvarsall), передать свойство msbuild в среду Exec, где его могли видеть пакетные сборки, вызвать пакетный файл и даже вытащить скрытый вывод msbuild до уровень задачи Exec для более четкой регистрации в Team Build.

Я не в восторге от необходимости вставлять еще одну ссылку на эту конкретную версию VS в мой код, но пока она работает.

...