【发布时间】:2020-08-03 15:47:06
【问题描述】:
我在 v5.0 中直接引用了 NuGet 包 x。
我引用的另一个 NuGet 包引用了这个 x 包,但版本为 v4.0。
是什么决定了 bin 文件夹中内置了哪个程序集版本?
【问题讨论】:
标签: .net nuget .net-assembly
我在 v5.0 中直接引用了 NuGet 包 x。
我引用的另一个 NuGet 包引用了这个 x 包,但版本为 v4.0。
是什么决定了 bin 文件夹中内置了哪个程序集版本?
【问题讨论】:
标签: .net nuget .net-assembly
在您的情况下,x 包的 v5.0 已恢复 并将匹配的目标框架库复制到您的应用程序的输出路径, 由于Nearest Wins 规则, 它解析了依赖关系图中最接近您的应用程序的包版本。 当引用到您的应用程序具有相同距离的不同包版本时,则适用Cousin Dependencies 规则。
要“查看”使用 Visual Studio 解决了哪个版本,请转到 Solution Explorer 中的项目并展开 Dependencies |包。
或者,您可以使用dotnet list package 列出项目的包引用,或使用dotnet list package --include-transitive 额外获取顶级包所依赖的包列表。
【讨论】:
PackageReferences 都被放入包图中,直接和通过ProjectReferences。您在评论中描述的场景与您最初的问题不同:现在 v4.0 比 v5.0 更接近您的应用,因此 v4 .0 已解决。但这现在会导致 “检测到包降级” 警告:NuGet 警告 NU1605。