2016-11-03 3 views
4

내가 SO 검색 한, 그러나 나는 대답을 많이 찾을 수 있지만 내 질문에 표적으로하지 : 정의 AS.NET (표준, 코어 및 프레임 워크) : 크로스 플랫폼 응용 프로그램 개발

말 :

  • .NET Framework 4.6은. NET과 관련된 모든 것을위한 전체 프레임 워크이지만 라이브러리가 부족합니다. & 다중 플랫폼 (Windows, Linux 및 Mac) 및 클라우드 배포에 최적화 된 런타임
  • .NET 코어는 .NET Framework의 하위 집합입니다. NET Framework 4.6 어느 주로 멀티 pl에 최적화되어 있습니다 atform 및 클라우드 배치
  • NET 표준 : 플랫폼이 아닌 '표준'API 세트. 그래서 기본적으로 플랫폼 (표준 버전 ( 1.3, 1.6 ... 버전) 만 지원하므로 코드를 지원하는 모든 플랫폼에서 작동합니다.

    • .NET 표준
    • : 크로스 플랫폼 응용 프로그램을 개발하기 위해

    , 나는 ASP.NET 핵심 응용 프로그램을 사용할 수있는 다른 클래스 라이브러리를 참조 할 수 있습니다 (.NET)을 만들 계획입니다. NET 코어

나는 (표준 또는 코어) 중 하나를 사용하면 내 응용 프로그램은 여전히 ​​다른 OS를 지원한다고 가정합니다.

어떤 경우에는 클래스 라이브러리에 .NET 표준의 전통적인 .NET Framework를 사용하는 사람들이 있습니까?

  • 이 경우 .NET 프레임 워크를 사용할 때 응용 프로그램이 여전히 교차 플랫폼입니까?
  • 언제 조합하여 (표준, 코어, NET) 혼합해야합니까?
  • 프레임 워크를 사용하고 믹싱 할 때 가장 좋은 방법은 무엇입니까?
  • 충돌을 피하고 오류를 어떻게 피할 수 있습니까? 예를 들어

,의 내가 project.json가있는 클래스 라이브러리가 있다고 가정 해 봅시다 :

"dependencies": { 
    "Microsoft.Extensions.Caching.Abstractions": "1.0.0", 
    "Microsoft.Extensions.Options": "1.0.0", 
    "StackExchange.Redis.StrongName": "1.1.608", 
    "NETStandard.Library": "1.6.0" 
    }, 
    "frameworks": { 
    "netstandard1.5": { } 
    } 

어떻게 프레임 워크에서 다른 종속성? Standard Library는 단순한 명세이기 때문에 프로젝트가 어떻게 어셈블리를 해석 할 것인가.

답변

3

이 경우 .NET Framework를 사용할 때 응용 프로그램이 여전히 교차 플랫폼입니까?

실제로 .Net Framework 응용 프로그램은 .Net Core에서 실행되지 않습니다. 하지만 리눅스와 Mac OS에서 사용할 수있는 모노로 실행될 수도 있습니다.

언제 조합 (표준, 코어, NET)을 사용해야합니까?

가능한 경우 라이브러리에 .Net Standard를 사용해야합니다 (즉, 프레임 워크 별 종속성이없는 한).

.Net Framework 관련 종속성이 있거나 응용 프로그램이 Windows 전용 일 경우 응용 프로그램에 .Net Framework를 사용합니다.

크로스 플랫폼이어야하거나 최신 API를 사용하려는 경우 응용 프로그램에 .Net Core를 사용합니다. (.Net Core는 일반적으로 .Net Framework보다 빨리 업데이트되며 미리보기 버전도 있습니다.)

프레임 워크를 사용하고 믹싱하는 모범 사례는 무엇입니까?

나는 그 질문을 이해하지 못한다. 닷넷 프레임 워크와 닷넷 코어를 같은 애플리케이션에 혼합 할 수 없습니다.

어떻게 충돌을 피하고 빌드를 실패합니까?

  • 읽기 및 설명서를 따르 좀 명확 조언을 제공 할 수 있지만

나는 그가 대답 할 질문이라고 생각하지 않습니다.

  • 불안정한 기술을 사용하지 마십시오. (닷넷 핵심 도구는 미리보기에서 현재 여전히 알아 두셔야합니다.)
  • 편집 :

    어떻게 프레임 워크에서 다른 종속성?

    "frameworks": { "netstandard1.5": { } }은 라이브러리가 .Net Standard 1.5 라이브러리임을 의미하며이를 사용할 수있는 프레임 워크를 결정합니다.

    실제로 닷넷 표준 라이브러리의 일부인 패키지를 가져옵니다. 또한 라이브러리가 일부 표준 집합이 아닌 .Net 표준 라이브러리에 모두 액세스 할 수 있음을 의미합니다.

    표준 라이브러리는 사양이기 때문에 프로젝트가 어셈블리를 어떻게 해결합니까?

    NETStandard.Library에 의존하는 패키지는 단순한 사양 이상입니다. 예를 들어, 패키지 System.IO.Compression.ZipFile가 포함

    • 기준 컴파일 사용 어셈블리 (즉, 사양) 닷넷 프레임 워크 4.6 ZipFile
    • 구현을하는 단지 포워딩 System.IO.Compression.FileSystem 워크 어셈블리
    • 구현. 실제로

    ZipFile를 구현 넷 코어 (내부보고하려면 자신을 패키지, 나는 NuGetPackageExplorer 좋습니다.)

    +0

    질문이 수정되었습니다. 확인해 주시겠습니까? – Coding

    +0

    @ h.salman 업데이트되었지만 일반적으로 새로운 질문이있는 경우 새로운 질문으로 요청해야합니다. – svick

    +0

    감사하지만 같은 주제와 관련된 많은 질문을하고 싶지 않습니다.대답 해 주셔서 고맙습니다. – Coding