MvcBuildViews true с Entity Framework в ASP.NET MVC 2

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

Не удалось загрузить тип 'System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider'. C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config 129

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

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

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

В основном решение поможет вам изменить путь вывода для вас... так что вам нужно добавить <BaseIntermediateOutputPath> к вашему сайту csproj файл.

например.

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

Ответ 6

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