Переменная среды MSBUILD.EXE
Команда,
У меня есть сценарий powershell, который вызывает MSBUILD.exe для запуска сборки в конвейере сборки Devops Azure для его упаковки. В настоящее время скрипт использует vs12. Я столкнулся с ошибкой ниже, когда он работал с 12.
ошибка MSB4019: импортированный проект "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" не найден. Убедитесь, что путь в объявлении правильный, и что файл существует на диске.
Поэтому, по предложению одного из моих коллег, мне пришлось изменить его с 12 на 15 и жестко закодировать следующий путь для MSBUILD.
C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \
И сборка работает нормально. Итак, теперь я хотел бы использовать ENV для этого пути в моем скрипте PowerShell, чтобы он динамически его подбирал.
Ниже приведена функция, которая запускает сборку MS.
Function Get-MSBuild {
$lib = [System.Runtime.InteropServices.RuntimeEnvironment]
$rtd = $lib::GetRuntimeDirectory()
Join-Path $rtd msbuild.exe}
Выше код не работает на моем агенте, и я столкнулся с файлом существует на диске ошибка. и я заменил $ lib на путь msbuild. как ниже.
Function Get-MSBuild {
$lib = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\"
Join-Path $lib msbuild.exe
}
Приведенный выше код работает нормально, но я хочу динамически генерировать путь, используя env или некоторую предопределенную переменную окружения.
Теперь мой вопрос заключается в том, есть ли предопределенная переменная среды для динамического получения пути для
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\"
Заранее спасибо за помощь.
1 ответ
Мне удалось вызвать MSBUILD.exe прямо в моем коде с переменной env, присутствующей на агенте.