Project.json 정의 dnx451 대 .dotnet (4.51)
asp vnext에서 3 가지 유형의 런타임을 정의 할 수 있습니다.
- dnxCore
- dnx451
- dotnet
Project.json에서는 다음과 같습니다.
"frameworks":
{
"dotnet": { },
"dnx451": { },
"dnxcore50": { }
}^
그리고 UI는 이것을 shors
다음을 가정합니다.
dnxCore 는 새로운 .net Core Framework입니다.
dotnet 은 이전 런타임입니다.
dnx451 : project.json에서 "dotnet"또는 "dnx451"을 정의 할 때 다른 점은 무엇입니까?
둘 다 .net 실행 런타임으로 실행하면 안 되나요?
또한 내가 선택한 프로젝트 템플릿 (vNext ClassLib 또는 vNext Console Lib)에 따라 기본값 중 하나가 포함됩니다.
다른 방식으로 질문에 답하기 : 라이브러리는 SDK에 필요한 환경을 대상으로해야합니다. SDK 사용이 필요하지 않은 경우 netstandard
(또는 .NET Core RC2 이전 dotnet
).
dnxcore50
CoreCLR / CoreFx에서 실행되는 DNX SDK ( deprecated ,netcoreapp1.0
대신 사용).dnx451
.Net 4.5.1 (데스크톱 CLR / Full BCL 및 FCL)에서 실행되는 DNX SDK ( 더 이상 사용되지 않음 ,net451
대신 사용).net46
데스크톱 CLR / Full BCL 및 FCL에서 실행되는 .Net Framework 4.6 SDK.uap10.0
.Net Native / CoreFx에서 실행되는 UWP Windows 10 SDK.netcoreapp1.0
CoreCLR / CoreFx에서 실행되는 .NET Core 1.0 SDK.netstandard1.5
(RC2,dotnet
이전) 종속성을 선언하는 순수 IL 코드 (PCL 계약 대신 System.Runtime (기반) 라이브러리). .Net 4.5.x 이상, .NET Core 또는 UWP (다른 버전에서 설정된 System.Runtime 기반 라이브러리)에 대해 프레임 워크 종속성을 사용할 수 있습니다. RC2dotnet
가 더 이상 사용되지 않으므로netstandard
대신 사용하십시오.netstandard2.0
(.NET Core 2.0; ~ JUN 2017)netstandard.dll
모든 플랫폼 (.NET Core, .NET Framework, Xamarin, Mono, Unity3D)이 구현 (또는 NotImplementedException 발생)해야하는 기능 집합에만 의존하는 순수 IL 코드 . 은netstandard2.x
대략 (WMI, 윈폼, WPF, WCF, WWF, ... 등의 FCL 구성 요소가없는)은 .NET Framework의 BCL 라이브러리입니다. 호환성 shim에 따라 대부분의 기존 NuGet 패키지는 자동으로netstandard2.0
.
따라서 라이브러리에 일부 알고리즘 만 있거나 플랫폼에 국한되지 않는 경우 netstandard
/를 사용하십시오 dotnet
. 종속성이 제한되는 경우이 종속성은이를 사용하는 애플리케이션 (예 : DNX, UWP, .Net46)으로 전파됩니다.
나는 오렌의 기사 시리즈를 말라기처럼 강조 할 수있을 뿐이다. (그는 방금 같은 주제에 대해 https://oren.codes/2015/07/29/targeting-net-core/ 를 새로 작성했습니다 ).
추신 : dotnet
/ netstandard
는 구체적인 런타임이 아니며 추상화입니다. 이 경우 런타임을 지정하지 않고 대신 IL을 해석하는 모든 것이 올바르게 진행되는 대상입니다. 예를 들어 dnxcore5
특정 런타임 (CoreCLR)이있는 SDK (DNX)를 지정하는 대상이 있습니다. 이 경우 런타임 동작 (예 : JIT 사용, x-plat 구현 가용성 등)에 대한 추가 가정을 할 수 있습니다.
pps : 곧 출시 될 RC2 릴리스 에서 dotnet
이름이 용어로 바뀌 었습니다 netstandard
. 또한 완전한 DNX SDK는 .NET Core와 ASP.NET 팀간에 분할되었습니다. 따라서 .NET Core (CoreCLR / CoreFx)의 프레임 워크 모니 커 netcoreapp1.0
는 ASP.NET 스택의 99 %가 netstandard1.5
. 더 이상 사용되지 않는 DNX 모니 커 ( dnx451
및 dnxcore50
). .NET Framework에서 ASP.NET Core를 실행할 때 (.NET Core 대신) net451
. 자세한 내용을 보려면 https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md
ppps : netstandard1.x
종속성 기반 계약 의 개념은 더 이상 개발되지 않았지만 netstandard2.0
곧 출시 될 .NET Core 2.0을 포함한 모든 플랫폼에서 구현되어야하는 하나의 (거대한) 표준 계약 (32k API; )으로 변경되었습니다 . 이 변경 사항은 중간 호환성 shim을 사용하여 NuGet 패키지 (참조 mscorlib
및 친구) 의 기존 에코 시스템 대부분 을 netstandard2.0
패키지에 통합 할 수 있다는 이점이 있습니다 .
dotnet 은 다양한 .NET Core 4.6 호환성을 대상으로합니다. 참조 링크
"dotnet 이것은 앱 모델 요구 사항이없는 패키지를위한 새로운 .NET Core입니다." - 참조 링크
따라서 이러한 정의에 따르면 dotnet 은 이전 런타임이 아닌 새로운 런타임입니다.
참조 URL : https://stackoverflow.com/questions/31539341/project-json-definition-dnx451-vs-dotnet-4-51
'IT박스' 카테고리의 다른 글
ASP.NET Core의 OAuth 권한 부여 서비스 (0) | 2020.12.31 |
---|---|
내가 "git push"하면 git은 이제 "Create pull request for…"라고 말합니다. (0) | 2020.12.31 |
파이썬 애플리케이션을 정적 바이너리로 컴파일하는 방법이 있습니까? (0) | 2020.12.31 |
GCC가 결과를 사용하지 않고 libc의 sqrt ()를 호출하는 이유는 무엇입니까? (0) | 2020.12.31 |
MongoDB와 CouchDB는 완벽한 대체품입니까? (0) | 2020.12.31 |