EntityFramework ASP.Net 5 Class 库包中的命令?

EntityFramework Commands in ASP.Net 5 Class Library Package?

我正在尝试开发我的第一个 ASP.Net Web 应用程序,在我的解决方案中有两个项目。一个 Web ApplicationClass Library (Package)。当我构建此应用程序的 ASP.Net 4.5 版本时,我将我的 Entity Framework 6 实体放入 class 库中,所以我在 ASP.Net 5 版本中这样做。问题是当我将 EntityFramework.Commands 安装到 class 库时出现错误:

The dependency EntityFramework.Command 7.0.0-rc1-final in Project DBEntities does not support framework .NetPlatform, Version = 5.4

我对 的理解是 dotnet5.4 是新的 .Net 5,EF7 应该支持它。

这是我的 project.json 文件:

{
  "version": "1.0.0-*",
  "description": "FFInfo.DAL Class Library",
  "authors": [ "Mathew" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",
    "frameworks": {
        "dotnet5.4": {
            "dependencies": {
                "Microsoft.CSharp": "4.0.1-beta-23516",
                "System.Collections": "4.0.11-beta-23516",
                "System.Linq": "4.0.1-beta-23516",
                "System.Runtime": "4.0.21-beta-23516",
                "System.Threading": "4.0.11-beta-23516"
            }
        }
    },
    "dependencies": {
        "EntityFramework.Commands": "7.0.0-rc1-final",
        "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
    }
}

我是否安装了错误的包,是 EF7 更改太多以至于我构建 class 错误,还是我的 json 文件中缺少某些内容?

编辑: 基于建议的新 project.json 文件

{
    "version": "1.0.0-*",
    "description": "FFInfo.DAL Class Library",
    "authors": [ "Mathew" ],
    "tags": [ "" ],
    "projectUrl": "",
    "licenseUrl": "",
    "frameworks": {
        "dotnet5.4": {
            "dependencies": {
                "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-*",
                "Microsoft.Dnx.Runtime": "1.0.0-*",
                "Microsoft.Extensions.CommandLineUtils.Sources": {
                    "version": "1.0.0-*",
                    "type": "build"
                },
                "Microsoft.Extensions.PlatformAbstractions": "1.0.0-*",
                "System.Console": "4.0.0-*",
                "System.IO.FileSystem": "4.0.1-*"
            }
        },
        "netcore50": {
            "bin": {
                "assembly": "lib\netcore50\_._"
            }
        },
        "dependencies": {
            "EntityFramework.Commands": "7.0.0-rc1-final",
            "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
        }
    }
}

我想你的问题的原因是纯技术性的。 The announcement 声明将 dnx451 重命名为 net451 并将 dnxcore50 重命名为 dotnet5.4,但有人建议将这种重命名 仅用于 class 库 (您在 NuGet 上发布的与他人分享的示例)。如果我理解正确的话,你开发的 application 使用 class 库,因此你应该使用 dnxcore50 而不是 dotnet5.4。因此,您只需将字符串 "dotnet5.4" 重命名为字符串 "dnxcore50" in the fileproject.json` 即可解决问题.

独立于上述建议,我想补充我对你的问题的理解,为什么你得到关于 EntityFramework.Command 7.0.0-rc1-final 的错误。

我理解框架的重命名是微软计划未来变革的一个步骤。另一方面,框架的所有名称都将被解释为不同的名称。我建议你比较页面https://www.nuget.org/packages/EntityFramework.Commands/7.0.0-rc1-final from the corresponding information from https://www.nuget.org/packages/EntityFramework.MicrosoftSqlServer/7.0.0-rc1-final上显示的依赖项信息。 EntityFramework.MicrosoftSqlServer 的依赖项(使用 dotnet5.4 没有问题)如图所示

我标记阅读负责 dotnet5.4 的部分。另一方面,EntityFramework.Commands 的依赖关系如下图所示:

其中没有与新名称对应的“.NETPlatform 5.4”部分 dotnet5.4

我想这是 the part of project.json of EntityFramework.Commands 中的错误:

"netcore50": {
  "bin": {
    "assembly": "lib\netcore50\_._"
  }
}

我想必须将行中的 netcore50 更改为 dotnet5.4 才能正确支持新框架名称 dotnet5.4。可以将 "netcore50" 的内容替换为 dnxcore50 的副本(参见 the lines):

"dotnet5.4": {
  "dependencies": {
    "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-*",
    "Microsoft.Dnx.Runtime": "1.0.0-*",
    "Microsoft.Extensions.CommandLineUtils.Sources": {
      "version": "1.0.0-*",
      "type": "build"
    },
    "Microsoft.Extensions.PlatformAbstractions": "1.0.0-*",
    "System.Console": "4.0.0-*",
    "System.IO.FileSystem": "4.0.1-*"
  }
}

可能应该增加上面引用的 dll 的一些版本号,但是在发布新的固定版本之前,您仍然无法在 "dotnet5.4" 下使用 EntityFramework.Commands

更新: 我向 EntityFramework 开发团队提出了 the issue。我会在收到 Microsoft 对此问题的回复后附上它。