web-dev-qa-db-de.com

Was ist der Unterschied zwischen den neuen TFMs netstandardapp und netcoreapp?

Ich habe festgestellt, dass NuGet kürzlich Unterstützung für mehrere neue TFMs im Zusammenhang mit .NET Core hinzugefügt hat, darunter:

  • netstandard (1.0-1.5)
  • netstandardapp (1.5)
  • netcoreapp (1.0)

Nach meinem besten Wissen ist netstandard das .NET Core-Äquivalent eines portablen Profils. Sie können mehrere Plattformen mit einem einzigen Spitznamen ansprechen, anstatt jede von Ihnen unterstützte Plattform explizit anzugeben, z. portable-net45+netcore45+wp81.

Inzwischen ist laut dieses Dokumentnetstandardapp eher eine Konsolenanwendung in .NET Core; Es stellt etwas dar, das jeder .NET Core-Laufzeit (z. B. CoreCLR, CoreRT) entspricht.

Was genau soll dann netcoreapp sein? Ich habe das Tracking-Problem dafür gefunden hier, was einen Kommentar am unteren Rand enthält, der irgendwie erklärt, was der Unterschied ist, aber ich verstehe nicht, was der Unterschied zwischen ist

NETStandard.Library + App-Hosts

und

.NET Core Base installieren

ist. Könnte es mir bitte jemand erklären?

69
James Ko

Die .NET Standard Library (netstandard) ist eine konsistente Bibliothek für alle App-Modelle. .NET Core (netcoreapp) läuft auf der .NET Standard Library und ist ein AppModel. Auf der Github-Seite beantworten sie, was eine .NET Standard-Anwendung ist und was der Unterschied zu .NET Core ist ( https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-standard) -applications.md ) und ( https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md )

UPDATE: Die .NETStandard-App ist veraltet. Die NETCore-App ersetzt sie ( https://github.com/NuGet/Home/issues/2524 )

F: Was ist eine .NET Standard-Anwendung? A: Eine .NET Standard-Anwendung ist eine Anwendung, die auf jeder .NET Core-Laufzeit ausgeführt werden kann: CoreCLR (aktuell), .NETNative (zukünftig). Es kann auf einer von vielen .NET-Kernplattformen (Windows, OSX, Linux) ausgeführt werden. Es basiert auf dem Host, der von der angegebenen Laufzeit bereitgestellt wird. Es ist ein komponierbares Framework, das aus den Paketen besteht, von denen die Anwendung abhängt. Die Assembly-Laderichtlinie ermöglicht neuere Versionen von Abhängigkeiten ohne Anwendungskonfiguration (z. B .: BindingRedirects sind nicht erforderlich).

F: Wie unterscheidet sich das von .NETCore? A: Das .NETCore-Zielframework repräsentiert Windows 8-, Windows 8.1- und Universal Windows Platform-Anwendungen. Aus Kompatibilitätsgründen kann dieser Moniker nicht für ".NET Core-Anwendungen" wiederverwendet werden. Die Markenüberschneidung ist unglücklich.

F: Wie unterscheidet sich das von .NETStandard? A: Das NETStandard-Zielframework ist ein abstraktes Zielframework, das die API-Oberfläche vieler Frameworks und Plattformen darstellt. Als solche können NETStandard-Assemblys auf jeder Plattform ausgeführt werden, die den von dieser Assembly anvisierten NETStandard unterstützt, z Plattform mit API-Oberfläche und Implementierung. .NET-Standardanwendungen können eigenständig ausgeführt werden. .NETStandard-Bibliotheken müssen für ein bestimmtes konkretes Zielframework veröffentlicht oder von diesem verwendet werden, damit sie in dieser Art von Anwendung verwendet werden können.

Overview of .NET Future innovation

38
Martijn van Put

Was ist der Unterschied zwischen den neuen TFMs netstandardapp und netcoreapp?

netstandardapp ist veraltet, netcoreapp ersetzt es.

Was genau soll netcoreapp dann sein?

netcoreapp ist der Ziel-Framework-Moniker für die .NET Core Platform. Wenn Sie netcoreapp zum Frameworks-Abschnitt Ihres project.json hinzufügen, wird ein Build Ihrer App auf .NET Core ausgeführt.

Ich verstehe nicht, was der Unterschied zwischen NETStandard.Library + App-Hosts und .NET Core Base-Installation ist. Könnte es mir bitte jemand erklären?

NETStandard.Library + App-Hosts ist das NetStandard.App-Paket. Verwenden Sie das nicht - es ist tot. Es enthält drei App Host-Pakete und die Standardbibliothek.

  • Microsoft.NETCore.DotNetHostPolicy
  • Microsoft.NETCore.Platforms
  • Microsoft.NETCore.Runtime
  • NETStandard.Library

Die NET Core-Basisinstallation ist das Microsoft.NetCore.App-Paket. Verwenden Sie dies stattdessen. Es behält zwei der oben genannten Pakete bei, verschrottet zwei davon und fügt etwa 37 zusätzliche Pakete Microsoft.* Und System.* Hinzu.

  • Zusätzliche Microsoft.* - Assemblys
  • Microsoft.NETCore.DotNetHostPolicy
  • Microsoft.NETCore.Platforms <----- Im April 2016 wurden diese beiden
  • Microsoft.NETCore.Runtime <------- Teil der NETStandard.Library.
  • NETStandard.Library
  • Zusätzliche System.* - Assemblys

Referenzen

https://github.com/NuGet/Home/issues/2524 > Gibt an, dass der Moniker "netstandardapp target framework" nicht mehr gültig ist.

https://github.com/dotnet/cli/issues/2482 > Gibt an, dass "Projekte, die auf NetStandardApp abzielen, auf NetCoreApp portiert werden müssen. NetStandardApp wird von CLI 1.0.0 RC2 nicht unterstützt. "

https://www.myget.org/feed/aspnetvnext/package/nuget/NETStandard.Library > Der Paketverlauf zeigt die große Veränderung im April 2016.

19
Shaun Luttin