Visual Studio 2017을 사용하여 .NET Standard 1.1을 지원하기 위해 현재 라이브러리 프로젝트를 마이그레이션 중입니다.VS 2017에서 최소한의 종속성으로 .NET 표준 NuGet 패키지를 만드는 방법은 무엇입니까?
이 프로젝트를 .NET Framework 4.5 이상을 대상으로 할 수있는 단일 NuGet 패키지로 출시하고자합니다. .NET Core, UWP 등
그러나 .NET Framework 프로젝트에서 결과 패키지를 설치하려고하면 .NET 표준 (아래 참조)에 정의 된 모든 패키지가 들어있는 패키지 종속성의 거대한 목록이 생성됩니다.
이것들은 .NET Standard 1.1 사양의 일부로 정의 된 모든 어셈블리라는 것을 알고 있습니다. 그러나, 나의 특정 프로젝트는 실제로 그것들 중 아주 작은 부분 집합 만 필요로하며,이 의존성 목록은 프로젝트에 패키지를 설치하는 사람들에게 혼란을 줄 것입니다.
similar question에 대한 답변을 따르려고했는데 프로젝트에서 요구하는 정확한 종속성 만 참조하도록 프로젝트 사양을 변경하는 것이 좋습니다.
그러나 대답은 이전 project.json 형식의 컨텍스트에서였습니다. 이제는 VS 2017의 새로운 .csproj 형식으로 대체되었습니다. .NET Standard 1.1 메타 패키지에 대한 종속성을 제거하여 제거하려고 시도했습니다. <TargetFramework>
지시문을 사용했지만 빌드를 중단하고 필요한 종속성 만 추가하는 방법을 찾지 못했습니다.
플랫폼 호환성을 극대화하기 위해 .NET 표준으로 라이브러리를 이동하겠다는 약속은 대단히 매력적이지만 "클래식".NET Framework를 대상으로하는 프로젝트가 "오염 된"프로젝트를 찾지 못하도록 종속 구조를 구성하는 데 권장되는 방법은 무엇입니까? 이 모든 의존성?
NuGet 정의 파일에서 각 플랫폼에 대한 종속성을 정의해야합니다. ANTLR 4 런타임과 같은 오픈 소스 프로젝트를 읽으십시오. –
@LexLi 예,이 솔루션을 알고 있지만 .NET Standard의 요점은 PCL의 악몽이없는 모든 플랫폼에 단일 DLL을 배포 할 수 있다는 것입니다. – glopes
당신은 분명히 그것을 현실로 만들기 위해 필요한 노력을 과소 평가합니다. 내 생각에 모든 플랫폼 용 .NET Native는 궁극적으로 모든 DLL을 해결할 것이지만 많은 DLL이 있더라도 충분하지는 않습니다. –