gpt4 book ai didi

c# - DLL Hell - 如果缺少 MySql.Data.dll 版本 6.9.3.0 或 6.8.3.0,我的应用程序将引发错误

转载 作者:可可西里 更新时间:2023-11-01 06:37:49 28 4
gpt4 key购买 nike

问题背景

我用 C# 编写了一个使用 MySqlConnector 的应用程序。我已将 MySql.Data.dll(版本 6.9.3.0)添加到 References - 这一切在我的 PC(运行 Windows 7)上都按预期工作。但是,从最近的版本开始,当我尝试在另一台 PC(运行 Windows XP)上运行该应用程序时,它会在启动时抛出异常。

我添加了一个 UnhandledExceptionEventHandler 显示错误 Could not load file or assembly 'MySql.Data, Version 6.8.3.0. (...etc...)' 或其依赖项之一。找到的程序集的 list 说明与程序集引用不匹配。文件名:'MySql.Data, Version=6.8.3.0, (...etc...).

显然它正在寻找版本 6.8.3.0,但在引用文献中只找到版本 6.9.3.0 - 但我想知道的是,为什么它在与早期版本一起正常工作时寻找这个版本构建,以及如何我可以指定要查找的 MySql 版本。

我知道我可以添加对早期版本的 .dll 的另一个引用,但我想了解为什么会这样。

尝试诊断问题所采取的步骤

  • 在看到 this question on Stack Overflow 后检查了项目的 References并确认对 MySql.Data.dll 的引用及其版本 (6.9.3.0) 已添加到项目中。

  • 搜索与异常错误消息相关的结果并找到 this article on Stack Overflow描述它的原因(我知道,但它证实了这一点)

  • 一位同事要求我确认 MySql.Data 引用的 SpecificVersion 属性设置为 False(它是).

  • 尝试按照下面的答案中的建议将程序集绑定(bind)添加到配置 - 它没有帮助,会引发相同的错误。

  • 将另一台 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 没有任何内容。 (虽然我后来了解到这在这种情况下不是一个有用的工具 - 请参阅 this question。)

  • 一时兴起,我决定将 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.,它在那里。

关于c# - DLL Hell - 如果缺少 MySql.Data.dll 版本 6.9.3.0 或 6.8.3.0,我的应用程序将引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27312921/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com