2016-05-01 10 views
58

ich bemerkt, dass NuGet hat vor kurzem die Unterstützung für mehrere neue TFMS Zusammenhang mit .NET Kern hinzugefügt, einschließlich:Was ist der Unterschied zwischen den neuen netstandardapp und netcoreapp TFMs?

  • netstandard (1.0-1.5)
  • netstandardapp (1,5)
  • netcoreapp (1,0)

Soweit ich weiß, ist netstandard das .NET Core-Äquivalent eines tragbaren Profils; Es ermöglicht Ihnen, mehrere Plattformen mit einem einzigen Moniker zu targeten, anstatt jede von Ihnen unterstützte Plattform, z. portable-net45+netcore45+wp81.

In der Zwischenzeit, nach this documentnetstandardapp ist eher eine Konsolenanwendung in .NET Core; Es stellt etwas dar, was eine .NET Core-Laufzeitumgebung (z. B. CoreCLR, CoreRT).

Was genau soll dann netcoreapp sein? Ich fand die Tracking-Ausgabe für sie here,, die an der Unterseite einen Kommentar enthält, die ein bisschen erklärt, was der Unterschied ist, aber ich nicht bekommen, was der Unterschied zwischen

NETStandard.Library + app Gastgeber

und

.NET Core-Basis

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

Antwort

32

Die .NET-Standardbibliothek (netstandard) ist eine konsistente Bibliothek für alle App-Modelle. .NET Core (netcoreapp) läuft auf der .NET Standard Library und ist ein AppModel. Von der Github Seite beantworten sie, was eine .NET-Standardanwendung ist und was der Unterschied ist mit .NET Core (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 .NETStandardapp veraltet ist. Die NETCore App ersetzt sie (https://github.com/NuGet/Home/issues/2524)

F: Was ist eine .NET Standard-Anwendung? A: Eine .NET-Standardanwendung ist eine Anwendung, die auf jeder .NET Core-Laufzeit ausgeführt werden kann: CoreCLR (aktuell), .NETNative (zukünftig). Es kann auf einer der vielen .NET-Kernplattformen (Windows, OSX, Linux) ausgeführt werden. Es beruht auf dem Host, der von der gegebenen Laufzeit bereitgestellt wird. Es ist ein zusammensetzbares Framework, das aus den Paketen erstellt wird, von denen die Anwendung abhängt. Die Richtlinie zum Laden von Baugruppen lässt neuere Versionen von Abhängigkeiten zu, ohne dass eine Anwendungskonfiguration erforderlich ist (z. B .: BindingRedirects sind nicht erforderlich).

F: Wie unterscheidet sich das von .NETCore? A: Das .NETCore-Ziel Framework repräsentiert Windows 8, Windows 8.1 und Universal Windows Plattformanwendungen. Aus Kompatibilitätsgründen kann dieser Moniker nicht für ".NET Core-Anwendungen" wiederverwendet werden. Die Branding-Überlappung 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. Solche NETStandard-Assemblys können auf jeder Plattform ausgeführt werden, die den NETStandard unterstützt, auf den diese Assembly abzielt, z. B .: .NET Desktop, Windows Phone, Universal Windows Platform-Anwendungen, .NET Standard-Anwendungen usw. NETStandardApplication ist ein konkretes Zielframework, das eine einzige Komponente darstellt 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, das in diesem Anwendungstyp verwendet werden soll, veröffentlicht oder verwendet werden.

Overview of .NET Future innovation

+4

Können Sie Ihre Antwort entfernen oder zumindest modifizieren? Netstandardapp ist tot. Siehe die andere Antwort. – Thomas

+1

Aktualisierte die Antwort, dass .NETStandardapp veraltet ist und NETCoreapp es ersetzt. Danke –

+1

Warum auf der Erde, wenn ich 'Klassenbibliothek (.NET Core) 'Projekt erstelle, bekomme ich einen Hinweis auf' .NETStandard'? –

17

Was ist der Unterschied zwischen dem neuen netstandardapp und netcoreapp TFMS?

netstandardapp ist veraltet, netcoreapp ersetzt es.

Was genau soll dann netcoreapp sein?

netcoreapp ist der Ziel Framework-Moniker für die .NET Core Platform. Wenn Sie den Frameworks-Abschnitt von project.json mit netcoreapp erweitern, wird ein Build Ihrer App auf .NET Core ausgeführt.

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

NETStandard.Library + app Gastgeber ist die NetStandard.App Paket. Benutze 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

NET Core-Basis installieren ist das Microsoft.NetCore.App Paket. Benutze das stattdessen. Es behält zwei der oben genannten Pakete, zwei davon, und fügt etwa 37 zusätzliche Microsoft.* und System.* Pakete hinzu.

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

Referenzen

https://github.com/NuGet/Home/issues/2524> Staaten, dass die netstandardapp Zielframework Moniker ist "nicht mehr gültig."

https://github.com/dotnet/cli/issues/2482> Gibt an, dass "Projekte, die auf NetStandardApp zielen, 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> Das Paket Geschichte zeigt die große Veränderung im April 2016.

+9

Wenn Sie Dinge im Quellcode wie Visualisierung, werden Sie mit diesem zufrieden sein: https://gist.github.com/davidfowl/ 8939f305567e1755412d6dc0b8baf1b7. Dieser Kern wurde vom Architekten von ASP.NET Core erstellt. – Thomas

+0

@Thomas: Extrem nette Verbindung. Kurz, aber sehr informativ. –