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

标签 c# .net dll merge odbc

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

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

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

最佳答案

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

  • 来自 .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

关于c# - 如何将依赖的 dll (MySql.Data.dll) 与我创建的 exe 合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11605075/

相关文章:

c# - Visual Studio 2010 : How to set build platform to Active(x86)?

c# - 如何使用传递 Array 作为参数的 Entity Framework 的 Find 方法查找 List<Object>?

c# - 类型 int[] 如何实现尚不存在的接口(interface)(对我而言)?

c# - 将 C# Windows 服务引用到 ASP.NET Web 应用程序中,可能吗?

c++ - 如何在C#中创建和使用dll文件

c# - 有没有一种方法可以在不使用Add或AddRange的情况下将T转换为IEnumerable <T>

c# - 方法组(深入 C#)- 需要帮助更好地理解什么是方法组

c# - 为什么 EF 在第一次调用方法中需要很长时间

c# - 如何使用 NHibernate 复制对象

c - Windows 上带有 DLL 的动态模块