如何找到依赖于特定依赖项的特定版本的内容?

Posted

技术标签:

【中文标题】如何找到依赖于特定依赖项的特定版本的内容?【英文标题】:How to find what depends on a specific version of a specific dependency? 【发布时间】:2011-06-20 03:56:33 【问题描述】:

我在运行我的应用程序时遇到了这个错误(不是在编译时):

无法加载文件或程序集 'Castle.Windsor,版本=2.1.0.0, 文化=中性, PublicKeyToken=407dd0808d44fbdc' 或 它的依赖项之一。位于 程序集的清单定义确实 与程序集引用不匹配。 (HRESULT 异常:0x80131040)

我的解决方案有许多项目,尽可能使用项目引用,但其中一些项目具有对外部依赖项的程序集引用。

如何轻松找出哪个项目正在寻找这个特定版本的Castle.Windsor.dll?我没有那个版本,正在尝试使用 2.5.2(最新),所以我想找到罪魁祸首并更新它以使用最新版本。

非常感谢。

更新 我在下面添加了一个经过消毒的 Fusion 日志。它似乎告诉我Caliburn.Castle 需要Castle.Windsor, Version=2.1.0.0(这将是一个错误,因为我使用的是 2.5),但 Fusion 程序集探测实际上是在找到 Castle.Windsor, Version=2.5.1.0

我理解正确吗?

=== Pre-bind state information ===
LOG: User = Barney\neil
LOG: DisplayName = Castle.Windsor, Version=2.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc
 (Fully-specified)
LOG: Appbase = file:///[Debug folder of my exe]
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = [Filename of my exe]
Calling assembly : Caliburn.Castle, Version=1.1.0.0, Culture=neutral, PublicKeyToken=8e5891231f2ed21f.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: [Config file for my exe]
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Castle.Windsor, Version=2.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///[Debug folder of my exe]/Castle.Windsor.DLL.
LOG: Assembly download was successful. Attempting setup of file: [Debug folder of my exe]\Castle.Windsor.dll
LOG: Entering run-from-source setup phase.
LOG: Assembly Name is: Castle.Windsor, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc
WRN: Comparing the assembly name resulted in the mismatch: Minor Version
ERR: The assembly reference did not match the assembly definition found.
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

【问题讨论】:

你是对的,正在寻找新版本的 Castle.Windsor,但 Caliburn.Castle 想要旧版本。 @Pedro 是的,我使用 Reflector 查看 Caliburn.Castle.dll,发现它需要 Castle.Windsor.dll 的 2.1(尽管我从源代码重建)。我将再次尝试使用更新的 Castle 构建 Caliburn.Castle.dll,然后重试。 :) 【参考方案1】:

您可以使用Fuslogvw.exe utility,它将为您提供有关调用程序集的更多信息。 Scott Hansleman 也是blogged about it。

【讨论】:

【参考方案2】:

你看过程序集绑定日志查看器(Fuslogvw.exe)吗?

这应该提供所有需要的信息。

参见MSDN。

【讨论】:

【参考方案3】:

FusionLog tool 是处理此类事情的最佳工具,但有时只会指向您的代码。尝试调高 MSBuild 的详细程度,您也许可以将其追踪到编译失败时的位置。

【讨论】:

以上是关于如何找到依赖于特定依赖项的特定版本的内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何找到跨文件重命名和重新排序添加特定 Gradle 构建依赖项的 Git 提交?

如何解决 Yarn.lock 中开发依赖项的特定依赖项

如何确定我的哪些依赖项依赖于我的 node_modules 中的特定包?

如何下载 Maven 项目的特定 JAR 依赖项的源代码

Flutter 平台特定依赖项

如何找到具有特定依赖关系的 NPM 模块版本 - 例如,哪个版本的 webpack-cli 与 webpack@4.46.0 一起使用?