MvcBuild与ASP.NET MVC 2中的Entity Framework一起使用

时间:2010-05-04 01:26:58

标签: asp.net asp.net-mvc entity-framework csproj

在VS 2010中,如果您使用的是Entity Framework,则更改MVC2项目的.csproj文件中的<MvcBuildViews>true</MvcBuildViews>会导致错误。

  

无法加载类型'System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider'。 C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ web.config 129

我想在调试时构建视图,我也希望我的项目能够编译!

6 个答案:

答案 0 :(得分:58)

您可以通过将以下元素添加到web.config文件来解决此MVC编译问题:

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

这将告诉编译器在哪里找到丢失的类型。

答案 1 :(得分:4)

我也有这个问题,并且发现我创建了一些实体文件(edmx之类),但已经删除了它们。

这个问题才在我创建这些文件后才开始发生。在检查应用程序文件夹时,我发现visual studio实际上并没有从驱动器中“删除”它们,它只是将它们“删除”出了项目。因此,在编译项目时,它看到了这个edmx文件,并决定将其包含在内。因此错误。

轻松修复 - 永久删除驱动器上的实体文件!

答案 2 :(得分:3)

或者,您可以删除构建提供程序。

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

答案 3 :(得分: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 :(得分: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,
查尔斯

答案 5 :(得分:0)

没有足够的代表来添加评论。想提一下,你需要将'System.Data.Entity.Design'程序集引用添加到根Web.config。我无意中试图将它添加到我的Views目录中的Web.config。注意这个陷阱。