5

Dies ist das erste Mal experimentieren mit EF Core, ASP Net Core und Portable Class Libraries mit VS2015. Gut zu sagen, dass ich frustriert bin.Der Versuch, EF Core mit Portable Class Library-Targeting zu installieren. Net 4.6.1

Ich möchte eine Bibliothek erstellen, wo 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.

die Projektvorlage verwenden, wo ich .NET 4.6 und ASP Net Kernziel ...

Targets

ich ein Projekt mit einer Klasse und eine 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" 
     } 
    } 
} 

wenn ich jetzt EntityFramework.Core Paket von nuget installieren ...

Install EF Core Nuget

... Ich erhalte die 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 Klassenbibliothek installiert werden? Wenn ja, wie - was muss ich mit dem Projekt machen?

Ich fühle mich einfach ich bin im Kreis auf der Suche nach Lösungen online.

UPDATE 1

Versuchte EntityFramework.MicrosoftSqlServer in meinem PCL 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 tun, ist beklagt, dass:

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

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

UPDATE 2

habe ich eine neue PCL .NET 4.5.1 Targeting. 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. Das gibt die folgende jetzt:

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. 

Samen EntityFramework.Core.7.0.0-rc1-final geschieht installieren.

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

+0

Laufen gegen das gleiche Problem Atm – grmbl

+1

Hallo, anscheinend ist dies ein offenes Problem auf GitHub: https://github.com/aspnet/EntityFramework/issues/5176 (Breaking Abhängigkeiten) – grmbl

+1

Alles, was ich sagen kann, ist dies unverantwortlich von den Teams. Es ist einfach nicht akzeptabel, ein * RC * zu haben, das nicht einmal richtig installiert wird und selbst dann viele Probleme hat, und das buchstäblich seit 5 Monaten nicht mehr aktualisiert wurde! Die verantwortliche Sache wäre zumindest eine * praktische * Roadmap zu haben, was in der Zwischenzeit zu tun ist, ansonsten sollten SIE DIESE RCs von Nuget ZIEHEN. Letzte Woche habe ich EFCore auf regulärem .NET 4.6 installiert, und hatte große Probleme, sowohl die Installation (und nach lächerlichen Problemumgehungen) als auch das Ausführen von EFCore, nur um diese Fehler * in der myget rc2-Version zu finden. –

Antwort

2

Ich weiß nicht, wie dies für Ihre Portable Class funktioniert, aber für reguläre .NET (4.6 oder etc), entdeckte ich Folgendes.(Siehe rant unten)

Also ich weiß nicht, ob die ‚koscher‘ ist oder nicht, aber diese Quelle funktioniert jetzt:

hinzufügen nuget Paketquelle (Optionen - Paketquellen - Hinzufügen (plus

)

Wenn Sie SqlServer installieren, installieren Sie einfach dies:

Microsoft.EntityFrameworkCore.SqlServer

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

* [Beginne-rant] Das war nur durch herumfummeln auf den EF GitHub Diskussionen. 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 einem angeblich hängen und immer noch markiert als "RC" release, wenn es voller Bugs, die bereits in der radikal neu gestalteten rc2-Version, die sie nicht veröffentlicht wurden, behoben wurde. [/ end-rant] *

+0

Ich kann nicht weiter mit dir reden ... EntityFramework.MicrosoftSqlServer ist jetzt Microsoft.EntityFrameworkCore.SqlServer ... Und was ist das myget.org. Ich mag einfach Dinge zum Arbeiten. Aus der Box. Ich will kein Auto und finde, dass ich die gesamte Elektrik anschließen muss. Hoffentlich wird Microsoft es sortiert bekommen. Good rant btw – Andez

+0

Ich habe eine neue Paketquelle eingerichtet und dann ein neues PCL-Projekt erstellt. Es wird Microsoft.EntityFrameworkCore.SqlServer nicht hinzufügen. Viele inkompatible Pakete dort. EF Core von nuget wird in einer Standardklassenbibliothek installiert. Aber ich möchte meine "Klassenbibliothek" zu einem Aspnet-Core-Projekt hinzufügen - ich hatte Probleme mit Bezug auf eine Klassenbibliothek im AspNet-Core-Projekt, ob Sie es glauben oder nicht. Also bin ich diesen Weg gegangen. – Andez

0

Haben Sie versucht, die Rahmenbedingungen Importe Wechsel:

"frameworks": { 
    "netcoreapp1.0": { 
    "imports": "portable-net451+win8" 
    } 
} 
0

ich eine Projekt-Klassenbibliothek-Core 4.6 und verwenden Sie diesen Code in project.json

{ 
     "dependencies": { 
     "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0-rc2-final", 
     "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0-rc2-final", 
     "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview1-final", 
     "Microsoft.NETCore.App": { 
      "version": "1.0.0-rc2-3002702", 
      "type": "platform" 
     } 
     }, 

     "tools": { 
     "Microsoft.AspNetCore.Server.IISIntegration.Tools": { 
      "version": "1.0.0-preview1-final", 
      "imports": "portable-net45+win8+dnxcore50" 
     }, 
     "Microsoft.EntityFrameworkCore.Tools": { 
      "version": "1.0.0-preview1-final", 
      "imports": [ 
      "portable-net45+win8+dnxcore50", 
      "portable-net45+win8" 
      ] 
     } 
     }, 

     "frameworks": { 
     "netcoreapp1.0": { 
      "imports": [ 
      "dotnet5.6", 
      "dnxcore50", 
      "portable-net45+win8" 
      ] 
     } 
     } 
    } 
Verwandte Themen