Запуск TFS с функциями С# 6.0

Недавно я начал использовать оператор nameof() С# 6.0 в моих проектах. Теперь (при регистрации, duh...) я (или лучше: агент сборки) отказался построить проект (который был компилирован локально просто отлично), потому что он не смог найти выражение nameof().

Я начал устанавливать VS 2015 на контроллере сборки, а также на сам сервер TFS, но безрезультатно. Как я могу получить обновление TFS 2013 Update 5 для создания проектов с функциями С# 6.0?

Я уже думал о редактировании BuildProcessTemplate, но мы используем шаблон по умолчанию полностью через все наши определения сборки, и я даже не знал, правильно ли это сделать.

Ответ 1

Вы можете установить "Microsoft Build Tools 2015" на машине агента сборки и настроить шаблон сборки для использования этой версии msbuild или установить Microsoft.Net.Compilers пакет NuGet в проектах, которые вы хотите создать с помощью нового компилятора.

Ответ 2

У меня была такая же проблема с TFS 2015. Мои определения сборки были в формате определения XAML - этот формат поддерживает не С# 6, даже если вы указывать /p: VisualStudioVersion = 14.0 или 15.0 для аргументов MSBuild в параметрах расширенного процесса сборки.

Вместо этого используйте новый формат сборки. В Visual Studio 2017 (да, вы можете использовать VS 2017 с TFS 2015), он доступен в разделе "Определения сборки" (обратите внимание, что ниже приведен старый раздел "Определения сборки XAML" ).

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

Если вы создаете новое определение сборки таким образом, открывается веб-сайт, где вам нужно создать шаги сборки. Бинарные файлы отображаются в разделе "Артефакты". К сожалению, я не нашел способа конвертировать определения сборки XAML в новый формат, поэтому вам нужно создать его с нуля.

На шаге Visual Studio Build убедитесь, что для поля "Версия Visual Studio" установлено значение "Последний".

Подсказка: Чтобы получить правильные файлы в ваших артефактах, вам нужно определить шаблоны Minimatch. Синтаксис здесь, в этом примере вы можете найти шаблон файла копии для развертывания веб-проекта.