C# 项目中发现并解决 NuGet 依赖报错:The package XXX could not be found in XXX。 Run a NuGet package restore to download the package.
C# 项目中解决 NuGet 依赖报错
背景概述:
今天用dism+++清理了下电脑,发现vs项目无法运行了,某个项目提示:
The package AngleSharp with version 1.3.0 could not be found in ... Run a NuGet package restore to download the package.
一、问题原因
- 所谓“上游依赖”,“可传递依赖”,指的就是XX项目中直接引用了某个包A,A包 引用到了AngleSharp包,AngleSharp包 是简洁引用的,A包 就是上游依赖,AngleSharp包 就是可传递依赖。
- NuGet 会自动拉取“可传递依赖”(Transitive Dependencies)。
- 清理本地缓存或离线包后,如果上游依赖包A丢失,就会报找不到包的错误,我们就需要找到包A是哪个包。
二、快速定位上游依赖(也可以在项目的 NuGet 管理器中挨个查看哪个包依赖了AngleSharp包)
1. dotnet list package
# 包含传递依赖
dotnet list XXX.csproj package --include-transitive
# 仅列直接依赖
dotnet list XXX.csproj package
对比两份列表,锁定可能引入 AngleSharp 的包。
2. 查看 project.assets.json
# 还原并搜索上下文(找到项目中obj/project.assets.json这个文件并打开)
dotnet restore
# PowerShell
Select-String '"AngleSharp/1.3.0"' -Path obj/project.assets.json -Context 5,2
# Bash
grep -R -n '"AngleSharp/1.3.0"' -C5 obj/project.assets.json
在上下文中,找到类似:
"Masuit.Tools.Abstractions/2025.2.0": {
"dependencies": { "AngleSharp": "1.3.0", ... }
}
说明 Masuit.Tools.Abstractions 引入了 AngleSharp。
三、解决方案
-
在 NuGet 管理器中卸载有问题的上游包(如 Masuit.Tools.Abstractions)。
-
重新安装该包,NuGet 会自动恢复所有传递依赖。
-
重建项目:
dotnet build
四、进阶提示
-
如需临时屏蔽传递依赖,可在
.csproj中配置(不推荐):<PackageReference Include="Masuit.Tools.Abstractions" Version="2025.2.0"> <ExcludeAssets>runtime; build; native; contentfiles; analyzers</ExcludeAssets> </PackageReference> -
保持本地缓存完整,避免意外丢包。
-
VS 的“已安装→传递依赖”标签页可视化查看依赖链。

浙公网安备 33010602011771号