158 votes

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

J'ai lu de nombreux articles, notamment celui-ci Pourtant, je n'arrive toujours pas à comprendre quelle est la différence, et ils ne l'ont pas expliquée en termes simples ou pas du tout.

Quelqu'un peut-il clarifier la différence entre .NET SDK et .NET Runtime ?

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

11 votes

Le SDK sert à construire l'application. Le Runtime sert à exécuter l'application.

86voto

OrdinaryOrange Points 517

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

  • Un moteur d'exécution .NET, qui fournit un système de types, le chargement d'assemblages, un collecteur de déchets, l'interopérabilité native et d'autres services de base.
  • Un ensemble de bibliothèques de cadre, qui fournissent 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 du développeur de base, disponible dans le SDK .NET Core.
  • L'hôte d'application "dotnet", qui est utilisé pour lancer des applications .NET Core. Il sélectionne le runtime et l'héberge, fournit une politique de chargement des assemblages 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 est l'ensemble des éléments nécessaires pour faciliter le développement d'une application .NET Core, tels que le CLI et un compilateur.

Le moteur d'exécution est la "machine virtuelle" qui héberge/exécute l'application et fait abstraction de toute interaction avec le système d'exploitation de base.

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

20 votes

Cela signifie-t-il que l'utilisateur doit installer les deux (SDK + Runtime) pour développer une application ou que le SDK n'est nécessaire que parce qu'il contient également le Runtime ?

10 votes

@Puchacz Je viens de télécharger le programme d'installation du SDK et il contient également Core Runtime et Asp.Net Core Runtime.

2 votes

Cela n'a aucun sens pour moi. Le CLI est invoqué pour exécuter un exécutable "dépendant du framework", par ex. dotnet myapp.dll si le client est nécessaire pour faire fonctionner une application, comment diable pourrait-il no faire partie de l'exécution ?

68voto

TZU Points 366

Temps d'exécution : pour exécuter des applications

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

2 votes

J'ai une question. Avant de lancer mon application depuis Visual Studio, elle doit être construite, n'est-ce pas ? Alors j'aurai toujours besoin d'un SDK plutôt que d'un simple runtime.

2 votes

Les langages compilés doivent d'abord être construits. Quel que soit l'environnement de développement intégré que vous utilisez, le SDK est nécessaire pour transformer le code source en une application.

0 votes

Le Runtime fait-il vraiment partie du SDK ou est-il simplement emballé avec le SDK dans le cadre de l'installateur du SDK ?

59voto

Artur Karbone Points 396

Je n'invente rien ici. Je copie-colle juste les définitions de https://dotnet.microsoft.com/download

enter image description here

Le kit de développement logiciel ( SDK ) comprend 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 (comme Visual Studio).

El temps de fonctionnement comprend tout ce dont vous avez besoin pour exécuter des applications .NET Core. Le runtime est également inclus dans le SDK.

15voto

stormwild Points 1166

Partage de l'article de Rick Strahl : De quel téléchargement du moteur d'exécution .NET Core avez-vous besoin ?

Seul le moteur d'exécution .NET Core est nécessaire pour exécuter une application et fournit des informations sur l'installation.

Pour développer, construire et publier une application, il faut un SDK.

dotnet.exe s'installe avec une installation d'exécution, mais il fournit seulement Caractéristiques principales pour fournir des informations à exécuter une application et fournir des informations sur l'installation : dotnet mydll.dll y dotnet --info . Pour construire, publier ou faire quoi que ce soit d'autre, 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 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 active du runtime qui exécute cette commande dotnet.
  • Une liste de tous les runtimes et SDK installés

L'installation d'un SDK entraîne également l'installation du runtime.


macOS homebrew spécifique

Installer le homebrew-cask dotnet sera en conflit avec le dotnet-sdk afin d'obtenir à la fois le temps d'exécution et l'adresse de l'utilisateur. sdk installer dotnet-sdk

brew cask install dotnet-sdk

En bref, le temps de fonctionnement permettra à votre système d'exploitation d'exécuter des fichiers compilés C-Sharp , C# et les programmes de 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 de runtime de votre projet dans le champ .csproj fichier :

<TargetFramework>netcoreapp2.1</TargetFramework>

Le SDK est soit le dernier SDK installé globalement, ce qui est le cas par défaut, soit vous pouvez explicitement remplacer le SDK dans un fichier global.json placé dans le dossier racine de la solution. Ce qui suit force 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 n'est pas nécessaire d'utiliser une version inférieure spécifique du SDK, car ce dernier est rétrocompatible et peut compiler différentes versions d'applications .NET Core jusqu'à la version 1.0. Autrement dit, il est normal d'utiliser la dernière version du SDK dans la plupart des cas.

Runtimes .NET Core

Les runtimes .NET Core sont les plus petits composants autonomes et spécifiques et contiennent le minimum absolu pour exécuter uniquement .NET Core sur une plateforme spécifique.

Notez qu'une installation d'exécution n'inclut pas les dépendances d'exécution du méta-paquet ASP.NET Core, donc si votre application fait référence à Microsoft.AspNetCore.App ou Microsoft.AspNetCore.All, vous devez télécharger séparément le paquet ASP.NET Core. Toutefois, si vous faites explicitement référence à tous les paquets Nuget d'ASP.NET Core plutôt que d'utiliser les méta-paquets, ces paquets sont déployés en tant que partie intégrante de votre application et celle-ci peut s'exécuter avec le seul runtime.

Il s'agit essentiellement d'échanger la taille du paquet d'installation contre une exigence de pré-installation en cours d'exécution.

Références :

1 votes

Pourquoi est-ce que Microsoft.AspNetCore.App dans la liste des temps d'exécution ? Je pensais que le CLR était un runtime ?

0 votes

@Robotron Vous avez raison. Seulement le shared/Microsoft.NETCore.App/<runtime version> sont les temps d'exécution. Le site shared/Microsoft.AspNetCore.{App,All}/<aspnetcore version> contient les bibliothèques ASP.NET Core. docs.microsoft.com/fr/us/dotnet/core/build/

2voto

Ruhul Amin Points 87

enter image description here

Comme résumé : Si vous installez le SDK, vous aurez tout ce dont vous avez besoin pour développer et exécuter l'application.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X