在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
我想在调试时构建视图,我也希望我的项目能够编译!
答案 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有关,因为构建临时文件并且根本不喜欢它。
这是一个完全不同的错误,但我怀疑他们可能是相关的......
该解决方案基本上可以让您更改输出路径为您构建的位置...因此您需要将<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。注意这个陷阱。