【问题标题】:What determines which assembly version is built into the bin folder什么决定了哪个程序集版本内置到 bin 文件夹中
【发布时间】:2020-08-03 15:47:06
【问题描述】:

我在 v5.0 中直接引用了 NuGet 包 x。

我引用的另一个 NuGet 包引用了这个 x 包,但版本为 v4.0。

是什么决定了 bin 文件夹中内置了哪个程序集版本?

【问题讨论】:

    标签: .net nuget .net-assembly


    【解决方案1】:

    在您的情况下,x 包的 v5.0 已恢复 并将匹配的目标框架库复制到您的应用程序的输出路径, 由于Nearest Wins 规则, 它解析了依赖关系图中最接近您的应用程序的包版本。 当引用到您的应用程序具有相同距离的不同包版本时,则适用Cousin Dependencies 规则。

    要“查看”使用 Visual Studio 解决了哪个版本,请转到 Solution Explorer 中的项目并展开 Dependencies |包
    或者,您可以使用dotnet list package 列出项目的包引用,或使用dotnet list package --include-transitive 额外获取顶级包所依赖的包列表。

    【讨论】:

    • 我的测试项目引用了 nuget v4.0 但仍然 v5.0 被复制到 bin 文件夹,因为测试项目引用了已安装 nuget v5.0 的类库 直接项目引用计数是否超过直接包参考?但这不会更接近......
    • @HelloWorld 所有PackageReferences 都被放入包图中,直接和通过ProjectReferences。您在评论中描述的场景与您最初的问题不同:现在 v4.0v5.0 更接近您的应用,因此 v4 .0 已解决。但这现在会导致 “检测到包降级” 警告:NuGet 警告 NU1605
    猜你喜欢
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 2015-03-03
    相关资源
    最近更新 更多