将Task<decimal>转换为decimal时遇EntityFramework程序集加载错误求助
解决Entity Framework 5.0程序集版本不匹配导致的加载错误
首先得说,你遇到的这个错误核心是Entity Framework程序集版本不匹配,和Task<decimal>转decimal本身没直接关联——是项目里引用的EF版本和运行时找到的不一致,导致加载失败了。下面给你几个具体的解决步骤:
先检查项目的EF引用版本
右键你的项目→「管理NuGet程序包」,找到EntityFramework看看当前安装的版本是不是5.0.0.0?如果不是,要么把版本调整到5.0,要么通过配置重定向让程序找到正确的版本。添加程序集绑定重定向(适合不想改引用版本的情况)
打开项目的App.config或者Web.config,在<configuration>节点里加上这段配置,把newVersion改成你实际安装的EF版本号:<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="你的实际EF版本号" /> </dependentAssembly> </assemblyBinding> </runtime>比如你装的是EF6,就把
newVersion设为6.0.0.0,这样运行时会自动把对5.0的请求重定向到你实际安装的版本。清理重建项目
有时候项目缓存的旧程序集会搞事情,右键解决方案→「清理解决方案」,再右键→「生成解决方案」,确保所有引用都重新编译加载。
另外顺便提一句,如果你是在调用GetTotalProposalAmount()的时候要把Task<decimal>转成decimal,一定要用await关键字,比如:
decimal total = await GetTotalProposalAmount();
别直接用Result,容易导致死锁,async方法要按异步规范来调用。
内容的提问来源于stack exchange,提问作者Shonie
相关产品推荐
相关产品推荐

