Správa verzí jazyka C#

Nejnovější kompilátor jazyka C# určuje výchozí jazykovou verzi na základě cílové architektury nebo architektur projektu. Visual Studio neposkytuje uživatelské rozhraní pro změnu hodnoty, ale můžete ji změnit úpravou souboru csproj . Volba výchozího nastavení zajistí, že použijete nejnovější jazykovou verzi kompatibilní s cílovou architekturou. Získáte přístup k nejnovějším jazykovým funkcím kompatibilním s cílem projektu. Tato výchozí volba také zajišťuje, že v cílovém rozhraní nepoužíváte jazyk, který vyžaduje typy nebo chování modulu runtime. Volba novější verze jazyka, než je výchozí, může způsobit těžkou diagnostiku chyb při kompilaci a za běhu.

C# 12 se podporuje jenom v .NET 8 a novějších verzích. C# 11 je podporován pouze v .NET 7 a novějších verzích. C# 10 je podporován pouze v .NET 6 a novějších verzích.

Podrobnosti o tom, které verze .NET podporují verze sady Visual Studio, najdete na stránce kompatibility platformy Visual Studio. Na stránce kompatibility platformy Visual Studio pro Mac najdete podrobnosti o podporovaných verzích rozhraní .NET ve verzích Visual Studio pro Mac. Na stránce Mono zkontrolujte kompatibilitu jazyka C# s verzemi jazyka C#.

Defaults

Kompilátor určuje výchozí hodnotu na základě těchto pravidel:

Cíl Verze Výchozí verze jazyka C#
.NET 8.x C# 12
.NET 7.x C# 11
.NET 6.x C# 10
.NET 5.x C# 9.0
.NET Core 3.x C# 8.0
.NET Core 2.x C# 7.3
.NET Standard 2.1 C# 8.0
.NET Standard 2.0 C# 7.3
.NET Standard 1.x C# 7.3
.NET Framework vše C# 7.3

Pokud váš projekt cílí na architekturu preview , která má odpovídající jazykovou verzi Preview, je použitá jazyková verze preview. V libovolném prostředí používáte nejnovější funkce, které jsou ve verzi Preview, aniž by to mělo vliv na projekty, které cílí na vydanou verzi .NET Core.

Důležité

Nová šablona projektu pro Visual Studio 2017 přidala <LangVersion>latest</LangVersion> položku do nových souborů projektu. Pokud upgradujete cílovou architekturu pro tyto projekty, <LangVersion> nastavení může přepsat výchozí hodnotu pro novou cílovou architekturu. Nezapomeňte ze souboru projektu odebrat <LangVersion>latest</LangVersion> soubor, abyste zajistili, že váš projekt používá doporučenou verzi kompilátoru pro cílovou architekturu. Cílovou architekturu můžete aktualizovat pro přístup k novějším jazykových funkcím.

Přepsat výchozí

Pokud musíte explicitně zadat svoji verzi jazyka C#, můžete to udělat několika způsoby:

Tip

Jazykovou verzi můžete zobrazit v sadě Visual Studio na stránce vlastností projektu. Na kartě Sestavení se v podokně Upřesnit zobrazí vybraná verze.

Pokud chcete zjistit, jakou jazykovou verzi aktuálně používáte, vložte #error version do kódu malá a velká písmena. Kompilátor tak oznámí chybu kompilátoru CS8304 se zprávou obsahující používanou verzi kompilátoru a aktuální vybranou jazykovou verzi. Další informace najdete v tématu #error (Referenční dokumentace jazyka C#).

Úprava souboru projektu

Jazyková verze můžete nastavit v souboru projektu. Pokud například explicitně chcete získat přístup k funkcím ve verzi Preview, přidejte element podobný tomuto:

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

Hodnota preview používá nejnovější dostupnou jazykovou verzi jazyka C#, kterou kompilátor podporuje.

Konfigurace více projektů

Pokud chcete nakonfigurovat více projektů, můžete vytvořit soubor Directory.Build.props , obvykle v adresáři řešení, který obsahuje <LangVersion> prvek. Do souboru Directory.Build.props přidejte následující nastavení:

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

Sestavení ve všech podadresářích adresáře obsahujícího tento soubor teď používají verzi Preview jazyka C#. Další informace najdete v tématu Přizpůsobení sestavení.

Referenční dokumentace jazyka C#

V následující tabulce jsou uvedeny všechny aktuální jazykové verze jazyka C#. Starší kompilátory nemusí rozumět každé hodnotě. Pokud nainstalujete nejnovější sadu .NET SDK, máte přístup ke všemu uvedenému.

Hodnota Význam
preview Kompilátor přijímá veškerou platnou syntaxi jazyka z nejnovější verze Preview.
latest Kompilátor přijímá syntaxi z nejnovější vydané verze kompilátoru (včetně podverze).
latestMajor
nebo default
Kompilátor přijímá syntaxi z nejnovější vydané hlavní verze kompilátoru.
12.0 Kompilátor přijímá pouze syntaxi, která je součástí jazyka C# 12 nebo nižší.
11.0 Kompilátor přijímá pouze syntaxi, která je součástí jazyka C# 11 nebo nižší.
10.0 Kompilátor přijímá pouze syntaxi, která je součástí jazyka C# 10 nebo nižší.
9.0 Kompilátor přijímá pouze syntaxi, která je součástí jazyka C# 9 nebo nižší.
8.0 Kompilátor přijímá pouze syntaxi, která je součástí C# 8.0 nebo nižší.
7.3 Kompilátor přijímá pouze syntaxi, která je součástí jazyka C# 7.3 nebo nižší.
7.2 Kompilátor přijímá pouze syntaxi, která je součástí jazyka C# 7.2 nebo nižší.
7.1 Kompilátor přijímá pouze syntaxi, která je součástí jazyka C# 7.1 nebo nižší.
7 Kompilátor přijímá pouze syntaxi, která je součástí jazyka C# 7.0 nebo nižší.
6 Kompilátor přijímá pouze syntaxi, která je součástí jazyka C# 6.0 nebo nižší.
5 Kompilátor přijímá pouze syntaxi, která je součástí jazyka C# 5.0 nebo nižší.
4 Kompilátor přijímá pouze syntaxi, která je součástí jazyka C# 4.0 nebo nižší.
3 Kompilátor přijímá pouze syntaxi, která je součástí jazyka C# 3.0 nebo nižší.
ISO-2
nebo 2
Kompilátor přijímá pouze syntaxi, která je součástí ISO/IEC 23270:2006 C# (2.0).
ISO-1
nebo 1
Kompilátor přijímá pouze syntaxi, která je součástí ISO/IEC 23270:2003 C# (1.0/1.2).

Poznámka:

Zadání jazyka default LangVersion s hodnotou se liší od vynechání možnosti LangVersion. Určení default používá nejnovější verzi jazyka, který kompilátor podporuje, bez zohlednění cílové architektury. Například sestavení projektu, který cílí na .NET 6 z aktuální verze sady Visual Studio 2022, používá jazyk C# 10, pokud není zadán Jazyk LangVersion , ale používá jazyk C# 12, pokud je jazyk LangVersion nastavený na default.