Поделиться через


Настройка версии языка C#

Сведения, приведенные в этой статье, относятся к .NET 5 и более поздним версиям. Сведения о проектах UWP см. в статье о выборе версии UWP.

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

Документация определяет любую функцию, впервые представленную в последних трех версиях языка или в текущих общедоступных предварительных версиях.

Совет

Чтобы узнать, когда функция впервые появилась в C#, ознакомьтесь со статьей по журналу версий языка C#.

В Visual Studio параметр изменения языковой версии через пользовательский интерфейс отключен, так как версия по умолчанию соответствует целевой платформе проекта (TFM). Эта конфигурация по умолчанию обеспечивает совместимость между языковыми функциями и поддержкой среды выполнения. Чтобы изменить версию языка в Visual Studio, измените целевую платформу проекта.

Например, изменение целевого объекта TFM (например, с .NET 6 на .NET 9) обновляет версию языка соответствующим образом с C# 10 до C# 13. Этот подход предотвращает проблемы совместимости среды выполнения и сводит к минимуму непредвиденные ошибки сборки из-за неподдерживаемых языковых функций.

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

Предупреждение

Не устанавливайте LangVersion для элемента latestзначение . Параметр означает, latest что установленный компилятор использует последнюю версию. Значение latest может меняться с компьютера на компьютер, что делает сборки ненадежными. Кроме того, он включает функции языка, для которых могут потребоваться функции среды выполнения или библиотеки, не включенные в текущий пакет SDK.

Если необходимо явно указать версию C#, это можно сделать несколькими способами:

Совет

Языковая версия в Visual Studio отображается на странице свойств проекта. На вкладке "Сборка" на панели "Дополнительно" отображается выбранная версия.

Чтобы узнать, какую версию языка вы используете в данный момент, поставьте #error version (с учетом регистра) в коде. Эта pragma заставляет компилятор выдавать ошибку с кодом CS8304 с сообщением, которое содержит версию компилятора и текущую выбранную версию языка. Дополнительные сведения об этой прагме см. в #error (справочник по C#).

Изменение файла проекта

Задайте версию языка в файле проекта. Файл проекта — это *.csproj файл в корневой папке проекта. Например, если требуется явный доступ к функциям предварительной версии, добавьте элемент, как показано в следующем примере:

<PropertyGroup>
   <LangVersion>preview</LangVersion>
</PropertyGroup>

Значение preview использует последнюю доступную предварительную версию языка C#, поддерживаемую вашим компилятором.

Настройка нескольких проектов

Чтобы настроить несколько проектов C#, создайте файл Directory.Build.props , как правило, в каталоге решения, который содержит <LangVersion> элемент. Добавьте следующий параметр в файл Directory.Build.props :

<Project>
 <PropertyGroup>
   <LangVersion>preview</LangVersion>
 </PropertyGroup>
</Project>

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

Замечание

Версии C# и Visual Basic отличаются. Не используйте файл Directory.Build.Props для папки, в которой вложенные каталоги содержат проекты для обоих языков. Версии не соответствуют.

Справочник по версиям языка C#

Важный

Использование более новой версии языка C#, чем версия, связанная с целевой платформой TFM, не поддерживается.

В следующей таблице показаны все текущие версии языка C#. Старые компиляторы могут не понимать каждое значение. Если установить последний пакет SDK для .NET, у вас есть доступ ко всем перечисленным.

Значение Значение
preview Компилятор допускает использование любого допустимого синтаксиса языка из последней предварительной версии.
latest Компилятор принимает синтаксис из последней выпущенной версии компилятора (включая дополнительный номер версии).
latestMajor
или default
Компилятор принимает синтаксис из последней основной версии компилятора.
14.0 Компилятор принимает только синтаксис, включенный в C# 14 или более поздней версии.
13.0 Компилятор принимает только синтаксис, включенный в C# 13 или более поздней версии.
12.0 Компилятор принимает только синтаксис, включенный в C# 12 или ниже.
11.0 Компилятор принимает только синтаксис, включенный в C# 11 или ниже.
10.0 Компилятор принимает только синтаксис, включенный в спецификацию C# 10 или более ранних версий.
9.0 Компилятор принимает только синтаксис, включенный в спецификацию C# 9 или более ранних версий.
8.0 Компилятор принимает только синтаксис, включенный в спецификацию C# 8.0 или более ранней версии.
7.3 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.3 или более ранней версии.
7.2 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.2 или более ранней версии.
7.1 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.1 или более ранней версии.
7 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.0 или более ранней версии.
6 Компилятор принимает только синтаксис, включенный в спецификацию C# 6.0 или более ранней версии.
5 Компилятор принимает только синтаксис, включенный в спецификацию C# 5.0 или более ранней версии.
4 Компилятор принимает только синтаксис, включенный в спецификацию C# 4.0 или более ранней версии.
3 Компилятор принимает только синтаксис, включенный в спецификацию C# 3.0 или более ранней версии.
ISO-2
или 2
Компилятор принимает только синтаксис, включенный в спецификацию ISO/IEC 23270:2006 C# (2.0).
ISO-1
или 1
Компилятор принимает только синтаксис, включенный в спецификацию ISO/IEC 23270:2003 C# (1.0/1.2).