实体框架运行转换代码时引发异常

Posted

技术标签:

【中文标题】实体框架运行转换代码时引发异常【英文标题】:Entity Framework An Exception was thrown while running the transformation code 【发布时间】:2016-12-27 11:30:47 【问题描述】:

当我将实体数据模型添加到项目时,我不断收到此错误,这基本上是在 App_Data 文件夹中为 .mdf 文件创建模式。这是一个 WCF 项目。

我正在使用 VS 2015 社区版并且还安装了 Xamarin。

我尝试将 .net 框架版本从 4.5.0 更改为 4.5.1-2 和 4.6.1,但我不断收到此错误。我还手动安装了 Microsoft.CodeAnalysis 包。尝试从包文件夹中删除所有内容,然后恢复所有 nuget 插件。但一切对我来说都是失败的。

添加了对 Microsoft.CodeAnalysis 的引用,其版本为“1.3.1.0”

我在这里可能做错了什么?

错误:

严重性代码描述项目文件行抑制状态 错误 运行转换代码时引发异常。该过程无法继续。引发了以下异常: System.IO.FileLoadException:无法加载文件或程序集“Microsoft.CodeAnalysis,Version=1.3.1.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040) 文件名:'Microsoft.CodeAnalysis,版本=1.3.1.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35' 在 Microsoft.VisualStudio.TextTemplating.CompilerBridge..ctor(字符串源,布尔调试,IEnumerable1 references, String cmdLineArguments) at Microsoft.VisualStudio.TextTemplating.CompilerBridge.Create(SupportedLanguage language, String source, Boolean debug, IEnumerable1 引用,字符串 cmdLineArguments) 在 Microsoft.VisualStudio.TextTemplating.TransformationRunner.Compile(字符串源,字符串输入文件,IEnumerable1 references, Boolean debug, SupportedLanguage language, String compilerOptions) at Microsoft.VisualStudio.TextTemplating.TransformationRunner.LocateAssembly(Boolean cacheAssemblies, String fullClassName, String source, String inputFile, Boolean debug, SupportedLanguage language, IEnumerable1 编译器参考,字符串编译器选项) 在 Microsoft.VisualStudio.TextTemplating.TransformationRunner.PrepareTransformation(TemplateProcessingSession 会话,字符串源,ITextTemplatingEngineHost 主机) === 预绑定状态信息 === 日志:DisplayName = Microsoft.CodeAnalysis,版本 = 1.3.1.0,文化 = 中性,PublicKeyToken = 31bf3856ad364e35 (完全指定) 日志:Appbase = file:///C:/Program Files (x86)/Microsoft Visual Studio 14.0/Common7/IDE/ 日志:初始 PrivatePath = NULL 调用程序集:Microsoft.VisualStudio.TextTemplating.14.0,Version=14.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a。 === LOG:此绑定在默认加载上下文中开始。 LOG:使用应用程序配置文件:C:\Users\Hitin\AppData\Local\Microsoft\VisualStudio\14.0\devenv.exe.config LOG:使用主机配置文件: LOG:使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 中的机器配置文件。 LOG:之前看到过相同的绑定,但由于 hr = 0x80131040 失败。 1

【问题讨论】:

更新后你重启机器了吗? @Sampath 我刚刚重启了,错误依旧存在,所以我相信它一定是别的东西。 【参考方案1】:

现在已排序,看起来 xamarin 更新(可能)损坏了 VS 2015 安装。

此处无法修复。

所以唯一的解决方案是从“VS2015 Community update 2”升级到“VS2015 Community update 3”,现在xamarin和VS都可以正常工作了。

【讨论】:

【参考方案2】:

从头像 Kees Alderliesten 在 developercommunity.visualstudio.com 上找到了这个答案,也许它会对你有所帮助

as a workaround, you could try to copy both files to \windows\system32 and rename them to $(VSAPPIDDIR)EntityFramework.dll and $(VSAPPIDDIR)Microsoft.Data.Entity.Design.dll (yes, Windows accepts that). It got it working again that way.

【讨论】:

以上是关于实体框架运行转换代码时引发异常的主要内容,如果未能解决你的问题,请参考以下文章

实体框架 - MySQL - 未知异常

带有 Firebird 的实体框架引发动态 SQL 错误

存储过程参数名称和实体框架

运行 COM DLL 时引发异常

ASP.NET WebService - 实体框架

实体框架核心 1.1.1 为连接字符串引发 ArgumentNullException