从哪里开始......这让我整天都在。
我已更新我的项目以使用新的ASP.NET 5空预览模板。
我设法让所有项目都建成,但是当我运行我的网站时,我收到了这个错误
当前的运行时目标框架与之不兼容 'MY.WEB.NAMESPACE'。
当前运行时目标框架:'DNX,Version = v4.5.1(dnx451)'类型: CLR架构:x86版本:1.0.0-beta5-12103
请确保运行时与指定的框架匹配 project.json
到目前为止我看到的所有示例似乎在同一个项目中都有EntityFramework,但我在一个单独的项目中使用EntityFramework(当前版本为6)。我的项目如下
基础设施 - 有用的功能,由任何项目引用
实体 - 我的POCO对象
数据 - 我的DbContext类和其他数据库特定代码
服务 - 我添加/更新实体的服务,也引用了SimpleValidation 我的验证
Web - 我的网络应用程序,由WebApi和angularJs组成。
现在每个项目都有一个project.json文件,看起来像这样
INFRASTRUCTURE
{
"version": "1.0.0-*",
"description": "my.namespace.Infrastructure",
"authors": [ "me" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"dependencies": {
"System.Collections": "4.0.11-beta-23225",
"System.Linq": "4.0.1-beta-23225",
"System.Threading": "4.0.11-beta-23225",
"System.Runtime": "4.0.21-beta-23225",
"Microsoft.CSharp": "4.0.1-beta-23225",
"Humanizer": "1.37.7"
},
"frameworks": {
"net46": { }
}
}
ENTITES(POCOS)
{
"version": "1.0.0-*",
"description": "my.namespace.Entities",
"authors": [ "me" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"dependencies": {
"System.Collections": "4.0.11-beta-23225",
"System.Linq": "4.0.1-beta-23225",
"System.Threading": "4.0.11-beta-23225",
"System.Runtime": "4.0.21-beta-23225",
"Microsoft.CSharp": "4.0.1-beta-23225"
},
"frameworks": {
"net46": { }
}
}
DATA(DBCONTEXT)
{
"version": "1.0.0-*",
"description": "my.namespace.Data",
"authors": [ "me" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"dependencies": {
"System.Collections": "4.0.11-beta-23225",
"System.Linq": "4.0.1-beta-23225",
"System.Threading": "4.0.11-beta-23225",
"System.Runtime": "4.0.21-beta-23225",
"Microsoft.CSharp": "4.0.1-beta-23225",
"DbExtensions": "5.1.0",
"my.namespace.Entities": "1.0.0-*",
"my.namespace.Infrastructure": "1.0.0-*",
"EntityFramework": "6.1.3"
},
"frameworks": {
"net46": { }
}
}
SERVICE
{
"version": "1.0.0-*",
"description": "my.namespace.Service",
"authors": [ "me" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"dependencies": {
"System.Collections": "4.0.10-beta-23019",
"System.Linq": "4.0.0-beta-23019",
"System.Threading": "4.0.10-beta-23019",
"System.Runtime": "4.0.10-beta-23019",
"Microsoft.CSharp": "4.0.0-beta-23019",
"FluentValidation": "5.6.2",
"my.namespace.Entities": "1.0.0-*",
"my.namespace.Data": "1.0.0-*",
"my.namespace.Infrastructure": "1.0.0-*",
"ncalc": "1.3.8"
},
"frameworks": {
"net46": { }
}
}
我的网络应用程序,project.json看起来像这样
{
"webroot": "wwwroot",
"version": "1.0.0-*",
"description": "my.namespace.Web",
"authors": [ "me" ],
"dependencies": {
"Microsoft.AspNet.Server.IIS": "1.0.0-beta5",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta5",
"Microsoft.AspNet.Mvc": "6.0.0-beta5",
"AutoMapper": "4.0.4"
},
"commands": {
"web": "Microsoft.AspNet.Hosting --config hosting.ini"
},
"frameworks": {
"dnx5": {
"dependencies": {
"my.namespace.Infrastructure": "1.0.0-*",
"my.namespace.Entities": "1.0.0-*",
"my.namespace.Data": "1.0.0-*",
"my.namespace.Service": "1.0.0-*"
}
}
},
"publishExclude": [
"node_modules",
"bower_components",
"**.xproj",
"**.user",
"**.vspscc"
],
"exclude": [
"wwwroot",
"node_modules",
"bower_components"
]
}
现在这一切看起来都很好,没有错误,但是当我尝试运行时,我得到了上述消息。我看到另一篇文章here建议添加一个环境变量,但这似乎不起作用。
如果我删除了对其他项目的所有引用,请注释掉引用其他项目的所有代码,然后将框架标记更改为此,网站将加载。
"frameworks": {
"dnx45": {
"dependencies": {
}
}
},
非常感谢任何帮助。
EDIT。
这是我的项目属性
当我改为dnxcore5时,我得到了这个
编辑2:
我更新了所有项目以使用dnx50并删除了dnxcore50。我仍然得到同样的错误。它必须与我的装置有关......但我不知道......
答案 0 :(得分:4)
第一个目标 dnx-clr-win-x86 (在您的情况下很可能是beta5),因为您希望在带有Entity Framework的IIS上运行此目标。检查解决方案属性。还可以查看Solution Items文件夹中的 global.json 。请注意,运行时目标 clr 。
"sdk": {
"version": "1.0.0-beta5",
"runtime": "clr",
"architecture": "x86"
}
将dnx5(这不存在)更改为dnx46并从所有project.json文件中删除dnxcore50。
"frameworks": {
"dnx46": {
"dependencies": {}
}
},
将环境变量添加到您的Web项目" DNX_IIS_RUNTIME_FRAMEWORK" :" DNX46"
附注,beta7已经出来了,我建议你使用它而不是beta5,并记得升级你的dnvm。
答案 1 :(得分:1)
dnx5
不是一件事 - 你指的是一个不存在的框架。
当您将其更改为dnxcore50
时,您将失败,因为仅定位coreclr
的项目无法引用定位clr
(net46
)的库。无论如何,coreclr
尚未完成功能,上次我检查它时尚未实现System.Data.Sql
,因此无论如何都无法在其上运行实体框架。
首先应确定要运行应用程序的框架,仅针对它们,然后然后修复依赖项。
答案 2 :(得分:0)
尝试使用" Install-Package EntityFramework.MicrosoftSqlServer -Pre"。 为我工作。