2010-05-04 18 views
32

En VS 2010, cambiar <MvcBuildViews>true</MvcBuildViews> en un archivo .csproj de proyecto MVC2 provoca un error si está utilizando Entity Framework.MvcBuildViews verdadero con Entity Framework en ASP.NET MVC 2

Could not load type 'System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider'. C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config 129

Quiero construir vistas mientras estoy depurando, ¡y también quiero que compile mi proyecto!

Respuesta

58

Puede resolver este MVC compilar problema agregando el elemento siguiente a su archivo web.config:

<add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 

Esto le dirá al compilador dónde encontrar ese tipo faltante

+5

Solución obvia y lógica. Gracias. Pero, ¿por qué se está comportando así? ¿Por qué necesito agregar el espacio de nombres System.Data.Entity.Design a mi ensamblado? No tiene nada que ver con mi código. El trabajo de I Visual Studio, no debería agregarse a mi aplicación. –

+1

¿Alguien sabe por qué sucede esto? – BrianFinkel

+7

Entra en '' - para evitar que alguien más se moleste en darse cuenta. Ref http: // stackoverflow.com/a/10078384/10245 –

0

Tuve un error similar al configurar MvcBuildViews="true" que tenía que ver con la compilación encontrar múltiples web.configs debido a los archivos temporales de compilación y simplemente no me gusta.

Es un error totalmente diferente, pero tengo la ligera sospecha de que podrían estar relacionados ...

Usted puede encontrar la pregunta original que tenía here y después la solución se indica here.

La solución básicamente te lleva a cambiar dónde está la ruta de salida para tus compilaciones ... por lo que necesitas agregar <BaseIntermediateOutputPath> al archivo csproj de tu sitio web.

E.g.

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    ...BLAH... 
    <BaseIntermediateOutputPath>..\TempBuildOutput</BaseIntermediateOutputPath> 
    </PropertyGroup> 
    ...A WHOLE LOTTA BLAH... 
</Project> 

HTHS,
Charles

2

Este es un ejemplo completo web.config

<configuration> 
<system.web> 
    <customErrors mode="Off"/> 
     <compilation debug="true" targetFramework="4.0"> 
<assemblies> 
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />  
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    <add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    </assemblies> 
</compilation> 
</system.web> 
</configuration> 
4

tuve este problema también, y di cuenta de que yo había creado algunos archivos entidad (EDMX y similares), pero los había eliminado.

este problema solo comenzó a suceder después de que había creado estos archivos. al inspeccionar las carpetas de la aplicación, descubrí que el estudio visual no las había "borrado" de la unidad, simplemente las había "eliminado" del proyecto. por lo tanto, cuando se estaba compilando el proyecto, vio este archivo edmx y decidió que lo incluiría. de ahí el error.

solución fácil - ¡borre permanentemente los archivos de entidades de la unidad!

+0

Esto terminó siendo mi problema, algo se ha arrastrado accidentalmente y se ha caído en la carpeta incorrecta. – Falkayn

+0

acaba de descubrir esto en el mío. el compilador escogió el antiguo edmon reemplazado por alguna razón @ # $ @ # $. –

+0

Creo que retrocederé unos pocos pasos si acabo de eliminar mi archivo .edmx. Es bastante central para mi proyecto. – ProfK

3

Alternativamente, puede eliminar el proveedor de compilación.

<system.web> 
    <compilation debug="true" targetFramework="4.0"> 
    <buildProviders> 
     <remove extension=".edmx"/> 
    </buildProviders> 
    </compilation> 
</system.web> 
+0

Error con el error: "Es un error utilizar una sección registrada como allowDefinition = 'MachineToApplication' más allá del nivel de la aplicación." –

+0

@PhilippMunin ese error significa que el archivo de configuración que está editando no está en la carpeta raíz de la aplicación IIS, que normalmente significa que está editando el incorrecto (las subcarpetas a veces también obtienen archivos de configuración) o usted no configuró iis para servir su proyecto como una aplicación. Más información sobre las aplicaciones: http://technet.microsoft.com/en-us/library/cc771654(v=ws.10).aspx –

0

No hay suficiente representante para agregar un comentario. Quería mencionar que necesita agregar la referencia de ensamblado 'System.Data.Entity.Design' a la raíz Web.config. Inadvertidamente, intenté agregarlo a un Web.config en mi directorio de Vistas. Cuidado con este escollo.

+1

¿Es esto un comentario o una respuesta? Si su sugerencia soluciona el problema al que se enfrenta el OP, modifique esto para que esté redactado como una respuesta normal y no como un intento de eludir las reglas que exigen que 50 representantes hagan comentarios. Si solo es un comentario que se presenta como una respuesta, elimínelo. Esta respuesta se encuentra actualmente en una cola de revisión y podría eliminarse por violar las reglas del sitio. – BSMP

+0

Está eludiendo las reglas que requieren 50 representantes para comentar. Si alguien pudiera agregar esta "respuesta" a la respuesta elegida como un comentario, sería muy útil. Gracias. –

Cuestiones relacionadas