MaxSter
@MaxSter
Software engineer

Почему TFS build не подставляет значение макроса $(VSInstallDir)?

Есть довольно интересная проблемка, которую ну никак не получается решить. Имеем build-машину где собираются билды. Недавно внес изменения для запуска утилиты editbin.exe с параметром LARGEADDRESSAWARE в конце каждого билда, которая расположена в папке C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin (понятно, что путь к папке может меняться). В build прожекте добавил новый target:
<Exec command="&quot;$(VSInstallDir)\VC\bin\editbin.exe&quot; /LARGEADDRESSAWARE &quot;Manager.exe&quot;"/>

Если запустить MSBuild локально с этим таргетом на этой же машине, то все работает. Гуд! Но при чекине и при попытке собраться билд падает с такой ошибкой:
The command ""\VC\bin\editbin.exe"" exited with code 3.
Как видно, TFS build не подставил значение $(VSInstallDir) макроса. Как лечить?

UPD:
Я выяснил, что на билд машине есть вот такой замечательный файлик: C:/Program Files/MSBuild/Microsoft/VisualStudio/TeamBuild/Microsoft.TeamFoundation.Build.targets
В нем есть определение
<VSINSTALLDIR Condition="'$(VSINSTALLDIR)'=='' and '$(NetSamplePath)'!=''">$(NetSamplePath)\..\..<VSINSTALLDIR>

так вот как я понимаю $(NetSamplePath) почему-то пустой. Google почти ничего не знает про этот макрос.
  • Вопрос задан
  • 268 просмотров
Решения вопроса 1
В свойствах билдплана можно указывать дополнительные аргументы для передачи MSBuild-у при запуске сборки.
Process->Build process parameters->5. Advances->MSBuild arguments
С помощью аргументов можно задать значения MSBuild-пропертей таким образом:
/p:ИмяСвойства=Значение
Я думаю и VSInstallDir задать получится. Возможно значение этого свойства подтягивается из переменных окружения, а на билдсервере они не заданы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы