BuildActivity игнорирует ToolsVersion
У меня работает BuildAgent с непрерывной интеграцией, который не работает должным образом. Недавно я изменил нашу кодовую базу на C# 6.0 и изменил проекты на ToolsVersion 14.
Я установил Visual Studio 2015 на сервере сборки (TFS 2012). Если я сейчас проверю код C# 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 4.6 RC Framework, который поставляется с Visual Studio 2015.
Изменение ToolsPath в MSBuild Activity действительно приводит к тому, что Build работает, но плюет пулями, если я пытаюсь запустить свой UnitTest. Я получаю исключение dll "Microsoft.VisualStudio.TestPlatform.Utilities.dll". (VS2012 также устанавливается на сервере сборки).
ОБНОВЛЕНИЕ: теперь я получаю другую ошибку с моими модульными тестами:
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)'.'
4 ответа
Для тех из нас, кто не живет внутри шаблонов сборки каждый день, вот шаги, которые заставили его работать на меня:
Сначала найдите шаблон, связанный с вашей сборкой (если вы уже знаете, где его найти, пропустите пару шагов).
Просто щелкните правой кнопкой мыши определение сборки и выберите
Edit build definition
Выберите
Process
вкладка, и вы увидите название шаблона (вполне вероятно, будет DefaultTemplate, если вы не настроили его). На дальнем правом кликеShow details
чтобы увидеть путь к шаблону.
- Перейти к
Home
вкладку под Team Explorer и нажмитеSource control explorer
- Найдите файл шаблона и дважды щелкните, чтобы отредактировать его. Это должно появиться в графическом виде, как это. Прокрутите, пока не найдете
Run MSBuild for Project
- Нажмите на этот пункт, который сразу же вызовет свойства
Нажмите на маленький значок справа - не пытайтесь ввести его, потому что он, вероятно, взорвется и приведет к сбою Visual Studio.
Введите в цитаты следующее
"C:\Program Files (x86)\MSBuild\14.0\bin"
СЕЙЧАС ДЛЯ САМОЙ ВАЖНОЙ ЧАСТИ
Для меня Run MSBuild for Project
был в двух местах.
Так что я просто повторил вышеуказанные шаги в обоих местах, а затем после того, как я проверил в .xaml
файл моей сборки НАКОНЕЦ работал нормально.
Вам может понадобиться перезапустить агент / контроллер из инструмента TFS.
Изменить шаблон изменения msbuild активность ToolPath на "MSBuild/14.0/Bin/MSBuild"
Смотрите ответ Марсона.
Использование шаблона процесса сборки TfvcTemplate.12.xaml с аргументом /tv:14.0 Build сработало для меня.