c# - 了解 IlMerge - 如何打包一个可执行文件及其所有相关的 dll

标签 c# .net winforms dll ilmerge

我知道我不是第一个在 Stack Overflow 上问这个问题的人,我相信我也不会是最后一个。但是,在花了几个小时研究如何做到这一点,然后亲自尝试去做之后,我几乎准备放弃了。

我有一个构建为可执行文件的 .NET Framework 4、C#、WinForms 应用程序。我依赖很多很多 dll。 dll 分为多个类别。

  • 我编写的库没有自己的依赖项
  • 我编写的库依赖于我编写的其他库
  • 我编写的依赖于第三方 dll 的库
  • 第三方独立 dll
  • 第三方 dll 对其他 dll 有自己的依赖性

因此,在我编译我的应用程序后,我有一个包含可执行文件和大约 15 个 dll 的目录。

我想将所有 dll 打包到一个可执行文件中,这样我就可以简单地分发一个可执行文件。

我知道 IlMerge 是通常建议用于此的应用程序,但我很好奇是否有更易于使用、更直观且适用于 WinForms 和 WPF 的应用程序。

最佳答案

这里的问题是 ILMerge 只能合并 .Net 程序集。您的文件 lame_enc.dll 不是 .Net 程序集,而是标准的 Windows dll,因此 ILMerge 无法加载。

要解决这个问题,您可以将 lame_enc.dll 嵌入到您的程序集中,然后在您的应用程序需要时将其解压缩。查看这篇文章了解更多相关信息。

http://weblogs.asp.net/ralfw/archive/2007/02/04/single-assembly-deployment-of-managed-and-unmanaged-code.aspx

关于c# - 了解 IlMerge - 如何打包一个可执行文件及其所有相关的 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12307602/

相关文章:

c# - 计算html文件表格中有多少列和行

c# - MFC中有没有类似DataGridView的控件

javascript - 如何使用 angularjs 和特定的数据结构创建简单的树可折叠/可折叠 View

c# - 动画 RenderTransformOrigin

c# - 如何将 C# 用户控件嵌入到 Windows 资源管理器中?

.net - 数据库结构略有不同的多客户项目的架构设计(针对每个客户)

c# - 在机器人的子对话框中提示用户输入字符串

c# - 具有 ContextMenu 单击事件的 WPF ListBox 项目

c# - 我可以为对象动态创建属性类型和属性名称吗?

c# - 如何在 C# 的消息框中显示 3 层应用程序中 SQL 异常(唯一标识符)的错误消息?