繁体   English   中英

ASP.NET 5 Web项目和Entity Framework在不同的项目中

[英]ASP.NET 5 Web project and Entity Framework in separate projects

从哪里开始......这让我整天都在。

我已更新我的项目以使用新的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 - 我的Web应用程序,由WebApi和angularJs组成。

现在我有一个project.json文件,每个项目,看起来像这样

基础设施

{
    "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": { }
    }
}

数据(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": { }
    }
}

服务

{
    "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": { }
    }
}

我的web应用程序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"
    ]
}

现在这一切似乎都很好,没有错误,但是当我尝试运行时,我得到了上述消息。 我在这里看到另一个帖子,建议添加一个环境变量,但这似乎不起作用。

如果我删除了对其他项目的所有引用,请注释掉引用其他项目的所有代码,然后将框架标记更改为此,网站将加载。

"frameworks": {
    "dnx45": {
        "dependencies": {

        }
    }
},

任何帮助将不胜感激。

编辑。

这是我的项目属性

在此输入图像描述

当我改为dnxcore5时,我明白了

在此输入图像描述

编辑2:

我已经更新了所有项目以使用dnx50并删除了dnxcore50。 我仍然得到同样的错误。 它必须与我的安装有关......但我不知道......

第一个目标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。

dnx5不是一件事 - 你指的是一个不存在的框架。

当您将其更改为dnxcore50 ,您将失败,因为仅针对coreclr的项目无法引用以clr目标的库( net46 )。 无论如何, coreclr还没有完成功能,上次我检查它还没有实现System.Data.Sql ,所以无论如何你都无法运行Entity Framework。

您应该首先确定要运行应用程序的框架,仅针对它们, 然后确定修复依赖项。

尝试使用“Install-Package EntityFramework.MicrosoftSqlServer -Pre”。 为我工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM