我在c#中有一个简单的应用程序。我希望DLL在exe文件中“内部”。我该怎么做?
答案 0 :(得分:5)
ILMerge完全符合您的要求
页面有点误导,ILMerge根据其actual webpage
处理V3和V4程序集ILMerge应该可以正常使用 较新版本的.NET。只需使用 选项:/ targetplatform:v4,。对于 版本3.5,你可能不需要 设置目标平台,但你 可能需要添加v3.5框架 目录作为/ lib选项使 从那里可以找到组件。 (除非他们在GAC中 无论如何他们都会被发现。)跑 ILMerge在v4.0运行时中使用它 配置文件。
要回答如何在其他答案的问题中使用它
用法:ilmerge [/ lib:directory] [/ log [:filename]] [/ keyfile:filename [/ delaysign]] [/ internalize [:filename]] [/ t [arget] :(library | exe | winexe)] [/关闭] [/ ndebug] [/ ver:version] [/ copyattrs [/ allowMultiple]] [/ xmldocs] [/ attr:filename] [/ ta rgetplatform:[,] | / v1 | /v1.1 | / v2 | / V4] [/ useFullPublicKeyForReferences] [/ wildcards] [/ zeroPe Kind] [/ allowDup:type] * [/ union] [/ align:n] 输入/输出:文件名 [...]
因此,ilmerge /out:Combined.exe mainFile.exe otherDll.dll
适用于您的情况,因为大部分默认值都应该没问题
答案 1 :(得分:2)
ILMerge可以为.NET程序集执行此操作 - 尽管它对某些类型的程序集(例如WPF程序集)有一些限制。
您可以选择use the assembly as a resource and load it on demand,或使用支持汇编合并的众多商业混淆器之一。许多第三方选项支持更精细的依赖性合并和/或依赖性嵌入。一个很好的例子是SmartAssembly,它支持两种选择。