我创建了一个应用程序,它要求在计算机上安装ODBC连接器才能工作。由于我的应用程序需要连接到mysql数据库,它只需要一个dll文件(MySql.Data.dll)才能工作。
当我将此dll放在与应用程序相同的位置时,它可以正常工作。现在我想合并这个dll,这样我最后只有一个可执行文件?
如何将此依赖DLL与我的可执行文件合并?
答案 0 :(得分:2)
你不能这样做,所有的程序集都会从某个地方被引用......
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
答案 1 :(得分:1)
如果它是纯.NET模块,您可以尝试ilmerge
实用程序。