Переменная среды 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, присутствующей на агенте.

Другие вопросы по тегам