可以将DLL合并到.NET EXE中吗?

我有一个DLL存储两个应用程序共有的类。 我想将我的应用程序限制在一个EXE文件中,并希望看看我是否能以某种方式将此DLL嵌入到我的主EXE中。

如何将外部DLL嵌入到我的应用程序中? (如果可能的话)

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=22914587-b4ad-4eae-87cf-b14ae6a939b0&displaylang=en

ILMerge是一个用于将多个.NET程序集合并到单个.NET程序集中的实用程序。 它适用于可执行文件和dll。 它提供了几个控制输出处理和格式的选项,有关详细信息,请参阅随附的文档。

ILMerge的替代方法是将依赖程序集作为嵌入式资源嵌入到可执行文件中,并利用程序集解析机制将它们作为资源流加载。 可以在此处找到如何执行此操作的示例:

http://blog.magenic.com/blogs/brante/archive/2008/04/14/Embedded-Assembly-Linker.aspx

我自己使用这种模式效果很好。 ILMerge有时会出现问题,因此您的milage可能会有所不同。

Eazfuscator.NET是一个很棒的工具,它还允许dll合并和嵌入,以及它的正常混淆function。 它还对混淆代码进行了一些简洁的优化。 您只需添加一个类注释,而eazfuscator将为您完成所有操作,而不是使用ilmerge。 太棒了!

[assembly: System.Reflection.Obfuscation(Feature = "encrypt symbol names with password PAS$", Exclude = false)] [assembly: System.Reflection.Obfuscation(Feature = "embed nLog.dll", Exclude = false)] public class MyClass { //blah }