>

.NET Standard와 .NET Core의 차이점에 대해 읽었지만 차이점이 무엇인지, 언제 .NET Standard 라이브러리 프로젝트를 선택할지, 언제 .NET Core 라이브러리 프로젝트를 선택할지 모르겠습니다. .

저는 .NET 표준이 사용 된 플랫폼에 관계없이 (선택한 .NET 표준 버전과 호환되는 한) API 세트를 항상 사용할 수 있도록하는 것을 읽었습니다. 내가 실수하지 않으면 .NET Standard의 클래스 라이브러리를 만든 다음 선택한 .NET Standard 버전과 호환되는 모든 플랫폼에서 사용할 수 있습니다.

.NET Core를 사용하면 플랫폼 간 사용을위한 것임을 읽었으므로 .NET Core 라이브러리를 선택하면 .NET 표준과 마찬가지로 많은 플랫폼에서도 사용할 수 있습니다.

마지막으로 나는 차이점을 보지 못했다. 언제 사용해야합니까? 그들 사이의 차이점은 무엇입니까?


  • 답변 # 1

    의심을 명확히하고 Jon Skeet의 답변을 확대하려고 노력하겠습니다.

    .NET Standard는사양이므로 특정 .NET Standard 버전 용으로 컴파일 된 라이브러리를 다른 .NET Standard 구현에서 사용할 수 있습니다.

    다른 의견에서 말했듯이 .NET 표준과 다른 .NET 표준 구현 (.NET Core, .NET Framework 등)의 관계에 대한 좋은 비유는 David Fowler의 요점입니다 .. .NET 표준 버전은 Interfaces 입니다. 프레임 워크는 이러한 인터페이스의 구현입니다.

    이 단순화 된 다이어그램은이 관계를 이해하는 데 도움이 될 수 있습니다 :

    Wyzwyz를 목표로하는 모든 것   NetCore10 에 액세스 할 수 있습니다  API INetStandard15  특정API (예 : NetCore10 ) ).

    물론이 라이브러리는 다른 DotNetHostPolicy 에서 사용될 수 없습니다  구현 ( INetStandard15   NetCore10 로 변환 할 수 없습니다  또는 NetFramework462 ).

    대신 Mono46 에만 액세스해야하는 경우  라이브러리 (구체적인 프레임 워크 대신 해당 스펙을 대상으로 함) 라이브러리는이를 구현하는모든프레임 워크에서 사용할 수 있습니다 ( INetStandard15 NetCore10 등)

    원래 비유의

    참고 :David Fowler는 .NET 표준 버전과 프레임 워크 구현에 모두 인터페이스를 사용했습니다. 인터페이스와 클래스를 사용하는 것이 사양과 구체적인 구현 간의 관계를보다 직관적이고 더 잘 표현한다고 생각합니다.

  • 답변 # 2

    .NET Core는 .NET Standard의구현입니다. 여러 운영 체제에서 사용할 수 있지만 같은 것은 아닙니다. 다른 .NET 표준 구현도 있습니다.

    따라서 .NET Core 라이브러리를 만들면 .NET Core에서 구현 된 것들에 액세스 할 수 있지만 .NET Standard의 일부가아닙니다. Xamarin, Tizen, 전체 .NET 데스크톱 프레임 워크 등과 같은 .NET 표준의other구현과 호환 가능

    간단히 : 이식성을 극대화하려면 라이브러리를 .NET 표준으로 지정하십시오.

  • 답변 # 3

    .NET 코어 클래스 라이브러리는 기본적으로 API가 적은 .NET Framework 라이브러리의 하위 집합입니다. .NET Core Class 라이브러리를 고수하면 런타임간에 코드를 공유하기가 어렵습니다. 이 코드에는 필요한 API가 없기 때문에 다른 런타임 (Mona for Xamarin)에서 작동하지 않을 수 있습니다. 이 문제를 해결하기 위해.NET 표준은 사용할 수있는 API를 알려주는 사양 세트입니다. .NET Standard의 주요 목적은 런타임간에 코드를 공유하는 것입니다. 이 사양은 모든 런타임에서 구현되어야합니다 (.NET Framework,.NET Core및 Mono for Xamarin).

    따라서 .NET Core 프로젝트에만 라이브러리를 사용하려면 .NET 표준을 무시할 수 있지만 .NET Framework 또는 Mono for Xamarin에서 코드를 사용할 가능성이 매우 적다면 .NET 표준으로

    또한 높은 버전의 .NET Standard에는 더 많은 API가 포함되어 있지만 더 많은 플랫폼에서 지원되는 낮은 버전이 있습니다.따라서 런타임간에 공유하려는 .NET 표준 라이브러리를 생성 한 후 가능한 가장 낮은 버전을 타겟팅하면 플랫폼의 최대량에 도달 할 수 있습니다. 예를 들어 .NET Framework 4.5 및 .NET Core 1.0에서 실행하려는 경우 사용할 수있는 가장 높은 .NET 표준 버전은 .NET Standard 1.1입니다. 자세한 내용은 설명서의이 표를 참조하십시오.

    PS : 또한 라이브러리를 .NET 표준으로 변환하려는 경우 .NET 이식성 분석기가 도움이 될 수 있습니다.

  • 답변 # 4

    NetFramework462 <시간> 위 질문과이 질문에서 논의 된 대부분의 내용에 대한 매우 명확한 설명과 함께 Microsoft (MSDN-2017 년 9 월)의 다음과 같이 매우 유용한 기사를 참조하십시오. .NET 표준-.NET Core 및 .NET 표준

  • 답변 # 5

    .NET 표준은 .NET 구현에서 사용할 수있는 .NET API의 사양입니다. 이를 통해 모든 .NET 구현에 대해 균일 한 BCL API 세트를 정의 할 수 있습니다.

    .NET Core는 이러한 .NET 표준 구현 중 하나입니다. .NET Framework는 .NET Standard의 또 다른 구현입니다.

    .NET 블로그의 이미지

    Federicos 답변은 각 프레임 워크가 버전과 함께 어떻게 진화하는지에 대한 그래픽 개요를 제공합니다. Microsoft Docs에서 아래 다이어그램을보십시오.

    와이즈 비즈

    .NET Standardis a specification of APIs that all .NET implementations must provide. It brings consistency to the .NET family and enables you to build libraries you can use from any .NET implementation. It replaces PCLs for building shared components.

    .NET Coreis an implementation of the .NET Standard that’s optimized for building console applications, Web apps and cloud services using ASP.NET Core. Its SDK comes with a powerful tooling that in addition to Visual Studio development supports a full command line-based development workflow. You can learn more about them at aka.ms/netstandardfaq and aka.ms/netcore.

  • 이전 javascript - 모든 API 응답이있을 때까지 각도 7에서 페이지로드에로드 표시기를 표시하는 방법은 무엇입니까?
  • 다음 java - 리사이클 뷰 항목의 원하지 않는 선택