2010-05-04 2 views
32

В VS 2010 изменение <MvcBuildViews>true</MvcBuildViews> в файле .csproj проекта MVC2 вызывает ошибку, если вы используете Entity Framework.MvcBuildViews true с Entity Framework в 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

Я хочу создавать представления во время отладки, а также хочу, чтобы мой проект был скомпилирован!

ответ

58

Вы можете решить эту проблему MVC компиляции, добавив следующий элемент в файле web.config:

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

Это сказать компилятору, где найти это отсутствующий тип.

+5

Очевидное и логичное решение. Благодарю. Но почему так поступают? Почему мне нужно добавить пространство имен System.Data.Entity.Design в мою сборку, это не имеет никакого отношения к моему коду. Я работаю Visual Studio, его не следует добавлять в мое приложение. –

+1

Кто-нибудь знает, почему это происходит? – BrianFinkel

+7

Идет в '' - спасти кого-либо еще от проблемы с этим. Ref http: // stackoverflow.com/a/10078384/10245 –

0

У меня была схожая ошибка при установке MvcBuildViews="true", которая была связана с сборкой, нахождением нескольких web.configs из-за создания временных файлов и просто не нравится.

Это совершенно другая ошибка, но у меня есть подозрение, что подлый они могут быть связаны ...

Вы можете найти оригинальный вопрос, который я имел here и затем раствор описано here.

Решение в основном поможет вам изменить, где путь вывода для вас создается ... поэтому вам нужно добавить <BaseIntermediateOutputPath> в файл csproj вашего сайта.

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,
Чарльз

2

Это полный пример 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

я имел эту проблему тоже, и понял, что я создал несколько сущностей файлы (EDMX и тому подобное), но они были удалены.

эта проблема началась только после того, как я создал эти файлы. при проверке папок приложения я обнаружил, что визуальная студия на самом деле не «удалила» их с диска, а просто «удалила» их из проекта. поэтому, когда проект компилировался, он увидел этот файл edmx и решил включить его. следовательно, ошибка.

легко исправить - навсегда удалить файлы сущности с диска!

+0

Это оказалось моей проблемой, что-то случайно перетаскивалось и попадало в неправильную папку. – Falkayn

+0

просто понял это в моей. старый замененный edmx собирался компилятором для некоторой причины @ # $ @ # $. –

+0

Думаю, я вернусь несколько шагов, если бы просто удалил мой .edmx-файл. Это очень важно для моего проекта. – ProfK

3

В качестве альтернативы вы можете удалить поставщика сборки.

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

Ошибка с ошибкой: «Ошибка использования раздела, зарегистрированного как allowDefinition =« MachineToApplication », превышающего уровень приложения». –

+0

@PhilippMunin, эта ошибка означает, что файл конфигурации, который вы редактируете, не находится в корневой папке приложения IIS, что обычно означает, что вы редактируете неправильный (иногда в подпапки также входят файлы конфигурации) или вы не настроили iis чтобы служить вашему проекту в качестве приложения. Дополнительная информация о приложениях: http://technet.microsoft.com/en-us/library/cc771654(v=ws.10).aspx –

0

Недостаточно репутации, чтобы добавить комментарий. Хотелось упомянуть, что вам нужно добавить ссылку на сборку «System.Data.Entity.Design» на корневой Web.config. Я непреднамеренно пытался добавить его в Web.config в моей директории представлений. Следите за этой ловушкой.

+1

Это комментарий или ответ? Если ваше предложение устраняет проблему, с которой сталкивается OP, пожалуйста, отредактируйте это, чтобы он был сформулирован как обычный ответ, а не попытка обойти правила, требующие комментариев 50 rep. Если это всего лишь комментарий, представляющий собой ответ, удалите его. Этот ответ в настоящее время находится в очереди просмотра и может быть удален для нарушения правил сайта. – BSMP

+0

Обход правил, требующих 50 комментариев для комментариев. Если бы кто-то мог добавить этот «ответ» к выбранному ответу в качестве комментария, это было бы очень полезно. Благодарю. –

Смежные вопросы