Es wird versucht, EF Core mit der Portable Class Library zu installieren, die auf .NET 4.6.1 abzielt

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

Frage

Ich experimentiere zum ersten Mal mit EF Core, ASP Net Core und Portable Class Libraries mit VS2015. Gut zu sagen, dass ich frustriert bin.

Ich möchte eine Bibliothek erstellen, in der ich EntityFramework.Core installieren kann. Diese Bibliothek muss in einer WPF-Anwendung und einer ASP NET Core-Webanwendung verwendet werden. Mein Gedanke war, eine Portable Class Library zu erstellen.

Verwenden der Projektvorlage, auf die ich .NET 4.6 und ASP Net Core abziele ...

Ziele

Ich bekomme ein Projekt mit einer Klasse und einer project.json Datei wie folgt:

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

Jetzt, wenn ich EntityFramework.Core-Paket von Nuget installieren ...

Installieren Sie EF Core Nuget

... bekomme ich folgende Ausgabe:

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 ==========

Ist es tatsächlich möglich, EF Core in einer Portable Class Library zu installieren? Wenn ja, wie - was muss ich mit dem Projekt machen?

Ich fühle einfach, dass ich im Kreis nach Lösungen auf der Linie suche.

AKTUALISIEREN 1

Ich habe versucht, EntityFramework.MicrosoftSqlServer in meiner PCL zu installieren.

Vorausgesetzt, dass EntityFramework.MicrosoftSqlServer beim Erstellen eines Standard-ASP Net Core-Projekts installiert ist, das das dnxcore50-Framework verwendet. Wie kommt es, wenn ich in der PCL ähnlich mache, beklagt sich, dass:

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

Wenn dies der Fall ist, wie kommt es dann in ein ASP NET Core-Projekt installiert.

UPDATE 2

Ich habe einen neuen PCL für .NET 4.5.1 erstellt. Ich habe dann EntityFramework.MicrosoftSqlServer 7.0.0-rc1-final über Nuget installiert und es installiert kein Problem. Obwohl ich das jetzt nicht wiederholen kann. Ich habe gerade eine separate Lösung mit einem PCL-Bibliotheksprojekt erstellt, das auf ASP NET Core und .NET 4.5.1 abzielt. Dies gibt jetzt folgendes aus:

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.

Gleiches passiert bei der Installation von EntityFramework.Core.7.0.0-rc1-final.

Fair zu sagen, das ist äußerst frustrierend. Vielleicht bell ich den falschen Baum oder bin heute bellend.

Beliebte Antwort

Ich weiß nicht, wie das für Ihre Portable Class-Anforderungen funktioniert, aber für reguläre .NET (4.6 oder etc) habe ich folgendes entdeckt. (siehe unten)

Ich weiß also nicht, ob das "koscher" ist oder nicht, aber diese Quelle funktioniert gerade jetzt:

Nugget-Paketquelle hinzufügen (Optionen - Paketquellen - Hinzufügen (plus)

Wenn Sie für SqlServer installieren, installieren Sie einfach folgendes:

Microsoft.EntityFrameworkCore.SqlServer

Oder wählen Sie eine andere Top-Level-Abhängigkeit, die alle anderen benötigt.

* [begin-rant] Das war nur, wenn ich mich in den EF-GitHub-Diskussionen herumtrieb. Es ist völlig unentschuldbar, dass sie keine praktische Beschreibung haben, die erklärt, was man gerade tun soll. Sie sollten die "RC" 1-Version mit all ihren Bugs und ihrem radikal anderen Design als das, an dem sie gerade arbeiten und die seit über 5 Monaten nicht mehr aktualisiert wurden (!), Mit der 'pre -release 'markiert markiert!), komplett aus nugget.

Lassen Sie mich hinzufügen: Ich liebe alles, was diese Jungs tun, ich liebe die neuen Bits, viele wirklich gute Sachen. Aber wir sollten nicht für ein halbes Jahr mit einer vermeintlichen und immer noch als "RC" gekennzeichneten Version hängen bleiben, wenn es voller Bugs ist, die bereits in der radikal neu gestalteten rc2-Version behoben wurden, die sie nicht veröffentlicht haben. [/ end-rant] *



Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow