我如何强制使用exe构建DLL,所以只有一个文件?

时间:2011-01-10 21:59:53

标签: c# .net dll exec

我在c#中有一个简单的应用程序。我希望DLL在exe文件中“内部”。我该怎么做?

2 个答案:

答案 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,它支持两种选择。