Condividi tramite


Configurare la versione del linguaggio C#

Avviso

Si sconsiglia di impostare l'elemento LangVersion su latest. L'impostazione latest indica che il compilatore installato utilizza la versione più recente. Questo può cambiare da un computer a un altro, rendendo le compilazioni inaffidabili. Inoltre, abilita le funzionalità del linguaggio che potrebbero richiedere funzionalità del runtime o della libreria non incluse nell'SDK corrente.

Se è necessario specificare in modo esplicito la versione di C#, è possibile farlo in diversi modi:

Suggerimento

È possibile visualizzare la versione del linguaggio in Visual Studio nella pagina delle proprietà del progetto. Nella scheda compilazione, nel riquadro avanzate viene visualizzata la versione selezionata.

Per conoscere la versione del linguaggio in uso, inserire #error version (distinzione tra maiuscole e minuscole) nel codice. In questo modo il compilatore segnala un errore del compilatore, CS8304, con un messaggio contenente la versione del compilatore usata e la versione corrente del linguaggio selezionato. Per altre informazioni, vedere #error (Riferimenti per C#).

Modificare il file di progetto

È possibile impostare la versione del linguaggio nel file di progetto. Ad esempio, se si vuole accedere esplicitamente alle funzionalità di anteprima, aggiungere un elemento simile a questo:

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

Il valore preview usa la versione del linguaggio C# in anteprima disponibile più recente supportata dal compilatore.

Configurare più progetti

Per configurare più progetti, è possibile creare un file Directory.Build.props, in genere nella directory della soluzione, che contiene l'elemento <LangVersion>. Aggiungere l'impostazione seguente al file Directory.Build.props:

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

Le build presenti in ogni sottodirectory della directory contenente il file ora usano la versione di anteprima C#. Per altre informazioni, vedere Personalizzare la compilazione.

Informazioni di riferimento sulle versioni del linguaggio C#

La tabella seguente illustra tutte le versioni del linguaggio C# correnti. I compilatori meno recenti potrebbero non comprendere tutti i valori. Se si installa la versione più recente di .NET SDK, è possibile accedere a tutti gli elementi elencati.

Valore Significato
preview Il compilatore accetta tutte le sintassi di linguaggio valide dalla versione di anteprima più recente.
latest Il compilatore accetta la sintassi dalla versione rilasciata più recente del compilatore (inclusa la versione secondaria).
latestMajor
o default
Il compilatore accetta la sintassi dalla versione principale più recente rilasciata del compilatore.
13.0 Il compilatore accetta solo la sintassi inclusa in C# 13 o versione precedente.
12.0 Il compilatore accetta solo la sintassi inclusa in C# 12 o versione precedente.
11.0 Il compilatore accetta solo la sintassi inclusa in C# 11 o versione precedente.
10.0 Il compilatore accetta solo la sintassi inclusa in C# 10 o versione precedente.
9.0 Il compilatore accetta solo la sintassi inclusa in C# 9 o versione precedente.
8.0 Il compilatore accetta solo la sintassi inclusa in C# 8.0 o versione precedente.
7.3 Il compilatore accetta solo la sintassi inclusa in C# 7.3 o versione precedente.
7.2 Il compilatore accetta solo la sintassi inclusa in C# 7.2 o versione precedente.
7.1 Il compilatore accetta solo la sintassi inclusa in C# 7.1 o versione precedente.
7 Il compilatore accetta solo la sintassi inclusa in C# 7.0 o versione precedente.
6 Il compilatore accetta solo la sintassi inclusa in C# 6.0 o versione precedente.
5 Il compilatore accetta solo la sintassi inclusa in C# 5.0 o versione precedente.
4 Il compilatore accetta solo la sintassi inclusa in C# 4.0 o versione precedente.
3 Il compilatore accetta solo la sintassi inclusa in C# 3.0 o versione precedente.
ISO-2
o 2
Il compilatore accetta solo la sintassi inclusa nella specifica ISO/IEC 23270:2006 C# (2.0).
ISO-1
o 1
Il compilatore accetta solo la sintassi inclusa nella specifica ISO/IEC 23270:2003 C# (1.0/1.2).