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

如何追踪NuGet包引用解析过程?解决Newtonsoft.Json版本冲突

问题描述

我有一个包含约400个项目的解决方案,其中许多项目使用newtonsoft.json库,且部分项目使用不同版本。Web应用的宿主项目未直接引用newtonsoft.json,但推测存在依赖于该库的包依赖。然而该项目的bin文件夹中原本的newtonsoft.json 11.0被替换为newtonsoft.json 9.0,导致运行时加载异常。即使添加newtonsoft.json 11.0的直接引用、清理所有bin和obj文件夹,bin中仍为9.0版本。我使用PackageReference管理依赖,项目均基于.net 4.6.1,并通过绑定重定向解决同库不同版本问题。

我的问题是:是否有办法诊断特定包引用的dll为何会出现在bin文件夹中?我希望获取完整的依赖解析追踪信息,无需通过试错方式修复问题。

更新

感谢大家指出结构化日志方案!问题根源在于某项目的<OutputPath>指向了宿主项目的bin文件夹,该项目构建时会覆盖宿主项目的二进制文件。由于持续调整引用导致构建顺序变化,这个配置错误的项目最后构建。通过以下步骤发现问题:

  • 在DoubleWrites部分记录到Newtonsoft.Json;
  • 分析重复写入的位置,在_CopyFilesMarkedLocal部分发现:
Copying file from "\VenomousProject\bin\Debug\Newtonsoft.Json.dll" to "HostProject\bin\Debug\Newtonsoft.Json.dll".

问题就此解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:30:48