You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure SDK DLL冲突问题:同时使用两个NuGet包引发加载异常

解决两个Azure NuGet包的程序集版本冲突问题

这个问题我之前也碰到过,本质是Microsoft.Azure.Management.ResourceManager.Fluent和Microsoft.WindowsAzure.MediaServices.Client这两个包依赖了不同版本的Microsoft.IdentityModel.Clients.ActiveDirectory(简称ADAL),导致运行时CLR找不到匹配的程序集。下面给你几个靠谱的解决思路:

1. 统一ADAL依赖版本

首先得明确两个主包各自依赖的ADAL版本:

  • 打开NuGet包管理器的「已安装」标签,查看每个包的依赖项详情;
  • 或者用命令行查看所有传递依赖(适用于.NET Core/.NET 5+):
    dotnet list package --include-transitive
    

找到两个包都兼容的ADAL版本(比如报错里提到的2.28.3.860),手动安装这个版本来覆盖传递依赖:

Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 2.28.3.860

2. 添加程序集绑定重定向(.NET Framework专属)

如果是.NET Framework项目,可以在app.config或web.config里添加绑定重定向,强制所有引用都指向同一个ADAL版本:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" 
                        publicKeyToken="31bf3856ad364e35" 
                        culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-2.28.3.860" 
                      newVersion="2.28.3.860" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

这个配置会告诉CLR:不管代码请求哪个旧版本的ADAL,都用指定的版本替代。

3. 尝试更新主包到最新版本

如果业务允许,把两个Azure相关的包更新到最新版——新版本可能已经统一了依赖的身份验证库(比如弃用ADAL改用MSAL),从根源上解决冲突。

4. 清理项目缓存

有时候旧的程序集缓存会干扰依赖解析,按以下步骤操作:

  • 右键项目选择「清理」;
  • 手动删除项目根目录下的bin和obj文件夹;
  • 重新生成整个解决方案。

额外提示

ADAL已经被微软官方弃用,如果长期维护项目,建议逐步迁移到MSAL(Microsoft.Identity.Client),不过这需要修改部分身份验证相关的代码,需要评估成本。

内容的提问来源于stack exchange,提问作者user3809539

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:42:20