BuildActivity игнорирует ToolsVersion

У меня есть сборка непрерывной интеграции, работающая на BuildAgent, которую я не могу нормально работать. Недавно я изменил нашу базу кода на С# 6.0 и сменил проекты на ToolsVersion 14.

Я установил Visual Studio 2015 на сервере сборки (TFS 2012). Если я теперь проверю код С# 6.0, сборка завершится неудачно в первом проекте ( "$" является неожиданным или что-то ")

Строка BuildTemplate - "DefaultTemplate.11.1" Если я проверю файлы журнала, сборка вызывает неправильный файл csc.exe(C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Csc.exe)

если я запускаю исполняемый файл MSBuild/14.0/Bin/MSBuild с проектом без каких-либо переключений, сборка выполнена успешно. Почему TFS BuildAgent не использует ToolsVersion и как я могу получить TFS 2012 для создания моего решения Visual Studio 2015

Если я добавлю MSBuildArgument/tv:14.0, он все равно не работает. Как он называет версию 12 MSBuild, которая является частью .NET Framework 4.6 Framework, которая поставляется с Visual Studio 2015.

Изменение инструментальной части действия MSBuild действительно приводит к работе Build, но сплевывает пули, если я пытаюсь запустить свой UnitTest. Я получаю исключение dlls "Microsoft.VisualStudio.TestPlatform.Utilities.dll". (VS2012 также установлен на сервере сборки).

UPDATE: У меня теперь есть другая ошибка с моими модульными тестами:

TF900548: An error occurred publishing the Visual Studio test results.
Details: 'Method not found:
'System.Collections.Generic.IEnumerable<System.String>
Microsoft.VisualStudio.TestPlatform.Utilities.InferSettingsHelper.MergeRunSettingsAndFindCompatibleSources(Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture
ByRef,
 Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion
 ByRef, System.String, System.String,
 System.Collections.Generic.IDictionary`2<System.String,System.Collections.Generic.KeyValuePair`2<Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture,Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion>>,
 System.Xml.XPath.IXPathNavigable, System.String ByRef)'.'

Ответ 1

Для тех из нас, кто не живет внутри, строит шаблоны каждый день здесь шаги, которые заставили его работать для меня:

Сначала найдите шаблон, связанный с вашей сборкой (если вы уже знаете, где его найти, пропустите пару шагов).

  • Щелкните правой кнопкой мыши определение сборки и выберите Edit build definition

  • Выберите вкладку Process, и вы увидите имя шаблона (скорее всего, это DefaultTemplate, если вы не настроили его). В правом нижнем углу нажмите Show details, чтобы увидеть путь к шаблону.

введите описание изображения здесь

  • Перейдите на вкладку Home в разделе "Проводник" и нажмите Source control explorer

введите описание изображения здесь

  • Найдите файл шаблона и дважды щелкните его, чтобы изменить его. Это должно выглядеть так графически. Прокрутите, пока не найдете Run MSBuild for Project

введите описание изображения здесь

  • Нажмите на этот элемент, который немедленно откроет свойства.

введите описание изображения здесь

  • Нажмите на маленькую иконку справа - не пытайтесь ввести ее, потому что она, вероятно, взорвется и сбой Visual Studio.

  • Введите QUOTES следующие "C:\Program Files (x86)\MSBuild\14.0\bin"

введите здесь описание изображения

СЕЙЧАС НА САМУЮ ВАЖНУЮ ЧАСТЬ

Для меня Run MSBuild for Project был в двух местах.

Итак, я просто повторил вышеуказанные шаги в обоих местах, а затем после того, как я проверил файл .xaml, моя сборка FINALLY работала нормально.

Вам может потребоваться переработать агент/контроллер из инструмента TFS.

введите описание изображения здесь

Ответ 2

Изменить изменение шаблона Активность msbuild ToolPath на "MSBuild/14.0/Bin/MSBuild"

Ответ 3

См. ответ от Marson.

Использование шаблона процесса TfvcTemplate.12.xaml с аргументом /tv:14.0 для меня работало.

Ответ 4

использовать msbuild aruguments/p:VisualStudioVersion=14.0