С выходом C# 7, компания Microsoft изменила подход к выпуску новых версий языка: стали доступны минорные версии, которые понемногу расширяют его возможности. Использовать их или ждать выхода следующей мажорной версии – решать самим разработчикам. Поэтому по умолчанию поддержка промежуточных версий выключена. |
Visual Studio 2019.3 (версия 16.3)
С 3 обновлением Visual Studio 2019 стала доступна 8 версия языка C#, которая требует поддержку со стороны платформы. Поэтому Visual Studio 2019 стала автоматически выставлять доступную версию языка в зависимости от выбранной в качестве цели платформы.
- .NET Framework (все версии) – C# 7.3
- .NET Standard 2.0 и предыдущие – C# 7.3
- .NET Standard 2.1 – C# 8
- .NET Core 2.x и предыдущие – C# 7.3
- .NET Core 3.x – C# 8
- .NET 5 и новее – C# 9
При этом выбор версии языка в диалоге Advanced Build Setting отключен и дополнен поясняющим сообщением:

Единственный способ изменить версию языка – самостоятельно установить её в настройках проекта. Для этого необходимо вручную отредактировать соответствующий файл .csproj, добавив в него или изменить значение следующего свойства:
1 2 3 | < PropertyGroup >
< LangVersion > версия языка </ LangVersion >
</ PropertyGroup >
|
Расположение этого свойства зависит файла проектка, который, в свою очередь, зависит от платформы на которую нацелен проект. Рассмотрим на примере установки 9 версии языка:
- .NET Core / .NET Standard / .NET 5 и новее
1 2 3 4 5 6 7 8 9 | < Project Sdk = "Microsoft.NET.Sdk" >
< PropertyGroup >
< OutputType >Exe</ OutputType >
< TargetFramework >netcoreapp2.1</ TargetFramework >
< LangVersion >9.0</ LangVersion >
</ PropertyGroup >
</ Project >
|
1 2 3 4 5 6 7 8 9 10 11 | <? xml version = "1.0" encoding = "utf-8" ?>
...
< PropertyGroup >
...
< TargetFrameworkVersion >v4.8</ TargetFrameworkVersion >
< LangVersion >9.0</ LangVersion >
...
</ PropertyGroup >
...
< Import Project = "$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</ Project >
|
В качестве номера версии можно использовать следующие значения:
- номер необходимой версии языка в формате Major.Minor. Например: 9.0 – настраивает проект на использование указанной версии языка.
- default – разрешает использовать последнюю доступную для платформы проекта мажорную версию.
- latest – позволит использовать все новые минорные и мажорные версии, которые станут доступны для платформы проекта автоматически по мере их выхода.
Что лучше выбрать? То что больше подходит каждому разработчику или команде в зависимости от предпочтений и условий работы.
Обратите внимание, что Visual Studio создает свой вариант свойства для каждой конфигурации в.NET Framework проектах. Если оно уже было когда-то изменено через интерфейс Visual Studio, то в файле проекта будут несколько записей вида:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<LangVersion>7.0</LangVersion>
</PropertyGroup>
Visual Studio 2019 до 3 обновления и Visual Studio 2017
Для использования минорных версий языка c Visual Studio 2017 необходимо обновить ее до версии 15.3 (Update 3) или выше. После этого появится возможность установить какая версия языка будет использоваться в проекте.
Необходимо отметить, что данная настройка находится на уровне проектов. Поэтому если в решении (solution) больше одного проекта, то каждый из них настраивается индивидуально. При этом решение может содержать проекты с различными настройками версии языка.
Свойства проекта
Чтобы открыть диалог с настройкой доступных версий, необходимо в свойствах проекта на закладке “Build” нажать на кнопку "Advanced…".

Файл проекта .csproj
Аналогично описанию для Visual Studio 2019.3.
Код на новой версии языка
Последний вариант – просто написать код, который использует возможности новой версии. При этом Visual Studio сама предложит установить эту версию или вариант latest в качестве версии языка для проекта.
