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:
- Modificare manualmente il file di progetto.
- Impostare la versione del linguaggio per più progetti in una sottodirectory.
- Configurare l'opzione del compilatore LangVersion.
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). |