IT박스

Project.json 정의 dnx451 대 .dotnet (4.51)

itboxs 2020. 12. 31. 08:07
반응형

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).

  • dnxcore50CoreCLR / 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 기반 라이브러리)에 대해 프레임 워크 종속성을 사용할 수 있습니다. RC2 dotnet가 더 이상 사용되지 않으므로 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 모니 커 ( dnx451dnxcore50). .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

반응형