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

升级Microsoft IdentityModel包至6.23.x后突然新增10个依赖包的问题求助

IdentityModel升级至6.23.1后引入大量未预期依赖的问题解析

问题背景

基于.NET 4.8.1的控制台应用,此前使用IdentityModel 6.19版本,依赖仅包含以下组件:

Microsoft.IdentityModel.JsonWebTokens 
Microsoft.IdentityModel.Logging       
Microsoft.IdentityModel.Tokens       
System.IdentityModel.Tokens.Jwt       

升级至6.23.1版本后,NuGet自动引入了一批未在原依赖列表中出现的包:

Microsoft.IdentityModel.Abstractions   
Microsoft.Bcl.AsyncInterfaces          
System.Buffers                         
System.Memory                          
System.Numerics.Vectors                
System.Runtime.CompilerServices.Unsafe 
System.Text.Encoding                   
System.Text.Encodings.Web              
System.Text.Json                       
System.Threading.Tasks.Extensions      
System.ValueTuple                      

原因说明

这不属于Bug,是IdentityModel团队在6.20+版本中调整依赖策略导致的正常现象:

  • 为适配.NET Standard等多平台目标,组件引入了部分.NET Framework 4.8.1未内置的现代系统库(如System.Text.Json、System.Memory),这些包是保证跨平台兼容性的必要依赖。
  • Microsoft.IdentityModel.Abstractions是新版本中拆分出的抽象层组件,用于解耦核心功能与具体实现,属于正常的架构调整。

可行的规避/处理方案

  • 回退至6.19版本:如果不需要新版本的安全补丁或新功能,直接降级可完全避免这些额外依赖。
  • 保留新版本并接受依赖:这些引入的包不会影响.NET 4.8.1应用的运行稳定性,仅增加包数量,若需要新版本特性,可正常使用。
  • 优化NuGet依赖恢复:在项目的.csproj文件中配置PackageReference模式,并设置仅保留运行时必要依赖:
    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
    <DisableImplicitFrameworkReferences>false</DisableImplicitFrameworkReferences>
    
  • 手动排除非必要依赖:若确认某些包不会被实际调用,可在.csproj中通过ExcludeAssets属性排除(需提前测试,避免运行时错误):
    <PackageReference Include="IdentityModel" Version="6.23.1">
      <ExcludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</ExcludeAssets>
    </PackageReference>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:51:02