TFS не будет компилировать синтаксис строковой интерполяции

Я обновил Visual Studio 2015, когда был выпущен на прошлой неделе. Resharper предположил, что мне может понадобиться обновить следующую строку, используя string.Format:

string filePath = HttpContext.Server.MapPath(string.Format("~/App_Data/{0}.xlsx", Guid.NewGuid()));

Чтобы использовать интерполяцию строк:

string filePath = HttpContext.Server.MapPath($"~/App_Data/{Guid.NewGuid()}.xlsx");

Я сделал это, и все хорошо.

Однако я сломал сборку на TFS:

Контроллеры\MyController.cs(224): Неожиданный символ '$'

Итак, кажется, что новые функции на С# 6 не могут быть скомпилированы нашей старой, не обновленной версией TFS.

Проект по-прежнему нацелен на использование Framework 4.5, однако я не нацелен на 4.6. Я (ошибочно) предположил, что все еще нацеленность на старую инфраструктуру означает, что она может быть построена другими членами команды, которые все еще используют VS2013 вместе с нашим сервером сборки TFS.

Итак, похоже, что наша TFS нуждается в обновлении... чего-то.

Что мне нужно установить на сервере TFS, чтобы он скомпилировал этот новый синтаксис? Последняя версия .NET Framework или что-то еще?

Ответы

Ответ 2

К сожалению, нет простого способа получить более старые версии TFS, работающие с С# 6.0, без установки VS2015 на сервере сборки TFS. Если вы можете это сделать, я бы предложил это. Если по какой-либо причине вы не можете, то для меня работало следующее:

Я следовал инструкциям другого ответа, но это не помогло. Мне также пришлось отредактировать шаблон процесса сборки по умолчанию TFS (который в моем случае находится в $//BuildProcessTemplates) и изменить свойства ToolPath узлов "Запустить MSBuild для проекта" в расположение MSBuild 14.0 (обычно это C:\Program Files (x86)\MSBuild\14.0\Bin).

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

На этом этапе вы должны иметь возможность создавать проекты С# 6 с TFS, но если вы пытаетесь сделать веб-развертывание и упаковку, то еще есть еще несколько шагов.

На сервере сборки в C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0 должна быть папка Typescript и ничего больше. На вашей локальной машине с VS2015 перейдите на тот же путь. Должна быть папка Web и WebApplications. Скопируйте их в папку сервера. Теперь вы также сможете упаковывать/развертывать веб-проекты.

Ответ 3

Пожалуйста, проверьте, существует ли "Запуск MSBuild для проекта" более одного раза в шаблоне процесса сборки TFS. В моем случае он существовал дважды, и мне потребовалось некоторое время, чтобы понять, почему изменения для ToolPath не принесли желаемого эффекта.