我最近在Visual Studio 2010中安装了Visual Studio 11 Beta。之后我无法在依赖PostSharp的Visual Studio 2010中构建项目,因此我卸载了Visual Studio 11和.Net Framework 4.5 Beta。
当我现在尝试在Visual Studio 2010中构建项目时,我收到以下错误:
Error 20: The "EntityHydrate" task failed unexpectedly.
System.TypeInitializationException: The type initializer for 'Microsoft.Data.Entity.Design.Model.SchemaManager' threw an exception. ---> System.MissingFieldException: Field not found: 'System.Data.Entity.Design.EntityFrameworkVersions.Version3'.
at Microsoft.Data.Entity.Design.Model.SchemaManager..cctor()
--- End of inner exception stack trace ---
at Microsoft.Data.Entity.Design.Model.SchemaManager.GetSchemaVersion(XNamespace xNamespace)
at Microsoft.Data.Tools.Integration.Build.EntityHydrate.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult)
BuildingModule
我已经重新安装了Entity Framework 4.1和.Net Framework 4但没有成功。我也无法找到关于" EntityHydrate"的目的的信息。任务或为什么它试图访问"版本3"实体框架的命名空间。
知道怎么解决这个问题吗?我无法找到实体框架3的下载链接,也许可以解决问题?
谢谢。
答案 0 :(得分:30)
感谢你提出这个问题。我们(EF团队)做了一些调查,我们得出结论,可以在包含SQL Server 11和Visual Studio 11 Beta的计算机中触发该问题。
在测试版中,EF Tools(也称为“SQL Server数据框架工具”)的设置包含此MSBUILD目标文件:
C:\ Program Files(x86)\ MSbuild \ 4.0 \ Microsoft.Common.Targets \ ImportAfter \ Microsoft.Data.Tools.Integration.targets
注意:如果您有32位版本的Windows,请使用不带“(x86)”的“Program Files”。
此文件是实体框架设计器和SQL Server数据工具之间集成的过时遗留,它包含在Visual Studio 11开发人员预览版中,但已在测试版中删除(有关详细信息,请参阅here)。该文件已在更新的内部版本中删除,因此它不会出现在RTM中。
您可以解决此问题,您可以删除或重命名目标文件,例如添加.backup扩展名。
编辑:抓一点......有人在下面报道重命名是不够的。您必须删除该文件。
此线程中建议的其他解决方法也可以使用,但它的缺点是从Visual Studio安装程序中删除整个Entity Framework Designer。
答案 1 :(得分:21)
我终于明白了。该问题是由与.Net Framework 4.5 Beta一起安装的Entity Framework 5引起的。 EF 5由错误消息中提到的Version3常量引用。 EF 4的内部名称是Version2。
“Microsoft.Data.Entity.Design.Model.SchemaManager”类是名为 SQL Server数据框架工具的组件的一部分,该组件随Visual Studio 11一起安装。即使我已经卸载了所有类Visual Studio 11和.Net Framework 4.5相关的东西,该组件仍然存在,并由VS 2010用于使用实体框架的项目。
删除该组件后,一切正常。在已安装的程序列表中可能有多个条目,只需搜索“数据”即可找到它们。
答案 2 :(得分:6)
您必须删除此目录 C:\ Program Files(x86)\ MSbuild \ 4.0
答案 3 :(得分:0)
我只是发帖,因为这里的任何内容似乎都不起作用。根据@divega的说法,我决定从“程序和功能”中删除所有SQL Server 2012条目,之后我可以在VS2010中构建我的实体模型。