web-dev-qa-db-ja.com

SDKと.NET Coreのランタイムの違いは何ですか?

this one を含む多くの記事を読みましたが、何が違うのかまだわかりません。簡単な言葉でもまったく説明もしていません。

誰かが.NET SDKと.NETランタイムの違いを明確にしていただけますか?

更新:比較を使用していただければ幸いです。単純な英語との類似性は非常に教育的です。

。Net Core Guide によると、.NET Coreは次の項目で構成されています

  • 型システム、アセンブリの読み込み、ガベージコレクター、ネイティブ相互運用、およびその他の基本サービスを提供する.NETランタイム。
  • プリミティブデータ型、アプリ構成型、および基本ユーティリティを提供するフレームワークライブラリのセット。
  • .NET Core SDKで利用可能な、基本的な開発者エクスペリエンスを可能にするSDKツールと言語コンパイラーのセット。
  • .NET Coreアプリの起動に使用される「ドットネット」アプリホスト。ランタイムを選択してランタイムをホストし、アセンブリ読み込みポリシーを提供してアプリを起動します。同じホストを使用して、SDKツールをほぼ同じ方法で起動します。

SDKは、CLIやコンパイラなど、.NET Coreアプリケーションの開発を容易にする/必要とするすべてのものです。

ランタイムは、アプリケーションをホスト/実行し、ベースオペレーティングシステムとのすべての対話を抽象化する「仮想マシン」です。

アプリケーションの実行には後者のみが必要ですが、アプリケーションの開発には前者が必要です。

35
OrdinaryOrange

ここでは何も発明していません。 https://www.Microsoft.com/net/download から定義をコピーアンドペーストするだけです

enter image description here

ソフトウェア開発キット(SDK)には、コマンドラインツールとエディター(Visualを含む)スタジオ)。

runtimeには、既存の.NET Coreアプリケーションの実行に必要なリソースのみが含まれます。ランタイムはSDKに含まれています。

20
Artur Karbone

実行時:アプリを実行する

SDK(Runtime + Tooling):アプリをビルドして実行する

16
TZU

Rick Strahlの投稿からの共有: どの.NET Core Runtime Downloadが必要ですか?

.NET Core Runtimeのみがアプリケーションの実行に必要であり、インストールに関する情報を提供します。

アプリケーションを開発、ビルド、および公開するには、SDKが必要です。

dotnet.exeはランタイムインストールでインストールされますが、アプリケーションに情報を提供するrunおよびインストールに関する情報を提供するコア機能のみを提供します:dotnet mydll.dllおよびdotnet --info。ビルド、公開、またはその他の操作を行うには、SDKをインストールする必要があります。

次のコマンドを実行すると、インストールに関する情報が提供されます。

dotnet --info

コマンドが失敗した場合は、.NET Coreランタイムがインストールされていないか、システムのPATHで利用できないことを意味します。

以下は、コマンドの出力例です。

$ 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

出力から次のことがわかります。

  • インストールされているSDKバージョン
  • このdotnetコマンドを実行しているアクティブなランタイムバージョン
  • インストールされているすべてのランタイムとSDKのリスト

SDKをインストールすると、ランタイムもインストールされます。


macOS homebrew固有

Homebrew-caskdotnetをインストールすると、dotnet-sdkと競合するため、ランタイムとsdkインストールdotnet-sdk

brew cask install dotnet-sdk

つまり、runtimeを使用すると、OSでコンパイル済みの C-Sharp C#プログラムを実行できます。 、およびsdkを使用すると、 C-Sharp C#で記述されたプログラムをコンパイルできます。


複数のランタイムと複数のSDKをインストールでき、各プロジェクトで異なるランタイムを使用できることを理解することが重要です。ランタイムは、.csprojファイル内のプロジェクトのランタイム指定子によって決定されます。

<TargetFramework>netcoreapp2.1</TargetFramework>

SDKは、デフォルトで最後にグローバルにインストールされたSDKであるか、ソリューションルートフォルダーに配置されたglobal.jsonでSDKを明示的にオーバーライドできます。以下は、RTMバージョンではなく、最後のRC SDKを使用することをプロジェクトに明示的に強制します。

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

一般に、SDKは下位互換性があり、.NET Core applicatinoのさまざまなバージョンをコンパイルしてv1.0に戻すことができるため、特定の下位のSDKバージョンを使用する必要はありません。 IOW、ほとんどすべての場合に最新のSDKを使用しても構いません。

.NET Coreランタイム

.NET Coreランタイムは最小の自己完結型の特定のコンポーネントであり、特定のプラットフォームで.NET Coreのみを実行するための絶対的な最小値を含んでいます。

ランタイムインストールにはASP.NET Coreメタパッケージのランタイム依存関係が含まれないため、アプリケーションがMicrosoft.AspNetCore.AppまたはMicrosoft.AspNetCore.Allを参照している場合は、ASP.NET Coreパッケージを個別にダウンロードする必要があります。ただし、メタパッケージを使用するのではなく、すべてのASP.NET Core Nugetパッケージを明示的に参照する場合、それらのパッケージはアプリケーションの一部としてデプロイされ、ランタイムのみで実行できます。

基本的に、インストールパッケージのサイズと実行時のプレインストール要件を交換します。

参照:

8
stormwild

enter image description here

要約:SDKをインストールすると、アプリの開発と実行に必要なものがすべて揃います。

2
Ruhul Amin

SDKは、CLIやコンパイラなど、.NET Coreアプリケーションの開発を容易にする/必要とするすべてのものです。

ランタイムは、アプリケーションをホスト/実行し、ベースオペレーティングシステムとのすべての対話を抽象化する「仮想マシン」です。

1
Amir Reza

.Net Core Runtimeのみがインストールされている場合にstormwildの答えに追加すると、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

SDKには通常、ドキュメントと他のヘルプファイルが含まれています。ランタイムには、インストール用のバイナリファイルのみが含まれています。

0
Mårshåll