이 기사를 포함하여 많은 기사를 읽었 지만 여전히 차이점이 무엇인지 파악할 수 없으며 간단한 용어로 또는 전혀 설명하지 않았습니다.
누군가 .NET SDK와 .NET Runtime의 차이점을 명확히 해줄 수 있습니까?
업데이트 : 비교를 사용하면 매우 감사하겠습니다. 간단한 영어와 함께 비유는 매우 교육적입니다.
답변
.Net Core Guide 에 따르면 .NET Core는 다음 항목으로 구성됩니다.
- 유형 시스템, 어셈블리 로딩, 가비지 수집기, 네이티브 interop 및 기타 기본 서비스를 제공하는 .NET 런타임.
- 기본 데이터 유형, 앱 구성 유형 및 기본 유틸리티를 제공하는 프레임 워크 라이브러리 세트입니다.
- .NET Core SDK에서 사용할 수있는 기본 개발자 환경을 지원하는 SDK 도구 및 언어 컴파일러 집합입니다.
- .NET Core 앱을 시작하는 데 사용되는 ‘dotnet’앱 호스트입니다. 런타임을 선택하고 런타임을 호스팅하고 어셈블리로드 정책을 제공하고 앱을 시작합니다. 동일한 호스트를 사용하여 거의 동일한 방식으로 SDK 도구를 시작합니다.
SDK는 CLI 및 컴파일러와 같이 .NET Core 애플리케이션을 더 쉽게 개발하는 데 필요한 모든 요소입니다.
런타임은 애플리케이션을 호스팅 / 실행하고 기본 운영 체제와의 모든 상호 작용을 추상화하는 “가상 머신”입니다.
응용 프로그램을 실행하려면 후자 만 필요하지만 응용 프로그램을 개발하려면 전자가 필요합니다.
답변
런타임 : 앱 실행
SDK (Runtime + Tooling) : 앱 빌드 및 실행
답변
나는 여기서 아무것도 발명하지 않습니다. https://www.microsoft.com/net/download 에서 정의를 복사하여 붙여 넣기 만하면됩니다.
소프트웨어 개발 키트 ( SDK )에는 명령 줄 도구 및 모든 편집기 (Visual Studio 포함)를 사용하여 .NET Core 애플리케이션을 빌드하고 실행하는 데 필요한 모든 것이 포함되어 있습니다.
런타임은 기존의 .NET 핵심 응용 프로그램을 실행하는 데 필요한 단지 자원이 포함되어 있습니다. 런타임은 SDK에 포함되어 있습니다.
답변
Rick Strahl의 게시물 공유 : 어떤 .NET Core 런타임 다운로드가 필요합니까?
.NET Core 런타임 만 애플리케이션을 실행하는 데 필요하며 설치 정보를 제공합니다.
애플리케이션을 개발, 빌드 및 게시하려면 SDK가 필요합니다.
dotnet.exe
런타임 설치와 함께 설치되지만 애플리케이션 실행 에 대한 정보를 제공하고 설치에 대한 정보를 제공 하는 핵심 기능 만 제공합니다 . 및 . 빌드, 게시 또는 기타 작업을 수행하려면 SDK를 설치해야합니다.dotnet mydll.dll
dotnet --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 패키지를 명시 적으로 참조하는 경우 해당 패키지는 애플리케이션의 일부로 배포되며 런타임으로 만 실행할 수 있습니다.
기본적으로 설치 패키지 크기와 런타임 사전 설치 요구 사항을 거래하고 있습니다.
참조 :