DLL Hell - 如果缺少 MySql.Data.dll 的 6.9.3.0 或 6.8.3.0 版本,我的应用程序
本文关键字:版本 应用程序 我的 如果 Hell dll Data MySql DLL | 更新日期: 2023-09-27 18:33:17
问题上下文
我用C#编写了一个使用MySqlConnector的应用程序。我已将MySql.Data.dll
(版本 6.9.3.0(添加到References
- 这一切都在我的 PC(运行 Windows 7(上按预期工作。但是,从最近的版本开始,当我尝试在另一台 PC(运行 Windows XP(上运行该应用程序时,它会在启动时引发异常。
我添加了一个显示错误Could not load file or assembly 'MySql.Data, Version 6.8.3.0. (...etc...)' or one of its dependencies. The located assembly's manifest description does not match the assembly reference. File name: 'MySql.Data, Version=6.8.3.0, (...etc...)
UnhandledExceptionEventHandler
。
显然,它正在寻找版本 6.8.3.0,但只在参考中找到版本 6.9.3.0 - 但我想知道的是,当它与早期版本正常工作时,为什么它正在寻找这个版本,以及我如何指定要查找的 MySql 版本。
我知道我可以添加对.dll
早期版本的另一个引用,但我想了解为什么会发生这种情况。
尝试诊断问题的步骤
-
在堆栈溢出上看到此问题并确认已将
MySql.Data.dll
的引用及其版本(6.9.3.0
(添加到项目中后,检查了项目的References
。 -
搜索与异常错误消息相关的结果,并在堆栈溢出上找到这篇描述其原因的文章(我知道,但它证实了这一点(
-
一位同事要求我确认
MySql.Data
引用的SpecificVersion
属性设置为False
(确实如此(。 -
尝试按照以下答案中的建议将程序集绑定添加到配置中 - 它没有帮助,抛出相同的错误。
-
将另一台PC上的
MySqlData.dll
替换为版本6.8.3.0
作为"脏修复"以查看发生了什么。它现在抛出与以前相同的错误,但缺少6.9.3.0
. -
要求同事在他的(Windows 7(PC上运行该应用程序 - 没有生成错误,并且按预期工作。
-
我尝试按照评论者的建议在
.exe
上使用Dependency Walker
实用程序,但它只显示缺少以下.dll-IESHIMS.DLL
(在两台PC上(,WER.DLL
(在XP PC上(和GPSVC.DLL
(在我的PC上(。MySql.Data.dll
什么都没有.(虽然我后来知道在这种情况下这不是一个有用的工具 - 请参阅这个问题。 -
一时兴起,我决定将
MySql.Data
引用的SpecificVersion
属性更改为True
- 这解决了问题。
附加信息
我的app.config
文件 -
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
</startup>
</configuration>
将MySql.Data
引用的 SpecificVersion
属性更改为True
解决了问题。
我的假设是,应用程序以某种方式同时寻找6.8.3.0.
和6.9.3.0.
的版本 - 但是通过指定特定版本,它不会"混淆自己",而只是6.9.3.0.
,它就在那里。