尝试安装带有可移植类库的EF Core,目标是.Net 4.6.1

时间:2016-05-02 12:47:25

标签: entity-framework portable-class-library entity-framework-core

这是我第一次使用VS2015试用EF Core,ASP Net Core和Portable Class Libraries。可以说我很沮丧。

我想创建一个库,我可以在其中安装EntityFramework.Core。这个库需要在WPF应用程序和ASP .NET核心Web应用程序中使用 - 暂时忽略任何好的分层应用程序概念。我的想法是创建一个可移植类库。

使用我定位.NET 4.6和ASP Net Core的项目模板......

Targets

我得到一个带有类和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包...

Install 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。

公平地说,这非常令人沮丧。也许我叫错了树还是今天刚刚狂叫声。

3 个答案:

答案 0 :(得分:2)

我不知道这对于您的便携式类需求会如何,但对于常规.NET(4.6或其他),我发现了以下内容。 (见下面的咆哮)

所以我不知道这是不是犹太洁食'或不,但这个来源现在可以使用:

  

添加nuget包源(选项 - 包源 - 添加(加)

     

如果要为SqlServer安装,只需安装:

  

Microsoft.EntityFrameworkCore.SqlServer

或者选择另一个顶级依赖项,它将获取所需的所有其他依赖项。

* [开始-咆哮] 那只是在EF github讨论中徘徊。完全不可原谅的是,他们没有实际的描述来解释现在该做什么。他们应该使用它的所有错误,以及与现在正在进行的工作完全不同的设计,以及未经过5个月更新的版本(!#RC;#34; 1版本)。这是在预先发布'标记检查!),完全来自nuget。

让我补充一点:我喜欢这些家伙所做的一切,我喜欢新的东西,很多非常好的东西。但是,我们不应该被搁置半年,并且仍然标记为" RC"当它充满了已经在彻底重新设计的rc2版本中修复的bug时,它们还没有被公开。 [/最终咆哮] *

答案 1 :(得分:0)

您是否尝试将框架导入更改为:

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

答案 2 :(得分:0)

我创建了一个项目类库Core 4.6并在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"
          ]
        }
      }
    }