Ciò può essere dovuto al fatto che il compilatore utilizza di default diverse versioni del linguaggio C # per diversi frame di destinazione.
Per sovrascrivere il linguaggio C # predefinito, aggiungi al file di progetto (come suggerito nella domanda):
<PropertyGroup>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
o:
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
Vedere linguaggio C # controllo delle versioni per le versioni # lingua predefinita C per i diversi quadri di riferimento e come selezionare manualmente la versione linguaggio C #.
Vedi anche la risposta di overflow dello stack C # 8 supporta .NET Framework? per ulteriori informazioni su questo argomento.
Ecco parte dell'articolo di versioning del linguaggio C # :
Versioning in linguaggio C #
Il compilatore C # più recente determina una versione della lingua predefinita in base al framework o ai framework di destinazione del progetto. Questo perché il linguaggio C # può avere funzionalità che si basano su tipi o componenti di runtime che non sono disponibili in ogni implementazione .NET. Ciò garantisce anche che, per qualsiasi obiettivo su cui si basa il progetto, si ottenga la versione linguistica compatibile più alta per impostazione predefinita.
Le regole in questo articolo si applicano al compilatore fornito con Visual Studio 2019 o .NET Core 3.0 SDK. I compilatori C # che fanno parte dell'installazione di Visual Studio 2017 o delle versioni precedenti di .NET Core SDK hanno come target C # 7.0 per impostazione predefinita.
Defaults
Il compilatore determina un valore predefinito in base a queste regole:
--------------------------------------------------------
Target framework | version | C# language version default
--------------------------------------------------------
.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 | all | C# 7.3
--------------------------------------------------------
Sostituisci un valore predefinito
Se devi specificare esplicitamente la tua versione C #, puoi farlo in diversi modi:
- Modifica manualmente il tuo file di progetto.
- Imposta la versione della lingua per più progetti in una sottodirectory.
- Configurare l'opzione del compilatore -langversion.
Modifica il file di progetto
È possibile impostare la versione della lingua nel file di progetto. Ad esempio, se si desidera esplicitamente l'accesso alle funzionalità di anteprima, aggiungere un elemento come questo:
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
Il valore preview
utilizza l'ultima versione disponibile del linguaggio di anteprima C # supportata dal compilatore.
Configura più progetti
Per configurare più progetti, è possibile creare un file Directory.Build.props che contiene l' <LangVersion>
elemento. In genere lo fai nella directory della soluzione. Aggiungere quanto segue a un file Directory.Build.props nella directory della soluzione:
<Project>
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
</Project>
Ora, i build in ogni sottodirectory della directory contenente quel file utilizzeranno la versione di anteprima C #. Per ulteriori informazioni, consulta l'articolo su Personalizza la tua build .