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

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

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

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

现在,我的下一步是查找哪个dll引用了错误的程序集并进行修复。现在的问题是ILSpy工具没有显示本机DLL引用,而DLLDepends工具没有显示程序集引用,因此我无法链接两者。

谢谢

最佳答案

由于您尝试引用的库应该属于GAC;您可能要尝试:


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


Windows本身应引发异常,并在发生错误时尝试引用一些特定的详细信息。特别是如果它属于GAC。对我来说,相当容易地磨练mscoree.dll和mscorelib.dll库对我来说更有用。授予那些我曾经使用过的客户的框架已损坏;但是Event Viewer告诉我它有问题的确切库。

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

07-24 18:36
查看更多