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

如何解决Microsoft Graph 5.44.0与Microsoft Identity Client 4.59.0版本冲突?

插件DLL依赖冲突解决办法

1. 版本硬对齐

  • 试试把Microsoft.Identity.Client升级到能兼容Microsoft.IdentityModel.Abstractions 7.x的版本,比如找MSAL 4.x里依赖7.x的子版本,或者干脆升MSAL 5.x(先确认集成Windows身份验证流程能用),让它和Microsoft Graph 5.44.0的依赖版本对上。
  • 如果非要用MS Graph 4.54.0,就把Microsoft.IdentityModel.Abstractions锁死在6.22.0版本,直接在项目的.csproj文件里加这段配置:
<PackageReference Include="Microsoft.IdentityModel.Abstractions" Version="6.22.0">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>

另外用dotnet list package --include-transitive命令查一下所有传递依赖,手动把冲突的版本排除掉。

2. 代码里动态做绑定重定向

不用改主应用配置,在插件初始化的时候加一段代码,强制指定加载的程序集版本:

using System.Reflection;

// 定义要重定向的版本映射
var redirectMap = new Dictionary<string, Version>
{
    { "Microsoft.IdentityModel.Abstractions", new Version("6.22.0") } // 换成你需要的目标版本
};

// 注册程序集加载事件
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
    var assemblyName = new AssemblyName(args.Name);
    if (redirectMap.TryGetValue(assemblyName.Name, out var targetVer))
    {
        assemblyName.Version = targetVer;
        return Assembly.Load(assemblyName);
    }
    return null;
};

这段代码会在程序集加载失败时,强制加载你指定的版本,绕开主应用的配置限制。

3. 私有目录单独加载

把冲突的程序集放到插件自己的私有文件夹里,手动加载,不和主应用的程序集混用:

  • 插件项目里设置CopyLocal=true,确保Microsoft.IdentityModel.Abstractions这类冲突程序集被复制到输出目录的子文件夹(比如叫libs)。
  • 插件初始化的时候先加载这个文件夹里的程序集:
var libFolder = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "libs");
var abstractionsDll = Assembly.LoadFrom(Path.Combine(libFolder, "Microsoft.IdentityModel.Abstractions.dll"));

注意要保证所有用到这个程序集的代码都用手动加载的版本,别混着来。

4. NuGet依赖排除

在项目文件里直接排除冲突的传递依赖,强制用你指定的版本:

<PackageReference Include="Microsoft.Graph" Version="5.44.0">
  <ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Identity.Client" Version="4.59.0" />
<PackageReference Include="Microsoft.IdentityModel.Abstractions" Version="6.22.0" />

用ExcludeAssets阻止Microsoft Graph带进来的高版本依赖被加载,强制用你指定的版本。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:28:16