Как использовать C # 7 с Visual Studio 2015?

147

Visual Studio 2017 (15.x) поддерживает C # 7, но как насчет Visual Studio 2015 (14.x)?

Как я могу использовать C # 7 с ним?

Луис Тейджон
источник
2
Перейдите по
Сунил Кумар
8
@SunilKumar: Это позволяет им в VS 15 (то есть VS 2017). В нем не упоминается VS 2015 (то есть VS 14).
Джон Скит

Ответы:

162

Вы можете заменить компилятор, поставляемый с Visual Studio, для версии с поддержкой C # 7, установив пакет Nuget Microsoft.Net.Compilers :

Ссылка на этот пакет приведет к тому, что проект будет построен с использованием конкретной версии компиляторов C # и Visual Basic, содержащихся в пакете, в отличие от любой установленной версии системы.

Нет никаких признаков того, что я вижу на странице пакета, является ли это официально поддерживаемым в Visual Studio 2015. Мои неполные тесты пока показывают, что это работает, но не безболезненно - код C # 7 компилируется, но подчеркнут красным Волнистая строка, указывающая на синтаксическую ошибку: СкриншотОбратите внимание, что вам также потребуется установить пакет Nuget System.ValueTuple, чтобы использовать новые функции кортежей значений C # 7.

Стивен Кеннеди
источник
9
В этом случае было бы лучше использовать VIsual Studio Code или просто установить сообщество Visual Studio 2017
Panagiotis Kanavos
3
Это хорошо знать. Таким образом, вы можете постепенно переключать некоторые проекты на VS2017, зная, что в случае необходимости другие разработчики могут работать с вашим кодом.
ecth
10
Обратите внимание, что я теоретически согласен с @PanagiotisKanavos, если вы, сотрудник средней или большой компании VS2017 Community Edition, вероятно, недопустимы для использования в качестве лицензиата. Я считаю, что VS Code - это правда FOSS.
Крис Марисич
6
Я установил последний ньюгетер Microsoft.Net.Compilers в свои проекты Xamarin.Forms UWP, Windows 8.1 и Windows Phone 8.1, а также последний ньюгет System.ValueTuple (плюс последняя ревизия всех других нюгетеров System. * Series) , Кажется, все работает нормально во время сборки и выполнения. (Я не пробовал каждый закоулок набора функций отладчика.)
optikos
13
VS2015.3, компилирование для .NET 4.7.1: Microsoft.Net.Compilers is only supported on MSBuild v15.0 and above- Мне нужно было использовать эту версию: nuget.org/packages/Microsoft.Net.Compilers/2.4.0 для сборки, затем она работала нормально. :)
САПР bloke
5

В моем случае установка только Microsoft.Net.Compilers не работала. Вместо этого я должен был сделать следующее:

  1. Установите Microsoft.CodeDom.Providers.DotNetCompilerPlatform для проекта ( Инструменты => Диспетчер пакетов NuGet => Управление пакетами Nuget для решения ... ) и установите Microsoft.CodeDom.Providers.DotNetCompilerPlatform .
  2. Установите последние версии Microsoft.Net.Compilers для проекта.
  3. Установите любой другой пакет NuGet для последней функции C #, которую вы хотите использовать. В моем случае моей целью было использование Tuples, поэтому я установил System.ValueTuple и работал нормально.

Но все же обратите внимание, что коды C #, которые не известны компилятору по умолчанию в Visual Studio 2015, по-прежнему будут иметь красные загогулины.

yibe
источник