Asp.net core ASP.Net 5类库包中的EntityFramework命令?

Asp.net core ASP.Net 5类库包中的EntityFramework命令?,asp.net-core,.net-core,entity-framework-core,Asp.net Core,.net Core,Entity Framework Core,我正在尝试开发我的第一个ASP.NETWeb应用程序,在我的解决方案中,我有两个项目。Web应用程序和类库(包)。当我构建这个应用程序的ASP.NET4.5版本时,我将我的EntityFramework6实体放入一个类库中,因此我在ASP.NET5版本中这样做。问题是当我将EntityFramework.Commands安装到类库时,我得到错误: 项目DBEntities中的依赖项EntityFramework.Command 7.0.0-rc1-final不支持framework.NetPla

我正在尝试开发我的第一个ASP.NETWeb应用程序,在我的解决方案中,我有两个项目。
Web应用程序
类库(包)
。当我构建这个应用程序的ASP.NET4.5版本时,我将我的
EntityFramework6
实体放入一个类库中,因此我在
ASP.NET5
版本中这样做。问题是当我将
EntityFramework.Commands
安装到类库时,我得到错误:

项目DBEntities中的依赖项EntityFramework.Command 7.0.0-rc1-final不支持framework.NetPlatform,版本=5.4

我的理解是,
dotnet5.4
是新的.net5,应该由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的变化是否如此之大以致于我构建的类是错误的,或者我在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"
        }
    }
}

我想你问题的原因纯粹是技术性的。声明将dnx451重命名为net451,将dnxcore50重命名为dotnet5.4,但建议仅对类库使用此类重命名(例如,您可以在NuGet上公开这些类库以与其他类库共享)。如果我理解正确,您开发的应用程序使用类库,因此您应该使用
dnxcore50
而不是
dotnet5.4
。因此您只需将文件project.json`中的字符串“dotnet5.4”重命名为字符串“dnxcore50”,即可解决问题

独立于上述建议,我想补充我对您的问题的理解,即您为什么会遇到EntityFramework.Command 7.0.0-rc1-final的错误

我认为框架的更名是微软未来变革的方向。另一方面,所有框架的名称将被解释为不同的名称。我建议您将页面上显示的依赖项信息与来自的相应信息进行比较。
EntityFramework.MicrosoftSqlServer
(使用
dotnet5.4
)的依赖项如图所示

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

没有对应新名称的“.NETPlatform 5.4”节
dotnet5.4

我想这是
EntityFramework.Commands的
project.json
中的一个bug:

“netcore50”:{
“bin”:{
“程序集”:“lib\\netcore50\\\\\\\\\\”
}
}
我认为必须在行中将
netcore50
更改为
dotnet5.4
,以正确支持新的框架名称
dotnet5.4
。一个选项可以将
“netcore50”
的内容替换为
dnxcore50
的副本(请参阅):

“dotnet5.4”:{
“依赖项”:{
“Microsoft.AspNet.Hosting.Abstractions”:“1.0.0-*”,
“Microsoft.Dnx.Runtime”:“1.0.0-*”,
“Microsoft.Extensions.CommandLineUtils.Sources”:{
“版本”:“1.0.0-*”,
“类型”:“生成”
},
“Microsoft.Extensions.PlatformAbstrations”:“1.0.0-*”,
“系统控制台”:“4.0.0-*”,
“System.IO.FileSystem”:“4.0.1-*”
}
}
可能应该增加上面引用的DLL的一些版本号,但在发布新的固定版本之前,您仍然无法使用
下的
EntityFramework.Command


更新:我向EntityFramework开发团队提出了建议。在我得到它之后,我将包括微软对这个问题的回应。

框架
dotnet5.4
dnxcore50
的同义词,而不是
dnx451
(请参阅)。我个人觉得名字的变化很糟糕。首先,我建议您将
dotnet5.4
重命名为
dnxcore50
。如果您的类库主要用于ASP.Net 4.5,您可能应该使用
net451
dnx451
而不是
“框架”、“dotnet5.4”、“依赖项”
?无论如何,我建议您将
“dnx451”:{}
(或
“net451”:{}
)添加回
“框架”
。如果你能重现这个问题,我可以尝试提供更多帮助。@Oleg我不希望它以
.Net 4.5
为目标,我希望它以
.Net 5.0核心
为目标。这个
类库
用于
ASP.Net 5
版本的web应用程序。我认为你的问题可以通过将
“dotnet5.4”
重命名为
“dnxcore50”
。如果可行,我会发布我的答案,并提供更详细的解释。我认为您可以另外删除
“框架”“dotnet5.4”
“框架”“dnxcore50”
)中包含的所有
“依赖项”
),并可能使用常见的
“依赖项”“
,但只包括真正需要的依赖项。“框架”的优化独立于您的主要问题。但是
EntityFramework.Commands
不是类库,而是…@StaffordWilliams:我认为目前在术语上存在一些差异。对我来说,DLL不是应用程序。独立于“EntityFramework.Commands”的分类,如果希望允许在应用程序中使用它,则必须使用
“dotnet5.4”
作为
“frameworks”
进行编译,而这些应用程序也使用它并编译为
dotnet5.4
。您可以尝试在某些使用EntityFramework的项目中重现该问题。通过将
dnxcore50
重命名为
dotnet5.4
,您将得到错误。我试图复制您链接到的谎言,但现在我得到的
依赖项Microsoft.Extensions.CommandLineUtils.Sources>=1.0.0-*无法解决