我正在升级应用程序并遇到一些问题。 现在旧的应用程序是版本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工具不显示程序集引用,所以我无法链接这两个。
感谢
答案 0 :(得分:0)
因为您尝试引用的库应该是GAC的一部分;你可能想尝试:
Windows本身应该抛出一个异常,它会在出现错误时尝试引用一些特定的细节。特别是如果它是GAC的一部分。对我来说,更容易磨练 mscoree.dll 和 mscorelib.dll 库。当然,那些我用它的客户有腐败的框架;但事件查看器告诉我它存在问题的确切库。
您可能想尝试一下。不确定哪个库;但请记住,这通常对%windir%/Assembly
文件夹中的库有益。希望有所帮助。