Visual Studio 2012 MVC构建错误:命名空间“System.Data.Entity”中不存在“Infrastructure”类型或命名空间

8

更新: 在“引用管理器”中选择了对System.Data.Entity的程序集引用。

环境设置

运行现成的ASP.NET MVC 3 Web应用程序时出错,没有进行任何修改。

我只是选择了文件>新建项目>Visual C#>ASP.NET MVC 3 Web应用程序并保留了所有默认设置。

项目设置下,我选择了模板中的Internet ApplicationRazor作为视图引擎,并选中了使用HTML5语义标记

然后我立即选择了生成>生成解决方案,但失败并产生了这个错误和其他五个警告(如截屏所示)。

错误信息

错误1 命名空间'System.Data.Entity'中不存在类型或命名空间名称'Infrastructure'(是否缺少程序集引用?)

C:\Users\johndoe\Documents\Visual Studio 2012\Projects\MvcApplication1\MvcApplication1\Global.asax.cs

是的,我知道...

我希望您能帮助翻译以下编程相关内容: 这个问题已经被问过很多次 — 但是那些帖子的答案没有提供足够的信息来解决我的问题。

请在您的回复中具体说明,并提供逐步指导,因为我对Visual Studio及其MVC应用程序开发框架还不熟悉。

问题

什么原因会导致Visual Studio无法正常使用? 这是一个全新的安装。是否有更新可能导致此问题或可以解决此问题?

截图

Screenshot of Visual Studio Error List

系统信息

Microsoft Visual Studio Ultimate 2012 版本号:11.0.61030.00 更新4

Microsoft .NET Framework 版本号:4.5.50709

已安装产品:

  • 架构和建模工具
  • Visual Studio 2012 的 LightSwitch
  • Office 开发人员工具
  • Visual Studio 2012 的 Team Explorer
  • Visual Basic 2012
  • Visual C# 2012
  • Visual C++ 2012
  • Visual F# 2012
  • Visual Studio 2012 代码分析拼写检查器
  • Visual Studio 2012 SharePoint 开发人员工具
  • ASP.NET 和 Web 工具
  • LNDevEnv
  • NuGet 包管理器
  • PreEmptive Analytics Visualizer
  • SQL Server 数据工具

问题完全一样,但解决方案含糊不清且没有帮助性。请参考上面的部分,其中写着“请在您的回复中具体说明,并提供逐步说明...” - gfullam
为什么不太有用呢?在这里你会得到完全相同的答案。你是否在添加程序集引用时遇到了问题? - tnw
不,你的问题是重复的,并将保持标记为此类问题。如果你愿意去找,就会发现如何添加程序集引用的逐步说明已经存在。我只花了大约10秒钟就找到了文档:http://msdn.microsoft.com/en-us/library/wkze6zky(VS.100).aspx 请再次说明你遇到了什么问题?你是否已经在我提供的链接中添加了对程序集的引用? - tnw
@tnw 我不确定如何回应。我已经回答了你所有的问题并提供了详细的细节。我已经更新了我的问题,表明我尝试了所谓的重复解决方案,但它并没有解决问题。我已经确保在引用管理器中选择了程序集,但错误仍然存在。 - gfullam
既然你已经回答了我的问题,那么请查看我的答案。 - tnw
显示剩余11条评论
5个回答

9

我曾遇到相同的问题,并通过添加对Entity Framework的引用来解决。 具体方法是:在“解决方案资源管理器”中右键单击“引用”,选择“添加引用”,然后浏览至C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE,选择EntityFramework.dll。


我发现了这一步,并在另一个答案上留下了类似的评论。点击查看 - gfullam

4
在选项卡上,选择下拉菜单“Debug”,然后选择“配置管理器”。从那里,选择“平台”下的下拉菜单,点击“新建”,现在在新平台下选择x86。点击确定并关闭配置管理器。尝试构建您的项目。
System.data.entity是一个32位程序集,因此您可能需要将项目构建为x86。如果这样做没有效果,您可以按照以上相同的步骤选择x64并再次尝试。
据我所知,您不应该这样做,我完全按照您的步骤进行操作,使用“任意CPU”构建时没有任何问题。
您也可以尝试安装entityframework。右键单击引用,管理nuget包,点击在线,您应该会看到EntityFramework出现在中间列中。

从配置管理器中,我尝试将平台更改为x86,然后更改为x64,但都没有解决问题。(注意:我在“生成”菜单下找到它,而不是“调试”菜单。) - gfullam
然而,我也收到了新的警告。警告:无法解析此引用。无法定位程序集“EntityFramework”。请确保该程序集存在于磁盘上。如果您的代码需要此引用,则可能会出现编译错误。 - gfullam
@gfullam 将构建更改回 Any CPU,看看会有什么结果。 - tnw
2
我接受这个答案是因为EntityFramework是罪魁祸首,但仅仅通过NuGet包管理器安装软件包是不够的。我还必须使用引用管理器手动浏览到EntityFramework.dll。作为测试,我创建了随后的新项目,并发现我必须为每个新项目手动浏览到.dll。我将不得不在另一个帖子中提出一个新问题,询问为什么即使已安装,我的新项目中的EntityFramework引用总是失效。感谢您的帮助。 - gfullam
2
@gfullam 有时候这些引用可能会出问题,很高兴看到安装EntityFramework至少让你朝着正确的方向前进了。 - tnw
显示剩余3条评论

3

我在MVC 4中遇到了同样的问题(在MVC 3中应该类似),这里是解决方法:

  • 在项目资源管理器中展开您的引用,并单击程序集引用(System.Data.Entity和任何其他默认使用的程序集引用都将在此处)

  • 在“属性”窗口中,将属性“复制本地”更改为“True”

  • 对于所有包含但出现构建错误的程序集引用,请重复上述两个步骤

完成此操作后,运行一个默认的MVC 3/4应用程序即可正常工作。


1
如果将构建设置更改为x86会在本地导致构建错误,则此解决方案可能适用于您。
我们遇到了相同的错误,对我们来说问题是以前版本的Entity Framework有多余的引用,虽然不再需要但仍会导致构建错误。我们在本地没有遇到构建问题,但在尝试在TeamCity上构建时,错误就会出现。
使用Package Manager控制台运行Update-Package EntityFramework -Reinstall,这将为我们删除引用。

0
使用Visual Studio 2012,我可以通过浏览路径来添加引用以解决此问题:C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\NuGet Packages\EntityFramework.5.0.0\lib\net45,并选择entity framework.dll。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接