.net 程序集加载,版本不匹配的解决方法

经常有些时候,A.dll引用的是Microsoft.EntityFrameworkCore.dll version=1.0.0.0 publicKeyToken="adb9793829ddae60" 这样一个程序集,但是我们现在只有Microsoft.EntityFrameworkCore.dll version=1.0.1.0 publicKeyToken="adb9793829ddae60" 这样一个程序集,在web里面,就会报一个错误:

找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)

可以这样解决,利用程序集重定向机制

在web.config这样配置

<?xml version="1.0"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.EntityFrameworkCore" publicKeyToken="adb9793829ddae60" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.1.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

 

方法二

用以下代码,也可以实现忽略dll版本号去加载,视乎这种做法更好,不用每个dll都写config了

        protected void Application_Start(object sender, EventArgs e)
        {
            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
        }

        private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            var assembly = Assembly.Load(args.Name.Split(',')[0].Trim());
            return assembly;
        }

 

转载于:https://www.cnblogs.com/IWings/p/5960716.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值