Controllo delle versioni del linguaggio C#
Il compilatore C# più recente determina la versione di un linguaggio predefinito in base ai framework di destinazione del progetto. Visual Studio non fornisce un'interfaccia utente per modificare il valore, ma è possibile modificarlo modificando il file csproj. La scelta predefinita garantisce l'uso della versione del linguaggio più recente compatibile con il framework di destinazione. È possibile accedere alle funzionalità del linguaggio più recenti compatibili con la destinazione del progetto. Questa scelta predefinita garantisce anche di non usare un linguaggio che richiede tipi o comportamenti di runtime non disponibili nel framework di destinazione. La scelta di una versione del linguaggio più recente rispetto all'impostazione predefinita può causare errori di compilazione e runtime difficili da diagnosticare.
C# 12 è supportato solo in .NET 8 e versioni più recenti. C# 11 è supportato solo in .NET 7 e versioni più recenti. C# 10 è supportato solo in .NET 6 e versioni più recenti.
Per informazioni dettagliate sulle versioni di .NET supportate dalle versioni di Visual Studio di Visual Studio, vedere la pagina relativa alla compatibilità della piattaforma Visual Studio. Per informazioni dettagliate sulle versioni di .NET supportate dalle versioni di Visual Studio per Mac, vedere la pagina relativa alla compatibilità della piattaforma Visual Studio per Mac. Controllare la pagina Mono per C# per la compatibilità di Mono con le versioni C#.
Impostazioni predefinite
Il compilatore determina un'impostazione predefinita in base a queste regole:
Destinazione | Versione | Impostazione predefinita della versione del linguaggio 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 | tutto | C# 7.3 |
Se il progetto è destinato a un framework di preview
con una versione della lingua di anteprima corrispondente, la versione della lingua usata è la versione della lingua di anteprima. È possibile usare le funzionalità più recenti con tale anteprima in qualsiasi ambiente, senza influire sui progetti destinati a una versione rilasciata di .NET Core.
Importante
Il nuovo modello di progetto per Visual Studio 2017 ha aggiunto una voce <LangVersion>latest</LangVersion>
ai nuovi file di progetto. Se si aggiorna il framework di destinazione per questi progetti, l'impostazione <LangVersion>
può eseguire l'override predefinito per il nuovo framework di destinazione. Assicurarsi di rimuovere il <LangVersion>latest</LangVersion>
dal file di progetto per assicurarsi che il progetto usi la versione consigliata del compilatore per il framework di destinazione. È possibile aggiornare il framework di destinazione per accedere alle funzionalità del linguaggio più recenti.
Eseguire l'override del valore predefinito
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#).
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. |
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). |
Nota
Specificare LangVersion con il valore default
è diverso dall'omissione dell'opzione LangVersion. Specificando default
viene utilizzata la versione più recente del linguaggio supportata dal compilatore, senza tenere conto del framework di destinazione. Ad esempio, la compilazione di un progetto destinato a .NET 6 dalla versione corrente di Visual Studio 2022 usa C# 10 se LangVersion non è specificato, ma usa C# 12 se LangVersion è impostato su default
.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per