.NET Core에서 SDK와 런타임의 차이점은 무엇입니까?


93

기사를 포함하여 많은 기사를 읽었 지만 여전히 차이점이 무엇인지 파악할 수 없으며 간단한 용어로 또는 전혀 설명하지 않았습니다.

누군가 .NET SDK와 .NET Runtime의 차이점을 명확히 해줄 수 있습니까?

업데이트 : 비교를 사용하면 매우 감사하겠습니다. 간단한 영어와 함께 비유는 매우 교육적입니다.

답변:


54

.Net Core Guide 에 따르면 .NET Core는 다음 항목으로 구성됩니다.

  • 유형 시스템, 어셈블리 로딩, 가비지 수집기, 네이티브 interop 및 기타 기본 서비스를 제공하는 .NET 런타임.
  • 기본 데이터 유형, 앱 구성 유형 및 기본 유틸리티를 제공하는 프레임 워크 라이브러리 세트입니다.
  • .NET Core SDK에서 사용할 수있는 기본 개발자 환경을 지원하는 SDK 도구 및 언어 컴파일러 집합입니다.
  • .NET Core 앱을 시작하는 데 사용되는 'dotnet'앱 호스트입니다. 런타임을 선택하고 런타임을 호스팅하고 어셈블리로드 정책을 제공하고 앱을 시작합니다. 동일한 호스트를 사용하여 거의 동일한 방식으로 SDK 도구를 시작합니다.

SDK는 CLI 및 컴파일러와 같이 .NET Core 애플리케이션을 더 쉽게 개발하는 데 필요한 모든 요소입니다.

런타임은 애플리케이션을 호스팅 / 실행하고 기본 운영 체제와의 모든 상호 작용을 추상화하는 "가상 머신"입니다.

응용 프로그램을 실행하려면 후자 만 필요하지만 응용 프로그램을 개발하려면 전자가 필요합니다.


9
애플리케이션 개발을 위해 사용자가 (SDK + Runtime)을 모두 설치해야한다는 뜻인가요, 아니면 런타임도 포함되어있어 SDK 만 필요하다는 뜻인가요?
Puchacz

5
@Puchacz 방금 SDK 설치 프로그램을 다운로드했으며 Core Runtime 및 Asp.Net Core Runtime도 포함되어 있습니다.
frakon

1
그건 말이 안 돼. CLI는에 '의존 프레임 워크'를 실행하기 위해 호출 실행 예 dotnet myapp.dll는 CLI는 응용 프로그램을 실행하는 데 필요한 경우 어떻게 지구에 그것을 할 수 없는 런타임의 일부가 될?
Neutrino

1
이것은 또한 핵심 라이브러리가 런타임 또는 SDK의 일부인지 여부에 대한 답변이 아닙니다.
Neutrino

40

런타임 : 앱 실행

SDK (Runtime + Tooling) : 앱 빌드 및 실행


2
질문이 있습니다. Visual Studio에서 내 앱을 실행하기 전에 제대로 빌드해야합니까? 그런 다음 항상 런타임보다는 SDK가 필요합니다.
Sameer

2
컴파일 된 언어를 먼저 빌드해야합니다. 어떤 IDE를 사용하든 소스 코드를 애플리케이션에 빌드하려면 SDK가 필요합니다.
TZU

런타임이 실제로 SDK의 일부입니까 아니면 SDK 설치 프로그램의 일부로 SDK와 함께 패키지화 된 런타임입니까?
Frank Liu

34

나는 여기서 아무것도 발명하지 않습니다. https://www.microsoft.com/net/download 에서 정의를 복사하여 붙여 넣기 만하면됩니다.

여기에 이미지 설명 입력

소프트웨어 개발 키트 ( SDK )에는 명령 줄 도구 및 모든 편집기 (Visual Studio 포함)를 사용하여 .NET Core 애플리케이션을 빌드하고 실행하는 데 필요한 모든 것이 포함되어 있습니다.

런타임은 기존의 .NET 핵심 응용 프로그램을 실행하는 데 필요한 단지 자원이 포함되어 있습니다. 런타임은 SDK에 포함되어 있습니다.


9

Rick Strahl의 게시물 공유 : 어떤 .NET Core 런타임 다운로드가 필요합니까?

.NET Core 런타임 만 애플리케이션을 실행하는 데 필요하며 설치 정보를 제공합니다.

애플리케이션을 개발, 빌드 및 게시하려면 SDK가 필요합니다.

dotnet.exe런타임 설치와 함께 설치되지만 애플리케이션 실행 에 대한 정보를 제공하고 설치에 대한 정보를 제공 하는 핵심 기능 만 제공합니다 . 및 . 빌드, 게시 또는 기타 작업을 수행하려면 SDK를 설치해야합니다.dotnet mydll.dlldotnet --info

다음 명령을 실행하면 설치에 대한 정보가 제공됩니다.

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-cask dotnet을 설치하면 dotnet-sdk 와 충돌 하므로 런타임과 sdk 설치 dotnet-sdk를 모두 가져옵니다.

brew cask install dotnet-sdk

요컨대, 런타임 을 통해 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 애플리케이션을 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 패키지를 명시 적으로 참조하는 경우 해당 패키지는 애플리케이션의 일부로 배포되며 런타임으로 만 실행할 수 있습니다.

기본적으로 설치 패키지 크기와 런타임 사전 설치 요구 사항을 거래하고 있습니다.

참조 :


Microsoft.AspNetCore.App런타임 아래 에 나열됩니까? CLR이 런타임이라고 생각 했습니까?
Robotron

@Robotron 당신이 맞아요. shared/Microsoft.NETCore.App/<runtime version>런타임 만 있습니다. 은 shared/Microsoft.AspNetCore.{App,All}/<aspnetcore version>은 ASP.NET 코어 라이브러리를 포함하고 있습니다. docs.microsoft.com/en-us/dotnet/core/build/…
stormwild

2

SDK는 CLI 및 컴파일러와 같이 .NET Core 애플리케이션을 더 쉽게 개발하는 데 필요한 모든 요소입니다.

런타임은 애플리케이션을 호스팅 / 실행하고 기본 운영 체제와의 모든 상호 작용을 추상화하는 "가상 머신"입니다.


2

여기에 이미지 설명 입력

요약 : SDK를 설치하면 앱 개발 및 실행에 필요한 모든 것이 제공됩니다.


0

SDK에는 일반적으로 설명서 및 기타 도움말 파일이 포함되어 있습니다. 런타임에는 설치를위한 바이너리 파일 만 포함됩니다.


2
확실합니까? 그 이상을 설치합니다.
에밀

SDK에는 컴파일러와 같은 .net 핵심 앱 개발에 도움이되는 도구가 포함되어 있습니다. 런타임은 .net 핵심 애플리케이션을 호스팅하고 기본 OS와의 모든 상호 작용을 처리합니다.
Syed Waqas

0

.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

하드웨어에서 애플리케이션 만 실행하려면 런타임으로 충분하고, 그렇지 않으면 개발 및 실행하려면 SDK (런타임 및 도구 포함)가 필요합니다.여기에 이미지 설명 입력


0

내 이해와 기사 https://karthikekblog.com/net-core-sdk-vs-runtime-vs-hosting-bundle/ 의 참조에 따라 간단한 용어로

.NET SDK-여기에는 .Net Core 애플리케이션 생성부터 애플리케이션 빌드, 실행 및 게시에 이르기까지 필요한 모든 것이 포함됩니다. 이것은 순전히 개발 환경에 따라 필요하므로 개발자는 처음부터 애플리케이션을 개발하고 애플리케이션을 빌드, 디버그 및 실행할 수 있습니다.

런타임-.NET Core 애플리케이션을 실행하는 데 필요한 구성 요소 만 있습니다. 따라서 애플리케이션을 배포하고 빌드 및 디버그가 필요하지 않은 서버 측에 설치할 수 있습니다. IIS 호스팅 구성 요소가 별도로 필요했습니다. 대신 Windows 용 호스팅 번들을 사용할 수 있습니다.


-1

SDK를 설치하면 런타임도 제공됩니다. 아래에서 확인하세요. SDK를 설치할 때 설치되는 것입니다.

다음은 C : \ Program Files \ dotnet에 설치되었습니다. • .NET Core SDK 2.2.100 • .NET Core Runtime 2.2.0 • ASP.NET Core Runtime 2.2.0

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.