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