2017-03-26 7 views
2

.net 전체 프로젝트 (4.6.1)에서 .net 표준 lib (1.4)를 참조한 후 알게되었습니다. 내 출력 폴더가 System으로 가득 찼습니다. * .dll 어셈블리.전체에서 .net 표준 lib 디렉토리를 참조하는 데 시스템이 필요합니다. * assemblies

전체 프레임 워크를 대상으로하지만 .net 표준 lib 디렉토리를 참조 할 경우 사용하는 모든 시스템 라이브러리의 .net 표준 버전을 제공해야한다는 의미입니까?

+0

임의의 질문 : 파일을 빌드 한 후에도 여전히 작동하는지 확인 했습니까? 내 추측 * 당신이 아무것도 작동하지 기대하지 않는 한 그들을 삭제하는 것이 좋습니다 ... (즉,하지 마) –

+1

그들은 그것을 작동하도록 요구해야 할 것, 그것은 단지 아니에요 우리가 기대했던 것. PCL은 이런 식으로 행동하지 않습니다. 이것은 우리의 배포를 부풀게하고 우리가 .net 표준으로가는 것을 재고하게 만듭니다. 나는 .net 표준 라이브러리가 4.6.1의 시스템 어셈블리를 사용할 것으로 예상했다. 마이크로 소프트가 호환성이 있다고 주장하는 것을보고있다. – trampster

+0

음, 그것은 * 호환됩니다 ... 당신은 "가득 차있다"고 lib를 사용 중입니다 ... –

답변

1

일반적으로 .NET 표준 라이브러리를 만들 때 Multi-targeting을 수행하려고합니다. 당신의 .csproj 파일에서 당신은 태그에 s의 추가하여

<FrameworkTarget>netstandard1.4</FrameworkTarget> 

<TargetFrameworks>netstandard1.4;net45</TargetFrameworks> 

사항을 변경합니다.

일단 그렇게하면 라이브러리에 NuGet 패키지가 생성되므로 라이브러리는 .net 4.5와 netstandard를 직접 지원합니다. 예를 들어

, 여기 그래서 .NET 4.5, .NET 4.0, .NET 3.5, .NET 2.0, netstandard 1.0, netstandard 1.3과 PCL 라이브러리 DLL을 생성합니다 Json.NET's csproj file.

<TargetFrameworks Condition="'$(DotnetOnly)'==''">net45;net40;net35;net20;netstandard1.0;netstandard1.3;portable-net45+win8+wpa81+wp8</TargetFrameworks> 

에서입니다 net45, win8, wpa81 및 wp8을 대상으로합니다. 이러한 DLL은 모두 NuGet 패키지에 패키지화되며 패키지를 참조 할 때 가장 가까운 일치 항목 만 사용됩니다.