web-dev-qa-db-fra.com

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

J'ai remarqué que NuGet avait récemment ajouté la prise en charge 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; cela vous permet de cibler plusieurs plates-formes à l'aide d'un seul surnom, au lieu d'indiquer explicitement chaque plate-forme que vous prenez en charge, par exemple. portable-net45+netcore45+wp81.

En attendant, selon ce documentnetstandardapp ressemble davantage à une application console dans .NET Core; il représente quelque chose que n'importe quel environnement d'exécution .NET Core (par exemple, CoreCLR, CoreRT).

Qu'est-ce donc exactement que netcoreapp est censé être? J'ai trouvé le problème de suivi pour cela ici, qui inclut un commentaire au bas qui explique un peu quelle est la différence, mais je ne comprends pas quelle est la différence entre

NETStandard.Library + hôtes d'application

et

Installation de la base .NET Core

est. Quelqu'un pourrait-il m'expliquer s'il vous plaît?

69
James Ko

La bibliothèque standard .NET (netstandard) est une bibliothèque cohérente pour tous les modèles d'application. .NET Core (netcoreapp) s’exécute par-dessus la bibliothèque .NET Standard et est un AppModel. Sur la page github, ils indiquent en quoi consiste une application .NET Standard et quelle est 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: .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 qui peut être exécutée sur n’importe quel runtime .NET Core: CoreCLR (actuel), .NETNative (futur). Il peut fonctionner sur l’une des nombreuses plateformes principales .NET (Windows, OSX, Linux). Il repose sur l'hôte fourni par le moteur d'exécution donné. C'est un framework composable construit à partir des packages dont dépend l'application. Sa politique de chargement d'assembly autorise les versions les plus récentes de dépendances sans configuration d'application (par exemple: BindingRedirects n'est pas obligatoire).

Q: En quoi est-ce différent de .NETCore? R: L'infrastructure cible .NETCore représente les applications Windows 8, Windows 8.1 et les plates-formes universelles Windows. Pour des raisons de compatibilité, ce surnom ne peut pas être réutilisé pour les "applications .NET Core". Le chevauchement de la marque est regrettable.

Q: En quoi est-ce différent de .NETStandard? R: Le cadre cible NETStandard est un cadre cible abstrait qui représente la surface API de nombreux cadres et plates-formes. En tant que tels, les assemblys NETStandard peuvent s’exécuter sur n’importe quelle plate-forme prenant en charge le NETStandard ciblée par cet assemblage, par exemple: .NET Desktop, Windows Phone, applications de la plate-forme universelle Windows, applications .NET Standard, etc. NETStandardApplication est un cadre cible concret plate-forme avec surface API et implémentation. Les applications standard .NET sont exécutables seules. Les bibliothèques .NETStandard doivent être publiées - pour ou consommées - par un framework cible concret spécifique à utiliser dans ce type d'application.

Overview of .NET Future innovation

38
Martijn van Put

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

netstandardapp est obsolète, netcoreapp le remplace.

Qu'est-ce que netcoreapp est censé être exactement?

netcoreapp est le moniker du framework cible pour la plate-forme .NET Core. Si vous ajoutez netcoreapp à la section des frameworks de votre project.json, une construction de votre application sera exécutée sur .NET Core.

Je ne comprends pas quelle est la différence entre les hôtes d'application NETStandard.Library et l'installation de base .NET Core. Quelqu'un pourrait-il m'expliquer s'il vous plaît?

NETStandard.Library + hôtes d'application est le package NetStandard.App. Ne l'utilisez pas, c'est mort. Il comprend trois packages d'application hôte et la bibliothèque standard.

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

L’installation de base du Cœur NET est le package Microsoft.NetCore.App. Utilisez ceci à la place. Il conserve deux des paquets ci-dessus, en jette deux et ajoute environ 37 autres Microsoft.* et System.* paquets.

  • Additionnel Microsoft.* assemblées
  • Microsoft.NETCore.DotNetHostPolicy
  • Microsoft.NETCore.Platforms <----- En avril 2016, ces deux personnes sont devenues
  • Microsoft.NETCore.Runtime <------- partie de la NETStandard.Library.
  • NETStandard.Library
  • Additionnel System.* assemblées

Références

https://github.com/NuGet/Home/issues/2524 > Indique que le moniker du cadre cible netstandardapp est "n'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 du package indique le grand changement intervenu en avril 2016.

19
Shaun Luttin