如何将依赖的dll(MySql.Data.dll)与我创建的exe合并?

时间:2012-07-23 00:14:47

标签: c# .net dll merge odbc

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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