Ответ 1
Установите .NET Framework 4.6 и Build Tools 2015 на вашем сервере сборки.
Затем переопределить ToolsVersion (/tv:14.0
) в аргументах MSBuild.
Я обновил 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 или что-то еще?
Установите .NET Framework 4.6 и Build Tools 2015 на вашем сервере сборки.
Затем переопределить ToolsVersion (/tv:14.0
) в аргументах MSBuild.
К сожалению, нет простого способа получить более старые версии 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. Скопируйте их в папку сервера. Теперь вы также сможете упаковывать/развертывать веб-проекты.
Пожалуйста, проверьте, существует ли "Запуск MSBuild для проекта" более одного раза в шаблоне процесса сборки TFS. В моем случае он существовал дважды, и мне потребовалось некоторое время, чтобы понять, почему изменения для ToolPath не принесли желаемого эффекта.