Proyecto web ASP.NET 5 y Entity Framework en proyectos separados

Por dónde empezar … Esto me ha tenido todo el día.

He actualizado mis proyectos para usar la nueva plantilla de vista previa vacía de ASP.NET 5.

Logré construir todos mis proyectos, pero cuando ejecuto mi sitio web, recibo este error.

El marco de destino de tiempo de ejecución actual no es compatible con ‘MY.WEB.NAMESPACE’.

Marco de objectives de tiempo de ejecución actual: ‘DNX, versión = v4.5.1 (dnx451)’ Tipo: Arquitectura CLR: x86 Versión: 1.0.0-beta5-12103

Asegúrese de que el tiempo de ejecución coincida con un marco especificado en project.json

Todos los ejemplos que he visto hasta ahora, parecen tener tanto EntityFramework en el mismo proyecto, pero estoy usando EntityFramework (actualmente versión 6), en un proyecto separado. Mis proyectos son los siguientes

Infraestructura – Funciones útiles, referenciadas por cualquier proyecto.

Entidades – Mis objetos POCO

Datos – Mi clase DbContext y otro código específico de la base de datos

Servicio : Mis servicios para agregar / actualizar entidades, también hace referencia a SimpleValidation para mi validación

Web : mi aplicación web, que consta de WebApi y angularJs.

Ahora tengo un archivo project.json para cada proyecto, que se ve así

INFRAESTRUCTURA

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

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

SERVICIO

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

Mi aplicación web, project.json se ve así

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

Ahora todo esto parece funcionar bien, sin errores, pero cuando bash ejecutarlo, recibo el mensaje anterior. Vi otra publicación aquí que sugiere agregar una variable de entorno, pero esto no parece funcionar.

Si elimino todas las referencias a mis otros proyectos, comente todo el código que hace referencia a los otros proyectos y luego cambie la etiqueta de marco a esto, el sitio se carga.

 "frameworks": { "dnx45": { "dependencies": { } } }, 

Cualquier ayuda sería muy apreciada.

EDITAR.

Aquí están mis propiedades de proyecto

introduzca la descripción de la imagen aquí

Cuando cambio a dnxcore5, obtengo esto

introduzca la descripción de la imagen aquí

EDIT 2:

He actualizado todos mis proyectos para usar dnx50 y solté dnxcore50. Todavía me sale el mismo error. Debe ser algo que ver con mi instalación … Pero de lo que no tengo idea …

Primer objective dnx-clr-win-x86 (lo más probable es que sea beta5 en su caso) ya que desea ejecutar esto en IIS con Entity Framework. Compruebe las propiedades de su solución. También eche un vistazo a global.json en su carpeta Elementos de la solución. Tenga en cuenta que el tiempo de ejecución se dirige a clr .

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

Cambie dnx5 (esto no existe) a dnx46 y elimine dnxcore50 de todos los archivos project.json.

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

Agregue una variable de entorno a su proyecto web “DNX_IIS_RUNTIME_FRAMEWORK”: “DNX46”

Una nota al margen, beta7 ya está fuera y le sugiero que use eso en lugar de beta5 y también recuerde actualizar su dnvm.

dnx5 no es una cosa, estás especificando un marco que no existe.

Cuando lo cambia a dnxcore50 , está obteniendo dnxcore50 porque un proyecto que solo se enfoca en el coreclr no puede hacer referencia a las bibliotecas que apuntan al clr ( net46 ). En cualquier caso, el coreclr aún no está completo y la última vez que lo verifiqué no implementó System.Data.Sql , por lo que no puede ejecutar Entity Framework en él de todos modos.

Primero debe determinar en qué marcos desea ejecutar su aplicación, apuntarlos únicamente y luego trabajar para corregir sus dependencias.

Intente usar “Install-Package EntityFramework.MicrosoftSqlServer –Pre”. Trabajó para mi.