将DLL合并到EXE中?

74
我有两个DLL文件,希望将其包含在我的EXE文件中,以便更容易地分发它。我已经在各处读了一些如何做到这一点的文章,甚至在这里这里找到了一个好的线索,但对于我来说太过复杂,我需要一份真正基础的说明来完成此操作。
我使用Microsoft Visual C# Express 2010,请原谅我的“低水平”问题,但我感觉自己比其他人低一两个级别 :- / 如果有人可以指出如何通过分步指南将这些DDL文件合并到我的EXE中,那就太棒了!
14个回答

0

我找到了以下解决方案:

  1. 下载ILMerge.msi并在您的计算机上安装它。
  2. 打开命令提示符
  3. 键入cd C:\Program Files (x86)\Microsoft\ILMerge,按Enter键
  4. C:\Program Files (x86)\Microsoft\ILMerge>ILMerge.exe /target:winexe /targetplatform:"v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319" /out:NewExeName.exe SourceExeName.exe DllName.dll

对于多个Dll:

C:\Program Files (x86)\Microsoft\ILMerge>ILMerge.exe /target:winexe /targetplatform:"v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319" /out:NewExeName.exe SourceExeName.exe DllName1.dll DllName2.dll DllName3.dll


0

注意:如果您正在尝试加载非 ILOnly 程序集,则

Assembly.Load(block)

无法工作,会抛出异常: 更多细节

我通过创建临时文件并使用以下方法克服了这个问题

Assembly.LoadFile(dllFile)

0

我之前回答过一个类似的关于 VB.NET 的问题。不过转换应该不会太难。你可以将 DLL 嵌入到你的 Ressource 文件夹中,在第一次使用时,AppDomain.CurrentDomain.AssemblyResolve 事件就会被触发。

如果你想在开发过程中引用它,只需将普通的 DLL 引用添加到你的项目中即可。

将 DLL 嵌入到项目中


-2

该命令应该是以下脚本:

ilmerge myExe.exe Dll1.dll /target:winexe /targetplatform:"v4,c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\" /out:merged.exe /out:merged.exe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接