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 в моей директории представлений. Следите за этой ловушкой.