web-dev-qa-db-fra.com

Quelle est la différence entre SDK et Runtime dans .NET Core?

J'ai lu de nombreux articles, y compris celui-ci , mais je ne comprends toujours pas quelle est la différence, et ils ne l'ont pas expliquée en termes simples ni du tout.

Quelqu'un peut-il s'il vous plaît préciser quelle est la différence entre le Kit de développement .NET et .NET Runtime?

Mise à jour: L'utilisation de comparaisons serait très appréciée. L'analogie avec l'anglais simple est très pédagogique.

Selon le . Net Core Guide , .NET Core est composé des éléments suivants

  • Un environnement d'exécution .NET, qui fournit un système de types, un chargement d'assembly, un ramasse-miettes, un interop natif et d'autres services de base.
  • Ensemble de bibliothèques d'infrastructure fournissant des types de données primitifs, des types de composition d'applications et des utilitaires fondamentaux.
  • Un ensemble d'outils SDK et de compilateurs de langage qui permettent l'expérience de développeur de base, disponible dans le Kit de développement .NET Core SDK.
  • L'hôte de l'application 'dotnet', utilisé pour lancer les applications .NET Core. Il sélectionne le runtime et héberge le runtime, fournit une stratégie de chargement d'assembly et lance l'application. Le même hôte est également utilisé pour lancer les outils SDK de la même manière.

Le SDK contient tout ce dont vous avez besoin/facilite le développement d’une application .NET Core, telle que la CLI et un compilateur.

Le runtime est la "machine virtuelle" qui héberge/exécute l'application et abstrait toutes les interactions avec le système d'exploitation de base.

Seul le dernier est requis pour exécuter l'application, mais le premier est nécessaire pour développer l'application.

35
OrdinaryOrange

Je n'invente rien ici. Il suffit de copier-coller les définitions de https://www.Microsoft.com/net/download

enter image description here

Le kit de développement logiciel (SDK) inclut tout ce dont vous avez besoin pour créer et exécuter des applications .NET Core, à l'aide d'outils de ligne de commande et de tout éditeur (y compris Visual Studio).

Le runtime inclut uniquement les ressources requises pour exécuter des applications .NET Core existantes. Le runtime est inclus dans le SDK.

20
Artur Karbone

Runtime: pour exécuter des applications

SDK (Runtime + Tooling): pour créer et exécuter des applications

16
TZU

Partage du message de Rick Strahl: De quel téléchargement .NET Core Runtime avez-vous besoin?

Seul .NET Core Runtime est requis pour exécuter une application et fournit des informations sur l'installation.

Pour développer, créer et publier une application, un SDK est nécessaire.

_dotnet.exe_ est installé avec une installation à l'exécution, mais il ne fournit que fonctionnalités principales pour fournir des informations à exécuter une application et fournir des informations sur l'installation: dotnet mydll.dll et dotnet --info. Pour construire, publier ou faire quoi que ce soit, vous devez installer le SDK.

L'exécution de la commande suivante fournira des informations sur l'installation:

_dotnet --info
_

Si la commande échoue, cela signifie que le runtime .NET Core n'est pas installé ou disponible dans le chemin PATH du système.

Vous trouverez ci-dessous un exemple de sortie de la commande.

_$ dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   2.2.101
 Commit:    236713b0b7

Runtime Environment:
 OS Name:     Mac OS X
 OS Version:  10.13
 OS Platform: Darwin
 RID:         osx.10.13-x64
 Base Path:   /usr/local/share/dotnet/sdk/2.2.101/

Host (useful for support):
  Version: 2.2.0
  Commit:  1249f08fed

.NET Core SDKs installed:
  2.1.4 [/usr/local/share/dotnet/sdk]
  2.1.302 [/usr/local/share/dotnet/sdk]
  2.2.101 [/usr/local/share/dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.0.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download
_

La sortie vous dit:

  • La version du SDK installée
  • La version d'exécution active qui exécute cette commande dotnet
  • Une liste de tous les runtimes et SDK installés

L'installation d'un SDK installe également le moteur d'exécution.


macOS homebrew spécifique

L'installation du homebrew-cask dotnet ​​entrera en conflit avec le dotnet-sdk, donc pour obtenir à la fois le runtime et le sdk installer dotnet-sdk

_brew cask install dotnet-sdk
_

En bref, le runtime permettra à votre système d’exécuter des programmes compilés C-Sharp , C # , et le sdk vous permettra de compiler des programmes écrits en C-Sharp , C # .


Il est important de comprendre que vous pouvez avoir plusieurs runtimes et plusieurs SDK installés et que chaque projet peut en utiliser un différent. Le runtime est déterminé par le spécificateur d'exécution de votre projet dans le fichier _.csproj_:

_<TargetFramework>netcoreapp2.1</TargetFramework>
_

Le SDK est soit le dernier SDK installé par défaut, soit le dernier, soit vous pouvez explicitement remplacer le SDK dans un fichier global.json placé dans le dossier racine de la solution. Ce qui suit oblige explicitement mon projet à utiliser le dernier SDK RC au lieu de la version RTM:

_{
 "sdk": {
   "version": "2.1.300-rc.31211"
 }
}
_

En règle générale, il ne devrait pas être nécessaire d'utiliser une version de SDK inférieure spécifique car le SDK est rétrocompatible et peut compiler diverses versions de .NET Core applicatino en v1.0. IOW, vous pouvez utiliser la dernière version du SDK dans presque tous les cas.

Runtimes .NET Core

.NET Core Runtimes est le plus petit composant autonome et spécifique et contient le minimum absolu pour exécuter uniquement le .NET Core sur une plate-forme spécifique.

Notez qu’une installation d’exécution n’inclut pas les dépendances d’exécution du méta-package ASP.NET Core. Par conséquent, si votre application fait référence à Microsoft.AspNetCore.App ou Microsoft.AspNetCore.All, vous devez télécharger séparément le package ASP.NET Core. Cependant, si vous référencez explicitement tous les packages ASP.NET Core Nuget plutôt que d'utiliser les méta-packages, ces packages sont déployés en tant que partie intégrante de votre application et cette dernière peut être exécutée uniquement à l'exécution.

Essentiellement, vous négociez la taille du package d’installation par rapport à une exigence de pré-installation à l’exécution.

Références:

8
stormwild

enter image description here

En résumé: si vous installez le SDK, vous aurez tout ce dont vous avez besoin pour le développement et l'exécution de l'application.

2
Ruhul Amin

Le SDK contient tout ce dont vous avez besoin/facilite le développement d’une application .NET Core, telle que la CLI et un compilateur.

Le runtime est la "machine virtuelle" qui héberge/exécute l'application et abstrait toutes les interactions avec le système d'exploitation de base.

1
Amir Reza

en ajoutant à la réponse de stormwild au cas où seul le .Net Core Runtime serait installé, vous recevrez le résultat suivant de dotnet --info

>PS C:\Users\Administrator> dotnet --info
>
>Host (useful for support):
>  Version: 2.2.3
>  Commit:  6b8ad509b6 
>
>.NET Core SDKs installed:
>  No SDKs were found.
>
>.NET Core runtimes installed:
>  Microsoft.NETCore.App 2.2.3 [C:\Program 
>Files\dotnet\shared\Microsoft.NETCore.App]
0
chotkery

Le SDK comprend généralement de la documentation et d’autres fichiers d’aide. Le moteur d'exécution ne contient que les fichiers binaires pour l'installation.

0
Mårshåll