Лучший способ сделать это поддерживаемым способом - использовать vswhere
.Следующий фрагмент скрипта установит vswhere (используя chocolatey), а затем запросит реестр установщика, где можно найти msbuild.Замените -latest
более конкретной версией, если вам нужно:
choco install vswhere
for /f "tokens=*" %%i in ('vswhere -latest -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe -nologo') do set msbuildpath="%%i"
echo "##vso[task.setvariable variable=msbuildpath]%msbuildpath%"
Это сохранит путь к msbuild для переменной окружения %msbuildpath%
, а также переменную конвейера (для этого этапа) $(msbuildpath)
.
Затем вы можете либо использовать задачу командной строки второго запуска и передать $(msbuildpath)
, либо вы можете просто вызвать MsBuild из того же фрагмента скрипта, упомянутого выше, вызвав:
%msbuildpath%
Это гарантирует, что ваш сценарий будет работать, даже если Microsoft обновит свои изображения и переместит некоторые вещи (что происходит).
Вы также можете получить vswhere, используя wget
или invoke-webrequest -outfile
из следующего местоположения:
https://github.com/Microsoft/vswhere/releases/latest/download/vswhere.exe
Другие выборки для синтаксиса vswhere
можно найти в вики проекта , включая синтаксис для PowerShell.