2016-06-02 15 views
2

표준 Sql 클라이언트 클래스를 래핑하고 NuGet에 게시하는 Sql Server 용 데이터 작은 데이터 액세스 라이브러리를 만들고 싶습니다. 나는이 NuGet 패키지를 표준 및 .Net 핵심 응용 프로그램에서 모두 사용하고 싶습니다.표준 프레임 워크 및 .NET 코어 용 nuget 패키지 (dll)를 만드는 방법은 무엇입니까?

일부 데이터 액세스 코드 (System, System.Core 및 System.Data 사용)로 클래스 라이브러리 프로젝트를 만들고이를 너겟에 게시했습니다. System, System.Core 및 System.Data를 NuGet 프레임 워크 종속성으로 추가했습니다.

UPDATE - described problems both in RC1 and RC2 

RC1 버전에서는 4.6 프레임 워크에서 작동하지만 DNX 5를 package.json에서 제거해야했습니다. 이 ASPNET 코어 (닷넷 프레임 워크) 프로젝트와 함께 작동,하지만 난 ASPNET 코어 (닷넷 코어)를 만들 때, 컴파일이 실패 RC2 버전에서

:

오류 NU1002 프레임 워크 .NETCoreApp 버전을 지원하지 않습니다 종속성 = v1.0.

두 버전 모두에서 작동하는 너겟 패키지를 만드는 방법이 있습니까?

+0

dnx는 더 이상 일이 아닙니다. 당신은 RC2와 netstandard로 이동해야합니다 ... – Pawel

+0

당신 말이 맞아요,하지만 여전히 문제를 해결하지 않습니다. RC2 응용 프로그램을 만들 때 패키지 복원 오류가 발생합니다. 오류 \t NU1002 \t <패키지 이름> 종속성은 .NETCoreApp, Version = v1.0 프레임 워크를 지원하지 않습니다. \t 새 프로젝트에서 .NET 핵심 클래스 라이브러리를 사용하여 너깃 패키지를 만들면이 문제를 해결할 수 있습니다.하지만 다시 RC2 용 프로젝트와 비 핵심 응용 프로그램 용 유지 관리 프로젝트가 있습니다. –

답변

1

.NET Core 1.0이 이번 주에 방금 릴리스되었으므로이 프레임 워크의 최신 버전 컨텍스트에서 질문에 대답하겠습니다.

ASP.NET Core 1.0과 .NET 4.5를 모두 타겟팅하려는 경우 각 프레임 워크 빌드에 필요한 모든 종속성을 포함하여 두 프레임 워크를 따로 정의해야합니다.

다음은 .NET Core Standard 1.5, ASP.NET Core 1.0, .NET 4.5 및 .NET 4.0을 대상으로하고 System.Linq.Expressions에 종속적 인 클래스 라이브러리 프로젝트의 예제 project.json 파일입니다. 네임 스페이스 :

{ 
    "version": "1.0.0-*", 

    "frameworks": { 
     "netstandard1.5": { 
      "imports": "dnxcore50", 
      "dependencies": { 
       "NETStandard.Library": "1.6.0", 
       "System.Linq.Expressions": "4.1.0" 
      } 
     }, 
     "netcoreapp1.0": { 
      "imports": "dnxcore50", 
      "dependencies": { 
       "Microsoft.NETCore.App": { 
        "type": "platform", 
        "version": "1.0.0" 
       }, 
       "System.Linq.Expressions": "4.1.0" 
      } 
     }, 
     "net45": { 
      "frameworkAssemblies": { 
       "System.Linq.Expressions": "" 
      } 
     }, 
     "net40": {} 
    } 
} 
+1

감사합니다,이 문제의 첫 번째 부분 (별도의 프레임 워크에 대해 별도의 DLL을 작성) 해결했습니다. 하지만 여전히 이러한 dll을 단일 너겟 패키지로 묶는 방법을 이해하지 못합니다. 최대까지 네게 덩어리에 하나의 DLL을 배포하지 않는 네 개의 하위 폴더에 네 가지 버전이 있습니다. 방금 모두 같은 덩어리에 추가하면 다른 사람이 설치하면 해결할 수 있습니까? –

0

Visual Studio 2017을 사용하면 .NET Standard 프로젝트 라이브러리를 만들 수 있습니다. 프로젝트 속성에서 버전을 선택할 수 있습니다.

이러한 프로젝트는 다음과 같습니다

<Project Sdk="Microsoft.NET.Sdk"> 
    <PropertyGroup> 
    <TargetFramework>netstandard1.4</TargetFramework> 
    <AssemblyName>MyAssembly</AssemblyName> 
    <PackageId>MyPackage</PackageId> 
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> 
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute> 
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> 
    <Copyright>Copyright</Copyright> 
    <Description>Simple Library</Description> 
    <Authors>Me</Authors> 
    <AssemblyVersion>1.1.0</AssemblyVersion> 
    <FileVersion>1.1.0</FileVersion> 
    <Version>1.1.0</Version> 
    <Company>MyCompany</Company> 
    </PropertyGroup> 
    <ItemGroup> 
    <Folder Include="Properties\" /> 
    </ItemGroup> 
</Project> 

는 IDE에서는 마우스 오른쪽 버튼으로 클릭 메뉴에서 pack 명령이 있거나이를 입력 할 수 있습니다

msbuild /t:pack myproject.csproj 

하나 개의 패키지를 .... 그들 모두를 지배하고 ... :