Шаблон сборки TFS 2015 не может собрать функции C#7
Мы используем TFS 2015 в качестве нашего сервера сборки для непрерывной интеграции с определениями сборки xaml. TfvcTemplate12.xaml - это шаблон процесса сборки, который мы используем. Когда вышла Visual Studio 2015, мы обновили шаблоны сборки, установив аргументы MSBuild в
/p:VisualStudioVersion=14.0
После этого сервер сборки смог успешно создавать проекты с функциями C# 6. Теперь, когда Visual Studio 2017 был выпущен вместе с C# 7, я подумал, что могу просто установить Visual Studio 2017 на сервере сборки и обновить аргумент MSBuild для использования v15.0. Кажется, это не работает, агент сборки все еще использует MSBuild v14.0, который не может скомпилировать новые функции в C# 7. В дальнейших попытках я попытался установить версию инструментов на 15.0
/tv:15.0
Но это тоже не сработало. Сборка завершается с очень общим сообщением об ошибке и ничего полезного, чтобы помочь мне разобраться в этом. Кто-нибудь получил это на работу?
Exception Message: MSBuild error 1 has ended this build. You can find more specific information about the cause of this error in above messages. (type BuildProcessTerminateException)
Exception Stack Trace: at System.Activities.Statements.Throw.Execute(CodeActivityContext context)
at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
at System.Activities.ActivityInstance.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)
at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)
4 ответа
Как уже упоминалось во многих предлагаемых ответах, использование одного из стандартных шаблонов процесса сборки XAML для использования MSBuild v15 просто невозможно без изменения самого шаблона вручную.
Я смог успешно заставить это работать, изменив DefaultTemplate.11.1.xaml и ища активность MSBuild. Там вам нужно вручную установить в свойстве ToolPath имя файла, где установлен MSBuild v15.
ToolPath="C:\Program Files (x86)\Visual Studio\2017\<more path>\msbuid.exe"
Я могу гарантировать, что это будет работать для строительных проектов. Не так уверен насчет выполнения тестовых случаев. Другие упоминали, что это не сработает, но я сам на самом деле не пробовал.
С момента написания этого вопроса я начал переходить от сборок XAML к новой системе сборки, которая предлагает гораздо больше настроек в процессе сборки и на самом деле намного проще в использовании / понимании, если вы читаете документацию.
MSBuild V14.0 не знает, что такое v15.0.
Вам нужно будет установить инструменты сборки Visual Studio 2017.
Я обнаружил аналогичную проблему, попытался собрать проекты VS 2017 на TFS 2013, и наконец решил проблему.
Решение состоит в том, чтобы использовать старый шаблон процесса сборки (XAML), такой как шаблон сборки по умолчанию из TFS 2012, и установить ToolPath в шаблоне так, чтобы он указывал путь MsBuild.exe в TFS 2013. Я думаю, что это решение также должно работать для TFS 2015.
Он не может распознать 15.0 в сборке xaml. Поддерживаемый путь вперед - это действительно использовать новую инфраструктуру агента сборки.
Вы можете выбрать опцию Последняя для Visual Studio. Пожалуйста, обратитесь к: https://www.visualstudio.com/en-us/docs/build/steps/build/visual-studio-build