MVCBuildViews在ASP.NET MVC 2中使用实体框架2
-
02-10-2019 - |
题
在VS 2010中,变化 <MvcBuildViews>true</MvcBuildViews>
在MVC2项目的.CSPROJ文件中,如果您使用实体框架,则会导致错误。
无法加载类型'System.Data.Entity.Design.aspNet.EntityDesignerBuildProvider'。 C: Windows Microsoft.net Framework V4.0.30319 config web.config 129
我想在调试时构建视图,我也希望我的项目编译!
解决方案
您可以通过在Web.config文件中添加以下元素来解决此MVC编译问题:
<add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
这将告诉编译器在哪里可以找到缺少类型。
其他提示
我也遇到了这个问题,并发现我已经创建了一些实体文件(EDMX等),但已删除它们。
这个问题只有在我创建这些文件之后才开始发生。在检查应用程序文件夹时,我发现Visual Studio实际上并未将它们“删除”驱动器,而是“删除”了项目。因此,当项目被编译时,它看到了此EDMX文件并决定将其包含在内。因此错误。
简单修复 - 将实体文件永久删除驱动器!
或者,您可以删除构建提供商。
<system.web>
<compilation debug="true" targetFramework="4.0">
<buildProviders>
<remove extension=".edmx"/>
</buildProviders>
</compilation>
</system.web>
这是一个完整的示例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>
设置时我有类似的错误 MvcBuildViews="true"
这与构建有关,因为构建温度文件而根本不喜欢它,这与构建有关。
这是一个完全不同的错误,但我偷偷摸摸地怀疑它们可能是相关的...
解决方案基本上使您可以更改输出路径所在的构建...因此您需要添加 <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,
查尔斯
不足以添加评论。想提一下,您需要将'system.data.entity.design'汇编添加到root web.config。我无意间试图将其添加到我的视图目录中的web.config中。当心这个陷阱。