嘗試使用針對.Net 4.6.1的可移植類庫安裝EF Core

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

這是我第一次使用VS2015試驗EF Core,ASP Net Core和Portable Class Libraries。公平地說我感到沮喪。

我想創建一個庫,我可以在其中安裝EntityFramework.Core。這個庫需要在WPF應用程序和ASP .NET核心Web應用程序中使用 - 暫時忽略任何好的分層應用程序概念。我的想法是創建一個可移植類庫。

使用項目模板,我的目標是.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 Core?如果是這樣 - 我該怎麼做項目?

我只是覺得我正在尋找解決方案。

更新1

嘗試在我的PCL中安裝EntityFramework.MicrosoftSqlServer。

鑑於在創建標準ASP Net Core項目時安裝了EntityFramework.MicrosoftSqlServer,該項目使用dnxcore50框架。如果我在PCL中做類似的話怎麼會抱怨:

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

如果是這種情況,那麼它如何安裝到ASP NET Core項目中。

更新2

我創建了一個針對.NET 4.5.1的新PCL。然後我通過Nuget將EntityFramework.MicrosoftSqlServer 7.0.0-rc1-final安裝到那個,它安裝沒有問題。雖然我現在不能重複這一點。我剛剛創建了一個單獨的解決方案,其中包含一個針對ASP NET Core和.NET 4.5.1的PCL Library項目。現在輸出以下內容:

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'mark checked!),完全來自nuget。

讓我補充一點:我喜歡這些傢伙正在做的一切,我喜歡新的東西,很多非常好的東西。但是,當它充滿了已經在重新設計的rc2版本中修復過的錯誤時,我們不應該被擱置半年,並且仍然標記為“RC”版本,而這些錯誤尚未公佈。 [/最終咆哮] *



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因