Ein Update auf C # -Versionen und C # -Tools

Ab Visual Studio 2019 Preview 4 und RC passen wir an, wie C # -Versionen in .NET-Tools behandelt werden. Lesen Sie weiter unten <cut>.


Zusammenfassung der Änderungen


Zunächst fügen wir zwei neue LangVersion- Werte (Language Version) hinzu: LatestMajor und Preview . So stapeln sie sich mit der aktuell unterstützten Werteliste:

LangversionBedeutung
NeuesteMajorNeueste unterstützte Hauptversion der C # -Sprache
VorschauNeueste verfügbare Vorschau C # Sprachversion
NeuesteNeueste unterstützte C # -Sprachenversion (einschließlich Nebenversion)
ISO-1C # 1.0 / 1.2
ISO-2C # 2.0
3C # 3.0
4C # 4.0
5C # 5.0
6C # 6.0
7C # 7.0
7.1C # 7.1
7.2C # 7.2
7.3C # 7.3
8.0C # 8.0

Wenn keine LangVersion angegeben ist, wird die Standardbedeutung jetzt vom Zielframework Ihres Projekts bestimmt. Wenn Sie auf ein Vorschau-Framework abzielen, das auch eine entsprechende Vorschau-C # -Version enthält, ist diese Vorschau-Version die Standardeinstellung. Wenn Sie kein Vorschau-Framework als Ziel festlegen, wird Neueste ausgewählt.


Erleben Sie, wann C # 8.0 in der Vorschau ist


In den folgenden Szenarien wird erläutert, wie die Standard-C # -Version interpretiert wird, während sich C # 8.0 noch in der Vorschau befindet.


Targeting von netcoreapp3.0-Vorschau oder netstandard2.1-Vorschau


Die in diesem Szenario ausgewählte Standard-Sprachversion ist Vorschau . Die C # 8.0-Funktionen, auf die Sie Zugriff haben, basieren vollständig auf der Version des Compilers (und damit des .NET SDK), den Sie verwenden. Wenn Sie zukünftige Vorschauen verwenden, erhalten Sie möglicherweise mehr (oder leicht optimierte) Funktionen. Wenn Sie ein Projekt erstellen, gibt das .NET SDK eine Warnung aus, dass dies alles noch in der Vorschau ist.


Targeting von .NET Framework


Die in diesem Szenario ausgewählte Standard-Sprachversion ist Neueste . Jede Verwendung einer C # 8.0-Funktion ist ein Kompilierungsfehler. Das Visual Studio-Tool fordert Sie mit einer schnellen Lösung auf, mit der Sie die Sprachversion für das Projekt oder die Lösung ändern können, wenn einer dieser Fehler auftritt. Da für einige Funktionen zugrunde liegende Typen oder Laufzeitfunktionen erforderlich sind, die in .NET Framework nicht verfügbar sind, z. B. Standardschnittstellenmitglieder, wird beim Targeting von .NET Framework möglicherweise immer noch ein Fehler für diese Funktionen angezeigt.


Multi-Targeting-Vorschau von netcoreapp3.0 oder netstandard2.1 und .NET Framework


Für die Vorschauziele netcoreapp3.0 / netstandard2.1 lautet die Sprachversion Vorschau . Beim Erstellen aus dem .NET SDK wird eine Warnung ausgegeben. Für das .NET Framework-Ziel lautet die Sprachversion " Neueste" .


Explizite LangVersion wird verwendet


Wenn Sie explizit einen LangVersion-Wert festlegen, wird dieser berücksichtigt und das zuvor erwähnte Standardverhalten wird ignoriert.


Erfahrung, wenn C # 8.0 und .NET Core 3.0 GA sind


Schließlich werden C # 8.0 und .NET Core 3.0 in einer Version in GA-Qualität ausgeliefert. Folgendes werden die relevanten LangVersion-Werte zu diesem Zeitpunkt abbilden:

LangversionBedeutung
Neueste8.0
NeuesteMajor8.0
VorschauNoch nicht bestimmt

Projekte, die keine LangVersion angeben, werden so behandelt, als wären sie die neuesten, wenn C # 8.0 GA ist.


Wenn Sie ein Projekt für die C # 8.0-Vorschau erstellt haben, das auf die .NET Core 3.0-Vorschau oder die .NET Standard 2.1-Vorschau abzielt, und auch keine LangVersion angegeben haben, ist es so, als ob Neueste ausgewählt wäre. Sobald C # 8.0 und .NET Core 3.0 GA sind, werden Sie in keinem Szenario für die Vorschau aktiviert.


Zum Zeitpunkt des Schreibens ist keine Vorschau von C # geplant, wenn C # 8.0 GA ist. Irgendwann wird eine Vorschau verschickt und wir werden einen Blog-Beitrag haben, der dies erklärt.


Begründung


Bis zu diesem Zeitpunkt entsprach die in Visual Studio verwendete Standardversion von C # LatestMajor . Dies war aus zwei Gründen problematisch:


  1. C # entwickelt sich jetzt zwischen den Release-Zyklen von Visual Studio, aber neue Projekte in Visual Studio verwenden standardmäßig immer noch eine ältere Version von C #.
  2. Die C # 8.0-Vorschau ist eine bessere Wahl für Projekte, die auf die .NET Core 3.0-Vorschau abzielen. Es gab jedoch keine Möglichkeit, sie als Standard festzulegen, ohne sie auch als Standard für Projekte festzulegen, die nicht auf die .NET Core 3.0-Vorschau abzielen.

Im Allgemeinen möchten wir sicherstellen, dass Sie diese Funktionen so nahtlos wie möglich nutzen können, wenn wir C # weiterentwickeln und weitere Funktionen veröffentlichen, die mit einer zukünftigen .NET Core-Version übereinstimmen. Auf diese Weise können Sie Features auch früher in ihrem Entwicklungslebenszyklus verwenden und so das Zeitfenster verlängern, in dem umsetzbares Feedback zu einem Feature dessen Design beeinflussen kann.


Unterstützung und Kompatibilität für Vorschaufunktionen


Die Art und Weise, über Unterstützung nachzudenken, ist auch etwas anders. Um die Verwendung von C # 8.0-Vorschaufunktionen in einem veröffentlichten Visual Studio 2019 zu ermöglichen, werden Support- und Kompatibilitätsprobleme durch Vorschau vs. veröffentlichte Funktionen:


  • Alle Funktionen oder Verhaltensweisen von C # 7.3 und niedriger werden vollständig unterstützt und sind vollständig kompatibel. Keine Änderung gegenüber dem, was heute existiert.
  • Alle C # 8.0-Vorschaufunktionen werden nicht unterstützt.
  • Es gibt keine Kompatibilitätsgarantie von einer C # 8.0-Vorschau zu einer anderen.

Kurz gesagt, wenn Sie die Vorschau von C # 8.0 in Visual Studio 2019 verwenden, können sich einige Funktionen und Verhaltensweisen zwischen jetzt und der vollständigen Veröffentlichung von C # 8.0 ändern.


Viel Spaß beim Hacken!

Source: https://habr.com/ru/post/de443000/


All Articles