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#).

Perché non è possibile selezionare una versione C# diversa in Visual Studio

In Visual Studio, l'opzione per modificare la versione del linguaggio tramite l'interfaccia utente potrebbe essere disabilitata perché la versione predefinita è allineata al framework di destinazione del progetto (TFM). Questa configurazione predefinita garantisce la compatibilità tra le funzionalità del linguaggio e il supporto del runtime.

Ad esempio, modificando il target TFM (da .NET 6 a .NET 9), la versione del linguaggio verrà aggiornata di conseguenza, passando da C# 10 a C# 13. Questo approccio impedisce problemi di compatibilità di runtime e riduce al minimo gli errori di compilazione imprevisti dovuti a funzionalità del linguaggio non supportate.

Se è necessaria una versione specifica del linguaggio diversa da quella selezionata automaticamente, fare riferimento ai metodi seguenti per eseguire l'override delle impostazioni predefinite direttamente nel file di progetto.

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#

Importante

L'uso di una versione del linguaggio C# più recente rispetto alla versione associata al TFM di destinazione non è supportata.

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).