C# 如何将从属dll(MySql.Data.dll)与我创建的exe合并?
我创建了一个应用程序,需要在计算机上安装ODBC连接器才能工作。由于我的应用程序需要连接到mysql数据库,所以它只需要一个dll文件(mysql.Data.dll)即可工作 当我把这个dll放在与应用程序相同的位置时,它工作正常。现在我想合并这个dll,这样我最后只有一个可执行文件C# 如何将从属dll(MySql.Data.dll)与我创建的exe合并?,c#,.net,dll,merge,odbc,C#,.net,Dll,Merge,Odbc,我创建了一个应用程序,需要在计算机上安装ODBC连接器才能工作。由于我的应用程序需要连接到mysql数据库,所以它只需要一个dll文件(mysql.Data.dll)即可工作 当我把这个dll放在与应用程序相同的位置时,它工作正常。现在我想合并这个dll,这样我最后只有一个可执行文件 如何将此依赖DLL与可执行文件合并?您不能这样做,所有程序集都将从某处引用 从.NET framework路径,如: System.Net.dll 所有.NET应用程序都需要运行.NET Framework程序
如何将此依赖DLL与可执行文件合并?您不能这样做,所有程序集都将从某处引用
- 从.NET framework路径,如:
System.Net.dll
程序集放置在您的应用程序的同一路径中即可成功运行
- 或者像应用程序一样从外部路径访问
MySql.Data.dll
可能的解决方案:
1.如果您只想制作一个可执行文件,请尝试使用Spoon Studio(很难找到完整的破解版本,而且价格昂贵)。这将使您能够嵌入任何程序集,如您想要的程序集或所有.NET Framework程序集,因此这将使您的应用程序不依赖于执行应用程序的用户计算机中的任何.NET Framework安装或所需程序集
2.尝试使用ILMerge
,但请阅读下面的链接以了解您的代码是否符合要求
如何获取重要信息:
如果它是纯.NET模块,您可以尝试使用
ilmerge
实用程序。当然,这是一条“简单”的道路,但是要合并,您可以嵌入它们的源代码。确保移除所有与平台无关的东西。例如,如果是桌面版本,请删除所有RT垃圾。还可以扔掉额外的东西,比如csproj、sln和AssemblyInfo。简而言之,对于这个特定的库,您可以直接合并,但它是一个真正的PITA。因为桌面资源试图成为每个平台的一切。