且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

ASP.NET 5 Web项目和实体框架在单独的项目中

更新时间:2023-02-15 20:22:35

第一个目标 dnx-clr-win-x86 (很可能是您的情况下的beta5),因为您希望在IIS上使用实体框架运行此操作。检查您的解决方案属性另请参阅解决方案项目文件夹中的 global.json 。请注意,运行时目标是 clr

 sdk:{
version :1.0.0-beta5,
runtime:clr,
architecture:x86
}
pre>

将dnx5(这不存在)更改为dnx46,并从所有project.json文件中删除dnxcore50。

 框架:{
dnx46:{
dependencies:{}
}
},

向您的Web项目DNX_IIS_RUNTIME_FRAMEWORK添加一个环境变量: DNX46



一个附注,beta7已经出来,我建议你使用而不是beta5,并记得升级你的dnvm。


Where to begin... This has had me all day.

I have updated my projects to use the new ASP.NET 5 Empty Preview Template.

I have managed to get all my projects building, but when i run my website, i get this error

The current runtime target framework is not compatible with 'MY.WEB.NAMESPACE'.

Current runtime Target Framework: 'DNX,Version=v4.5.1 (dnx451)' Type: CLR Architecture: x86 Version: 1.0.0-beta5-12103

Please make sure the runtime matches a framework specified in project.json

All the examples i have seen so far, seem to have both EntityFramework in the same project, but i am using EntityFramework (currently version 6), in a separate project. My Projects are as follows

Infrastructure - Helpful functions, referenced by any project

Entities - My POCO objects

Data - My DbContext class and other Database specific code

Service - My services to add/update entities, also references SimpleValidation for my validation

Web - My web application, which consists of WebApi and angularJs.

Now i have a project.json file for each project, which looks like so

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

My web application, project.json looks like this

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

Now this all seems to build fine, with no errors, but when i try to run, i get the above message. I saw another post here which suggests adding an environment variable, but this doesnt seem to work.

If i remove all the references to my other projects, comment out all code that references the other projects, and then change frameworks tag to this, the site loads.

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

        }
    }
},

Any help would be greatly appreciated.

EDIT.

Here is my project properties

When i change to dnxcore5, i get this

EDIT 2:

I have updated all my projects to use dnx50 and dropped dnxcore50. I still get the same error. It must be something to do with my installation....But what i have no idea...

First target dnx-clr-win-x86 (most likely beta5 in your case) since you want to run this on IIS with Entity Framework. Check your solution properties. Also have a look at global.json in your Solution Items folder. Please note that runtime targets clr.

"sdk": {
    "version": "1.0.0-beta5",
    "runtime": "clr",
    "architecture": "x86"
}

Change dnx5 (this doesn't exist) to dnx46 and remove dnxcore50 from all project.json files.

"frameworks": {
    "dnx46": {
        "dependencies": {}
    }
},

Add an environment variable to your web project "DNX_IIS_RUNTIME_FRAMEWORK" : "DNX46"

A side note, beta7 is already out and I suggest you use that rather than beta5 and also remember to upgrade your dnvm.