c# - 将库嵌入我的应用程序并使其使用该库

标签 c# mysql embedded-resource

<分区>

我希望我的可执行文件是我的程序运行所需的唯一东西,但它依赖于一个库,更具体地说是 MySql.Data.dll。我如何将这个库合并到我的可执行文件中?

我已将 DLL 拖到我的项目资源管理器中。此外,我之后选择了它并将其 Build Action 设置为 Embedded Resource

然而,当我在我的应用程序中尝试打开一个新窗口时,我仍然面临 FileNotFound 异常:

PresentationFramework.dll 中发生类型为“System.IO.FileNotFoundException”的未处理异常

其他信息:无法加载文件或程序集“MySql.Data,Version=6.9.8.0,Culture=neutral,PublicKeyToken=c5687fc88969c44d”或其依赖项之一。系统找不到指定的文件。

编辑:

这与使用 WinForms 时有什么不同吗?我之前一直在使用 WinForms 应用程序执行此操作,其中我使用了 ioniczip 和 json 库,我将其作为嵌入式资源包含在内。这样我就不需要在应用程序中包含这两个 DLL 文件。

最佳答案

通常您需要将所有依赖项复制到 PATH 环境变量中指定的文件夹中,或者将它们放在可执行文件的同一文件夹中。您可能会发现这篇文章很有帮助 Search Path Used by Windows to Locate a DLL

如果你想打包 dll,你可以查看“ILMerge”。

至于'System.IO.FileNotFoundException' 或'System.IO.BadImageException' 等一般性错误,您可以尝试使用“Dependency Walker”来找出缺少哪些dll。

关于c# - 将库嵌入我的应用程序并使其使用该库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620706/

相关文章:

c# - C# 中有内置的验证类吗?

php - 显示另一个表中的畅销商品和关联图像

visual-studio-2010 - 如何使用 MSBuild 更改嵌入式资源的默认命名空间?

c# - 如何知道我的 DirectoryEntry 是否真的连接到我的 LDAP 目录?

c# - System.Net.Mail.SmtpException : Failure sending mail. 无法从传输连接读取数据

c# - Xamarin.Android C# layout_weight 错误 : Must specify a unit,,例如 "px"(智能感知?)

php - 如何使用php中的while循环概念获取另一个页面中的单选按钮值

python - MySQLdb 查询 Numpy 数组

java - 在 Java 中使用资源文件

java - 将属性添加到节点时,Neo4j 数据库会因 Lucene 日志而爆炸