Quelle est la différence entre les nouveaux netstandardapp et netcoreapp TFM?

J’ai remarqué que NuGet a récemment ajouté le support de plusieurs nouveaux TFM liés à .NET Core, notamment:

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

À ma connaissance, netstandard est l’équivalent .NET Core d’un profil portable; Il vous permet de cibler plusieurs plates-formes en utilisant un seul moniker, au lieu de définir explicitement chaque plate-forme prise en charge, par exemple portable-net45+netcore45+wp81 .

Pendant ce temps, selon ce document, netstandardapp ressemble plus à une application console dans .NET Core; il représente quelque chose que tout runtime .NET Core (par exemple, CoreCLR, CoreRT).

Qu’est-ce donc que netcoreapp est censé être? J’ai trouvé le problème de suivi ici, qui comprend un commentaire en bas qui explique ce que la différence est, mais je ne comprends pas la différence entre

NETStandard.Library + hôtes d’application

et

Installation de base du .NET Core

est. Quelqu’un pourrait-il me l’expliquer?

La bibliothèque standard .NET (netstandard) est une bibliothèque cohérente sur tous les modèles d’application. .NET Core (netcoreapp) s’exécute sur la bibliothèque .NET Standard et est un AppModel. A partir de la page github, ils répondent à la définition d’une application .NET Standard et à la différence avec .NET Core ( https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-standard-applications.md ) et ( https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md )

UPDATE: le .NETStandardapp est obsolète. L’application NETCore le remplace ( https://github.com/NuGet/Home/issues/2524 )

Q: Qu’est-ce qu’une application .NET Standard? R: Une application .NET Standard est une application pouvant s’exécuter sur tout environnement d’exécution .NET Core: CoreCLR (actuel), .NETNative (futur). Il peut s’exécuter sur l’une des nombreuses plates-formes de base .NET (Windows, OSX, Linux). Il s’appuie sur l’hôte fourni par le runtime donné. C’est un framework composable construit à partir des packages dont dépend l’application. Sa politique de chargement des assemblages autorise des versions plus récentes des dépendances sans aucune configuration d’application (par exemple: BindingRedirects ne sont pas requirejs).

Q: En quoi est-ce différent de .NETCore? R: L’infrastructure cible .NETCore représente les applications Windows 8, Windows 8.1 et Universal Windows Platform. Pour des raisons de compatibilité, ce nom ne peut pas être réutilisé pour les «applications .NET Core». Le chevauchement de l’image de marque est regrettable.

Q: En quoi est-ce différent de .NETStandard? R: L’infrastructure cible NETStandard est une infrastructure cible abstraite qui représente la surface de l’API de nombreuses infrastructures et plates-formes. En tant que tels, les assemblys NETStandard peuvent s’exécuter sur toute plate-forme prenant en charge la NETStandard ciblée par cet assemblage, par exemple: applications .NET Desktop, Windows Phone, Universal Windows Platform, applications .NET Standard, etc. NETStandardApplication est une infrastructure cible unique. plate-forme à la fois surface API et implémentation. Les applications standard .NET peuvent être exécutées seules. Les bibliothèques .NETStandard doivent être publiées ou utilisées par un framework cible concret spécifique à utiliser dans ce type d’application.

Aperçu de l'innovation future .NET

Quelle est la différence entre les nouveaux netstandardapp et netcoreapp TFM?

netstandardapp est obsolète, netcoreapp remplace.

Qu’est-ce donc que netcoreapp est censé être?

netcoreapp est le moniker cible du framework pour la plate-forme .NET. Si vous ajoutez netcoreapp à la section frameworks de votre project.json, une version de votre application s’exécutera sur .NET Core.

Je ne comprends pas la différence entre les hôtes d’applications NETStandard.Library + et l’installation de base .NET Core. Quelqu’un pourrait-il me l’expliquer?

NETStandard.Library + app hosts est le package NetStandard.App. Ne pas utiliser ça – c’est mort. Il comprend trois packages d’hôte d’application et la bibliothèque standard.

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

L’installation de base NET Core est le package Microsoft.NetCore.App. Utilisez ceci à la place. Il conserve deux des packages ci-dessus, en récupère deux et ajoute environ 37 packages Microsoft.* Et System.* Supplémentaires.

  • Microsoft.* Assemblages supplémentaires
  • Microsoft.NETCore.DotNetHostPolicy
  • Microsoft.NETCore.Platforms <----- En avril 2016, ces deux derniers sont devenus
  • Microsoft.NETCore.Runtime <------- partie de la bibliothèque NETStandard.Library.
  • NETStandard.Library
  • System.* additionnel System.* Assemblages

Les références

https://github.com/NuGet/Home/issues/2524 > Indique que le moniker de l’infrastructure cible netstandardapp est "plus valide".

https://github.com/dotnet/cli/issues/2482 > Indique que "les projets ciblant NetStandardApp doivent être portés sur NetCoreApp. NetStandardApp ne sera pas pris en charge par CLI 1.0.0 RC2."

https://www.myget.org/feed/aspnetvnext/package/nuget/NETStandard.Library > L’historique des packages indique le grand changement intervenu en avril 2016.