我有一个DLL,它存储两个应用程序共有的类。我想将我的应用程序限制在一个EXE文件中,并希望看看我是否能以某种方式将此DLL嵌入到我的主EXE中。
如何将外部DLL嵌入到我的应用程序中? (如果可能的话)
答案 0 :(得分:15)
ILMerge是一个用于将多个.NET程序集合并到单个.NET程序集中的实用程序。它适用于可执行文件和dll。它有几个控制输出处理和格式的选项,详见附带的文档。
答案 1 :(得分:9)
ILMerge的替代方法是将依赖程序集作为嵌入式资源嵌入到可执行文件中,并利用assembly resolve机制将它们作为资源流加载。可以在此处找到如何执行此操作的示例:
http://blog.magenic.com/blogs/brante/archive/2008/04/14/Embedded-Assembly-Linker.aspx
我自己使用这种模式效果很好。 ILMerge有时会出现问题,因此您的情况可能会有所不同。
答案 2 :(得分:1)
Eazfuscator.NET是一个很棒的工具,它还允许dll合并和嵌入,以及它的正常混淆功能。它还对混淆代码进行了一些简洁的优化。您只需添加一个类注释,而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
}