2

我创建了一个应用程序,它需要在计算机上安装 ODBC 连接器才能工作。由于我的应用程序需要连接到 mysql 数据库,它只需要一个 dll 文件 (MySql.Data.dll) 即可工作。

当我将此 dll 放在与应用程序相同的位置时,它可以正常工作。现在我想合并这个dll,这样最后我就只有一个可执行文件了?

如何将此依赖的 DLL 与我的可执行文件合并?

4

2 回答 2

2

你不能那样做,所有的程序集都会从某个地方被引用......

  • 从 .NET 框架路径,如:

System.Net.dll

所有 .NET 应用程序都需要 .NET Framework 程序集才能运行,这就是想要执行您的应用程序的用户需要安装 .NET Framework 的原因。因此,您的应用程序知道在哪里可以找到此程序集,并且不需要您将System.Net.dll程序集放在与您的应用程序相同的路径中以成功运行。

  • 或者像您的应用程序那样从外部路径。

您的应用知道在哪里可以找到要运行的 .NET Framework 程序集,但请稍等!它还需要一些额外的 dll 才能运行,这就是为什么您MySql.Data.dll在编译应用程序时获得相同路径的原因。

可能的解决方案:

1.如果您只想制作一个可执行文件,请尝试使用Spoon Studio(完整破解版很难找到,而且价格昂贵)。这将使您能够嵌入任何您想要的程序集或所有 .NET Framework,因此这将使您的应用程序不依赖于执行您的应用程序的用户计算机中的任何 .NET Framework 安装或所需的程序集。

2.尝试使用ILMerge,但请阅读以下链接以了解您的代码是否符合要求。

如何和重要信息:

http://www.codeproject.com/Articles/9364/Merging-NET-assemblies-using-ILMerge

http://www.blackwasp.co.uk/ILMerge.aspx

于 2012-07-23T00:20:12.260 回答
1

如果它是纯 .NET 模块,您可以尝试该ilmerge实用程序。

于 2012-07-23T00:31:25.843 回答