Переменная среды MSBUILD.EXE - PullRequest
0 голосов
/ 11 декабря 2018

Team,

У меня есть сценарий powershell, который вызывает MSBUILD.exe для запуска сборки в конвейере сборки Azure devops для его упаковки.В настоящее время скрипт использует vs12.Я столкнулся с приведенной ниже ошибкой, когда он работал с vs 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 Ответ

0 голосов
/ 16 декабря 2018

Мне удалось вызвать MSBUILD.exe непосредственно в моем коде с переменной env, присутствующей на агенте.

...