Ich habe eine bestehende dotnet 4.6.2 Lösung, die aus zwei äußeren Projekten (die gleichzeitig portiert werden) und einer gemeinsamen core
Bibliothek besteht.
Ich muss die TargetFramework
der Hauptbaugruppe auswählen, die entweder netcoreapp2.0
oder netstandard2.0
sein könnte.
Da es nicht ausführbar oder von einem externen Projekt referenziert wird, gibt es irgendwelche Vorteile auf die eine oder andere Art?
Sie unterscheiden sich in der Natur:
Jede Version von .NET Core Librairies implementiert (mindestens) eine bestimmte Version des .NET Standards. Eine vollständige Tabelle finden Sie im NET-Standard-Dokumentation . Im Moment sind die neuesten Versionen synchron (2.0 - 2.0), aber das war und ist nicht immer wahr.
Die .NET Core Libraries sind eigentlich immer eine Obermenge der in der entsprechenden Version des .NET Standards definierten APIs. Es gibt immer Typen und Member in den .NET Core Libraries, die (noch?) Teil des .NET Standards sind. Microsoft veröffentlicht Namespace-Namespace-Vergleiche der verfügbaren APIs .
Ihre Bibliothek verwendet möglicherweise eine API, die im .NET-Standard noch nicht standardisiert ist (oder möglicherweise nie ist), aber bereits in .NET Core Libraries verfügbar ist. Beispielsweise können Sie Typen aus dem System.Drawing-Namespace verwenden, die in Kürze in den .NET Core-Bibliotheken verfügbar sein werden, jedoch nicht Teil von .NET Standard 2.0 sind.
Wenn Sie also netcoreapp2.0 über netstandard2.0 wählen, erhalten Sie Zugriff auf eine größere API, auf Kosten der Kompatibilität.
Generell sollten Sie immer versuchen, das portabelste Framework (hier: netstandard) zu targetieren.
Wenn es keine Option für Sie ist, wäre die nächstbeste Lösung, mehrere Frameworks aus einer einzelnen Bibliothek zu targetieren, wie hier erklärt: Wie können Sie eine .NET Core-Klassenbibliothek mit csproj multi-targeting? . Viele .NET Core APIs, die im .NET Standard fehlen, sind auch im (vollständigen) .NET Framework enthalten.
Tags und Links .net .net-core .net-standard