휴대용 클래스 라이브러리 타겟팅 EF 코어를 설치하려고합니다. 닷넷 4.6.1

entity-framework entity-framework-core portable-class-library

문제

VS2015를 사용한 EF 코어, ASP Net Core 및 휴대용 클래스 라이브러리를 실험 한 것은 이번이 처음입니다. 공정한 나는 좌절하고있다.

EntityFramework.Core를 설치할 수있는 라이브러리를 만들고 싶습니다. 이 라이브러리는 WPF 응용 프로그램과 ASP NET 코어 웹 응용 프로그램에서 사용해야합니다. 지금은 계층화 된 응용 프로그램 개념을 무시하십시오. 내 생각은 휴대용 클래스 라이브러리를 만드는 것이 었습니다.

.NET 4.6 및 ASP Net Core를 대상으로하는 프로젝트 템플릿 사용 중 ...

목표

다음과 같이 클래스와 project.json 파일이있는 프로젝트를 얻습니다.

{
    "supports": {
        "net46.app": {},
        "dnxcore50.app": {}
    },
    "dependencies": {
        "Microsoft.NETCore": "5.0.0",
        "Microsoft.NETCore.Portable.Compatibility": "1.0.0"
    },
    "frameworks": {
        "dotnet": {
            "imports": "portable-net452"
        }
    }
}

이제 Nuget에서 EntityFramework.Core 패키지를 설치할 때 ...

EF Core Nuget 설치

... 나는 다음과 같은 결과를 얻는다.

Restoring packages for 'Acme.PCLEFClassLib'.
Restoring packages for K:\TFS\TestApps\Projects\DotNetCore\Acme.PCL1\Acme.PCL1\project.json...
Detected package downgrade: System.Reflection from 4.1.0-beta-23225 to 4.0.10 
 Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> Microsoft.Extensions.DependencyInjection.Abstractions (>= 1.0.0-rc1-final) -> System.Reflection (>= 4.1.0-beta-23225) 
 Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> System.Reflection (>= 4.0.10)
Detected package downgrade: System.Reflection from 4.1.0-beta-23225 to 4.0.10 
 Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> Microsoft.Extensions.Logging.Abstractions (>= 1.0.0-rc1-final) -> System.Reflection (>= 4.1.0-beta-23225) 
 Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> System.Reflection (>= 4.0.10)
Version conflict detected for System.Collections. 
 Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> System.Collections (>= 4.0.11-beta-23516) 
 Acme.PCLEFClassLib (>= 1.0.0) -> Microsoft.NETCore.Portable.Compatibility (>= 1.0.0) -> Microsoft.NETCore.Runtime (>= 1.0.0) -> Microsoft.NETCore.Runtime.CoreCLR-x86 (>= 1.0.0) -> System.Collections (= 4.0.10).
EntityFramework.Core 7.0.0-rc1-final is not compatible with .NETPlatform,Version=v5.0.
Some packages are not compatible with .NETPlatform,Version=v5.0.
Ix-Async 1.2.5 is not compatible with DNXCore,Version=v5.0.
Remotion.Linq 2.0.1 is not compatible with DNXCore,Version=v5.0.
Some packages are not compatible with DNXCore,Version=v5.0.
Ix-Async 1.2.5 is not compatible with DNXCore,Version=v5.0 (win7-x86).
Remotion.Linq 2.0.1 is not compatible with DNXCore,Version=v5.0 (win7-x86).
Some packages are not compatible with DNXCore,Version=v5.0 (win7-x86).
Ix-Async 1.2.5 is not compatible with DNXCore,Version=v5.0 (win7-x64).
Remotion.Linq 2.0.1 is not compatible with DNXCore,Version=v5.0 (win7-x64).
Some packages are not compatible with DNXCore,Version=v5.0 (win7-x64).
Package restore failed for 'Acme.PCLEFClassLib'.
Package restore failed. Rolling back package changes for 'Acme.PCLEFClassLib'.
========== Finished ==========

휴대용 클래스 라이브러리에 EF 코어를 실제로 설치할 수 있습니까? 그렇다면 어떻게해야 프로젝트와 관련이 있을까요?

선상에서 해결책을 모색하는 서클에서 돌아가고 있다고 느낍니다.

업데이트 1

내 PCL에 EntityFramework.MicrosoftSqlServer 설치를 시도했습니다.

dnxcore50 프레임 워크를 사용하는 표준 ASP Net Core 프로젝트를 만들 때 EntityFramework.MicrosoftSqlServer가 설치되어 있다고 가정합니다. 내가 PCL에서 비슷한 일을하면, 불평은 어떻게 되는가?

EntityFramework.MicrosoftSqlServer 7.0.0-rc1-final is not compatible with .NETPlatform,Version=v5.0.

그렇다면 ASP NET 코어 프로젝트에 어떻게 설치 될까요?

업데이트 2

.NET 4.5.1을 대상으로하는 새로운 PCL을 만들었습니다. 그런 다음 EntityFramework.MicrosoftSqlServer 7.0.0-rc1-final을 Nuget을 통해 설치했으며 문제가 발생하지 않습니다. 나는 이것을 지금 반복 할 수는 없지만. 방금 ASP NET 코어 및 .NET 4.5.1을 대상으로하는 PCL 라이브러리 프로젝트와 별도의 솔루션을 만들었습니다. 그러면 다음과 같이 출력됩니다.

Attempting to gather dependency information for package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' with respect to project 'AnotherPCLEFFUP', targeting '.NETPortable,Version=v4.5,Profile=Profile75'
Attempting to resolve dependencies for package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' with DependencyBehavior 'Lowest'
Resolving actions to install package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final'
Resolved actions to install package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final'
Install failed. Rolling back...
Package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' does not exist in project 'AnotherPCLEFFUP'
Package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' does not exist in folder 'K:\TFS\TestApps\Projects\DotNetCore\AnotherPCLEFFUP\packages'
Invalid portable frameworks.

EntityFramework.Core.7.0.0-rc1-final도 설치됩니다.

말할 것도없이, 이것은 완전히 좌절입니다. 어쩌면 나는 오늘 잘못된 나무를 짖거나 그냥 짖고 있을지 모릅니다.

인기 답변

나는 이것이 당신의 포터블 클래스 요구 사항에 어떻게 작동 할지는 모르지만, 일반 .NET (4.6 등)을 위해서 나는 다음을 발견했다. (아래 호언 장담 참조)

그래서 이것이 '정결 한'것인지 아닌지는 모르겠지만, 지금이 근원은 작동합니다.

nuget 패키지 소스 추가 (옵션 - 패키지 소스 - 추가 (더하기)

SqlServer 용으로 설치하는 경우 다음을 설치하십시오.

Microsoft.EntityFrameworkCore.SqlServer

또는 다른 모든 최상위 종속성을 선택하면 필요한 다른 모든 것을 선택할 수 있습니다.

EF github 토론을 통해서만 휩쓸 렸습니다. 지금 당장 무엇을해야하는지 설명하는 실제적인 설명이 없다는 것은 완전히 용인 할 수 없습니다. 그들은 "RC"1 버젼을 모든 버그들과 함께, 그리고 그들이 현재 작업하고있는 것과는 근본적으로 다른 디자인으로 끌어 올려야하고, 5 개월 이상 업데이트되지 않았습니다 (! 그리고 이것은 'pre -release '는 체크했다!), 전적으로 nuget에서.

내가 추가하자 : 나는이 사람들이하는 모든 것을 사랑한다, 나는 새로운 것들을 정말 좋아한다. 그러나 우리는 그들이 공개하지 않은 이미 근본적으로 재 설계 RC2 버전에서 수정 된 버그의 전체 때 가정 여전히 표시 등 "RC"릴리스 반년 걸려 왼쪽되어서는 안된다. [/ end-rant] *



Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow