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

如何处理.NET Core项目中疑似过时的外部NuGet依赖包问题?

问题解答

关于依赖过时的疑问

不是Azure.Storage.Blobs自身引用了过时依赖。Azure.Storage.Blobs 12.14.1对System.Text.Json的依赖要求是>=4.7.2,而System.Text.Json 4.7.2对System.Text.Encodings.Web的依赖要求是>=4.7.1。NuGet默认会拉取满足最低要求的版本(也就是4.7.1),这才导致安全扫描工具标记漏洞——并非Azure包本身依赖过时版本,而是依赖解析的默认行为选择了最低兼容版。

无需直接引用嵌套包的解决方法

你可以通过NuGet的版本覆盖机制,强制使用修复了CVE的System.Text.Encodings.Web版本,无需在代码中引用该包的API:

1. 单个项目修复

在目标项目的.csproj文件中添加以下配置,指定安全版本并设置不传递依赖:

<ItemGroup>
  <!-- 替换为修复CVE的最新稳定版本,比如4.7.2或更高 -->
  <PackageReference Include="System.Text.Encodings.Web" Version="4.7.2" PrivateAssets="All" />
</ItemGroup>

PrivateAssets="All"会确保这个包不会被作为依赖传递给其他引用当前项目的包,也不会暴露给你的代码,仅用于强制NuGet使用指定版本。

2. 全局解决方案级修复

如果解决方案中有多个项目受影响,在解决方案根目录创建Directory.Packages.props文件,内容如下:

<Project>
  <ItemGroup>
    <!-- 全局指定安全版本 -->
    <PackageVersion Include="System.Text.Encodings.Web" Version="4.7.2" />
  </ItemGroup>
</Project>

所有项目在还原依赖时,都会自动使用这个指定的版本,无需逐个修改项目文件。

验证修复效果

执行以下命令查看项目的完整依赖树,确认System.Text.Encodings.Web的版本已更新:

dotnet list package --include-transitive

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:20:26