2016-09-21 7 views
2

У меня есть сервер TFSBuild 2013, с которого мы сейчас пытаемся построить проекты UWP, но мы не можем заставить его использовать правильную версию MSBuild.TFSBuild 2013 не может изменить версию msbuild

Симптомы:

При построении UWP проектов, мы получаем много ошибок, как это: C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ AppxPackage \ Microsoft.AppXPackage. Цели (283): было произведено числовое сравнение на «10.0.11000.0», которое оценивается как «10.0.11000.0» вместо числа, в условии «$ (TargetPlatformVersion)»> «10 .0.11000.0».

Многие сообщения изобилуют этой ошибкой, и все сообщают вам, что TFS Build использует правильную версию MSBuild. И в этом и заключается проблема. Мы не можем заставить сервер сборки использовать правильную версию.

Вот что мы пытались (построить определения используется шаблон TfvcTemplate.12.xaml):

  • Установка 2015 сборки инструментов (обновление 3) на сервере сборки
  • Установка VS2015 на сервере сборки (Yuck)
  • Различные комбинации параметров MSBuild в определении построения. (/tv:14.0 & /p:VisualStudioVersion=14.0)
  • Включение Microsoft.Net.Compilers NuGet пакет
  • Редактирование шаблона TfvcTemplate.12.xaml и настройки "Run MSBuild" шаг, чтобы установить "ToolsVersion" на " 14,0" . (Обратите внимание: в этой версии шаблона нет параметра «ToolsPath», поэтому я не могу этого сделать).
  • Установка ToolsVersion = «14,0» в каждом файле не .csproj

Независимо от того, что мы меняемся, мы не можем получить сборки агента использовать версию MSBuild 14.0.

Странно, nuget, кажется, находит правильную версию при восстановлении пакета. В журналах мы видим это при запуске команды восстановления nuget.exe: автоматическое обнаружение MSBuild: с использованием версии msbuild '14 .0 'из' C: \ Program Files (x86) \ MSBuild \ 14.0 \ bin '.

Но дальше в журналах, где все ошибки начинают мы видим это (примечание: неправильные инструменты версия): C: \ Program Files (x86) \ MSBuild \ 12.0 \ Bin \ MSBuild.exe/NOLOGO/noconsolelogger «C: \ Строит ...» [СНиП]

Любая помощь или предложения с благодарностью приняты - я в моем конце остроумия :)

+0

Можете ли вы построить свой проект с помощью командной строки MSBuild вручную на вашей машине агента сборки? Вы указываете аргумент MSBuild/p: AppxBundlePlatforms = "$ (BuildPlatform)"/p: AppxPackageDir = "$ (Build.BinariesDirectory) \ AppxPackages \\"/p: AppxBundle = Всегда в определении вашей сборки? –

+0

Да, построение решения с использованием VS2015 на сервере отлично работает. – MercifulGiraffe

+0

Мы были бы счастливы, если бы мы могли просто заставить TFSBuild всегда использовать 14 версию MSBuild. Можем ли мы заставить его каким-то образом сделать это по умолчанию? – MercifulGiraffe

ответ

1

я, наконец, сдался, пытаясь сделать это поведение с конфигурацией, но ему удалось чтобы это работало на машине сборки, взломав реестр.

Я изменил следующие ключи реестра:

HKLM\SOFTWARE\Wow6432Node\Microsoft\MSBuild\12.0\MSBuildOverrideTasksPath 
HKLM\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\12.0\MSBuildToolsPath 

В обоих случаях я изменил значение

от:

C:\Program Files (x86)\MSBuild\12.0\bin\ 

к:

C:\Program Files (x86)\MSBuild\14.0\bin\ 

Отказ от ответственности: Я не знаю, что еще влияет на это, но он получил наши сборки, используя правильную версию MSBuild, и ограничен в масштабе сервера сборки.

Смежные вопросы