Каково различие между SDK и Временем выполнения в.NET Core?

Я прочитал много статей, включая этого, все же я не могу все еще выяснить то, что является различием, и они не объяснили это или простыми словами или вообще.

Кто-то может разъяснить то, что различие между.NET Временем выполнения.NET и SDK?

Обновление: Используя сравнения очень ценился бы. Аналогия вместе с простым английским языком является очень образовательной.

61
задан 9 December 2017 в 23:45

3 ответа

Совместное использование из сообщения Rick Strahl: , В какой Загрузке Времени выполнения.NET Core Вы нуждаетесь?

Только Время выполнения.NET Core требуется запустить приложение и предоставляет информацию об установке.

Для разработки создайте и опубликуйте приложение, потребует SDK.

dotnet.exe установки с установкой во время выполнения, но это только обеспечивает , базовые функции для обеспечения информации [1 144] работают приложение и обеспечивают информацию об установке: dotnet mydll.dll и dotnet --info . Для создания опубликуйте или сделайте что-либо еще, что необходимо установить SDK.

Выполнение следующей команды предоставит информацию об установке:

dotnet --info

, Если команда перестала работать, это означает, что Вам не установили время выполнения.NET Core или доступный в ПУТИ системы.

Ниже демонстрационный вывод команды.

$ 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 команду
  • , список всего установленного времени выполнения и SDKs

, Устанавливающего SDK также, устанавливает время выполнения.

<час>

macOS домашнее пиво, конкретное

Установка доморощенной бочки , dotnet будет конфликтовать с dotnet-sdk, так для получения и времени выполнения, и установка sdk dotnet-sdk

brew cask install dotnet-sdk

Короче говоря, , время выполнения позволит ОС работать скомпилированный До-диез , C# программы, и , sdk позволит Вам компилировать программы, записанные в [1 117] До-диез , C#.

<час>

важно понять, что у Вас может быть несколько времени выполнения и несколько установленные SDKs, и каждый проект может использовать различный. Время выполнения определяется спецификатором Вашего проекта во время выполнения в .csproj файл:

<TargetFramework>netcoreapp2.1</TargetFramework>

SDK является или последний глобально установленный SDK, который является значением по умолчанию, или можно явно переопределить SDK в global.json, помещенном в корневую папку решения. Следующее явно вызывает мой проект использовать последний RC SDK вместо версии RTM:

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

Обычно не должно быть никакой потребности использовать определенную более низкую версию SDK, поскольку SDK назад совместим и может скомпилировать различные версии.NET Core applicatino назад к v1.0. IOW, нормально использовать последний SDK почти во всех случаях.

Время выполнения.NET Core

Время выполнения.NET Core является самым маленьким автономным и определенным компонентом и содержит абсолютный минимум для выполнения просто.NET Core на определенной платформе.

Примечание это установка во время выполнения не включает Ядро ASP.NET meta зависимости от времени выполнения пакета, поэтому если Ваши ссылки приложения Microsoft. AspNetCore. Приложение или Microsoft. AspNetCore. Все необходимо отдельно загрузить пакет Ядра ASP.NET. Однако, если Вы явно ссылочный все Ядро ASP.NET, пакеты Nuget вместо того, чтобы использовать meta пакеты, те пакеты развертываются как часть Вашего приложения и это может работать только с временем выполнения.

По существу Вы торгуете, размер пакета установки по сравнению со временем выполнения предварительно устанавливают требование.

Ссылки:

8
ответ дан 31 October 2019 в 16:09

enter image description here

Как сводка: при установке SDK у Вас будет все, в чем Вы нуждаетесь для разработки и запущения приложения.

2
ответ дан 31 October 2019 в 16:09

добавление к ответу stormwild в случае, если у Вас есть только.Net Core Runtime, установило Вас, получит следующий вывод от dotnet - информация

>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
ответ дан 31 October 2019 в 16:09

Другие вопросы по тегам:

Похожие вопросы: