C# 是否可以将DLL合并到.NET EXE中?

C# 是否可以将DLL合并到.NET EXE中?,c#,.net,clr,C#,.net,Clr,我有一个DLL,它存储两个应用程序共用的类。我想将我的应用程序限制为一个EXE文件,并想看看是否可以以某种方式将此DLL嵌入到我的主EXE中 如何将外部DLL嵌入到应用程序中?(如有可能) ILMerge是一个用于将多个.NET程序集合并到单个.NET程序集的实用程序。它同样适用于可执行文件和DLL。它提供了几个用于控制输出处理和格式的选项,有关详细信息,请参阅随附文档。ILMerge的另一种替代方法是将依赖程序集作为嵌入式资源嵌入到可执行文件中,并利用该机制将其作为资源流加载。可在此处找到如何

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

如何将外部DLL嵌入到应用程序中?(如有可能)


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

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

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

是一个很棒的工具,它还允许dll合并和嵌入,以及正常的模糊处理功能。它还对模糊代码进行了一些简洁的优化。与ilmerge不同,只需添加一个类注释,EAZfouscator就能为您完成所有工作。太棒了

[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
}

更改了标题,因为DLL注入是一个过载的术语。为什么要使用ILMerge进行此操作?@Pauli,正如我提到的,ILMerge在某些场景中存在问题,例如,它难以处理某些类型的混淆(我们有混淆的程序集),它在WPF Xaml资源方面有问题,它在合并多个WPF程序集时遇到问题,因为Xaml编译器在同一名称空间中的每个程序集中放置了一个具有相同名称的帮助器类型,这会导致ILMerge在重复类型上呕吐。这些只是我个人见过的类型。确实,具有相同全名(名称空间+类型名)的类型会带来麻烦。。。我也不知道可以像这样将包含相同全名类型的多个程序集加载到一个AppDomain中?这是一个很好的技巧,允许将程序集存储在数据库中或通过internet下载。@Pauli是的,这是一个很好的技巧-现在投票支持我吧!:)EAZfouscator的输出在哪里?EAZfouscator与visual studio集成时,只对编译器的输出进行操作。所以不管你的bin/Release文件夹里有什么。如果您想做一些可自定义的事情,您也可以使用msbuild手动编写脚本。@scaryman在使用“wonderful”时,您可以透露是否存在从属关系吗?(并没有说这是什么,只是说——并没有这样的联系会使我的估计像披露一样上升)我和eAzFocusator没有任何关系。而且,在他们开始收费之前,我发了这篇文章。