Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le informazioni contenute in questo articolo si applicano a .NET 5 e versioni successive. Per i progetti UWP, vedi queste informazioni nell'articolo su Scelta di una versione UWP.
In Visual Studio l'opzione per modificare la versione della lingua tramite l'interfaccia utente è 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. Per modificare la versione del linguaggio in Visual Studio, modificare il framework di destinazione del progetto.
Ad esempio, la modifica del TFM
di destinazione ( ad esempio, da .NET 6 a .NET 9) aggiorna la versione del linguaggio di conseguenza, 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 in questo articolo per eseguire l'override delle impostazioni predefinite direttamente nel file di progetto.
Avviso
Si sconsiglia di impostare l'elemento LangVersion
su latest
. L'impostazione latest
indica che il compilatore installato utilizza la versione più recente. Il valore di latest
può passare dal computer al computer, rendendo le compilazioni inaffidabili. Abilita inoltre le funzionalità del linguaggio che potrebbero richiedere funzionalità di runtime o 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.
- Imposta la versione della lingua 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. Questo pragma segnala al compilatore un errore del compilatore, CS8304, con un messaggio contenente la versione del compilatore e la versione corrente del linguaggio selezionato. Per altre informazioni su questo pragma, 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 esplicitamente accedere alle funzionalità di anteprima, aggiungere un elemento come nell'esempio seguente:
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
Il valore preview
usa la versione del linguaggio C# disponibile più recente supportata dal compilatore.
Configurare più progetti
Per configurare più progetti C#, è 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.
Nota
Le versioni per C# e VB sono diverse. Non usare il file Directory.Build.Props per una cartella in cui le sottodirectory contengono progetti per entrambi i linguaggi. Le versioni non corrispondono.
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. |
14.0 |
Il compilatore accetta solo la sintassi inclusa in C# 14 o versione precedente. |
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). |