Asp.net core ASP.Net 5类库包中的EntityFramework命令?
我正在尝试开发我的第一个ASP.NETWeb应用程序,在我的解决方案中,我有两个项目。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
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-*无法解决