Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In .NET 5 RC2 und höheren Versionen definieren Projekte keine Präprozessorsymbole für frühere Versionen mehr, sondern nur für die Version, auf die sie abzielen. Dies ist das gleiche Verhalten wie .NET Core 1.0 - 3.1.
Eingeführte Version
5.0 RC2
Änderungsbeschreibung
In .NET 5 Preview 7 bis RC1 definieren Projekte, die auf net5.0
abzielen, sowohl NETCOREAPP3_1
- als auch NET5_0
-Präprozessorsymbole. Die Absicht hinter dieser Verhaltensänderung bestand darin, dass ab .NET 5 bedingte Kompilierungssymbole kumulativ wären.
In .NET 5 RC2 und höher definieren Projekte nur Symbole für die Zielframework-Moniker (TFM), auf die es ausgerichtet ist und nicht für frühere Versionen.
Grund für Änderung
Die Änderung aus Vorschau 7 wurde aufgrund des Kundenfeedbacks zurückgenommen. Das Definieren von Symbolen für frühere Versionen überraschte und verwirrte Kunden, und einige davon ausgegangen, dass es sich um einen Fehler im C#-Compiler handelte.
Empfohlene Aktion
Stellen Sie sicher, dass Ihre #if
-Logik nicht annimmt, dass NETCOREAPP3_1
definiert ist, wenn das Projekt auf net5.0
oder höher abzielt. Gehen Sie stattdessen davon aus, dass NETCOREAPP3_1
nur definiert ist, wenn das Projekt gezielt auf netcoreapp3.1
ausgerichtet ist.
Wenn Ihr Projekt beispielsweise Multitargeting für .NET Core 2.1 und .NET Core 3.1 durchführt und Sie APIs verwenden, die in .NET Core 3.1 eingeführt wurden, sollte Ihre #if
-Logik wie folgt aussehen:
#if NETCOREAPP2_1 || NETCOREAPP3_0
// Fallback behavior for old versions.
#elif NETCOREAPP
// Behavior for .NET Core 3.1 and later.
#endif
Betroffene APIs
Nicht verfügbar