3

我正在升级应用程序并遇到一些问题。现在旧应用程序是 1.0 版,并在 2.1.1 版加载依赖程序集 A 该程序集存在于应用程序本地目录中。我正在将新应用程序升级到版本 2.0,它将加载程序集 A 版本 1.0.1,它存在于其应用程序本地目录中。我已经使用 ISpy 检查了应用程序引用并确认了新的应用程序引用 A 版本 1.0.1

但是当我启动新应用程序(v 2.0)时,它仍在尝试加载程序集版本 2.1.1 并且失败。我检查了 app.config、machine.config 和 GAC,并且没有针对程序集 A 版本的重定向。我还检查了融合日志文件,但没有看到任何重定向。我所看到的只是融合日志是应用程序在 2.1.1 版本中预绑定了 A,因此无法设置其本地目录中存在的程序集。

我在这里缺少什么吗?应用程序在运行时仍然引用旧程序集的可能原因是什么?

更新:使用一些工具,我意识到旧程序集是从我的应用程序引用的本机 DLL 引用的,但我不知道是哪个第三方 DLL,并且应用程序加载了大量它们。融合日志通过记录“调用程序集:(未知)”来确认它。对于缺少的程序集。

现在我的下一步是找出哪个 dll 引用了错误的程序集并修复它。现在的问题是 ILSpy 工具不显示本机 DLL 引用,而 DLLDepends 工具不显示程序集引用,所以我无法链接这两者。

谢谢

4

1 回答 1

0

由于您尝试引用的库应该是 GAC 的一部分;您可能想尝试:

  1. 控制面板
  2. 小图标(管理工具)
  3. 事件查看器
  4. 应用

Windows 本身应该抛出一个异常,并在出现错误时尝试引用一些特定的细节。特别是如果它是 GAC 的一部分。相当容易地磨练mscoree.dllmscorelib.dll库对我更有帮助。授予我使用的那些客户有损坏的框架;但是事件查看器告诉我它有问题的确切库。

您可能想尝试一下。不确定哪个库;但请记住,这通常对%windir%/Assembly文件夹中的库有益。希望有帮助。

于 2012-11-20T00:18:52.460 回答