是否可以将预先存在的DLL嵌入到已编译的C#可执行文件中(以便仅分发一个文件)?如果有可能,人们将如何去做呢?
通常,我很乐意将DLL放在外面,让安装程序处理所有事情,但是有几个人在问我这个问题,老实说我不知道。
最佳答案
我强烈建议使用Costura.Fody-到目前为止,这是在程序集中嵌入资源的最佳和最简便的方法。它以NuGet软件包的形式提供。
Install-Package Costura.Fody
将其添加到项目后,它将自动将所有复制到输出目录的引用嵌入到主程序集中。您可能需要通过向目标添加目标来清除嵌入式文件:
Install-CleanReferencesTarget
您还可以指定是包括pdb的,排除某些程序集还是动态提取程序集。据我所知,还支持非托管程序集。
更新
当前,有些人正在尝试添加support for DNX。
更新2
对于最新的Fody版本,您将需要具有MSBuild 16(因此是Visual Studio 2019)。 Fody版本4.2.1将执行MSBuild15。(引用:Fody is only supported on MSBuild 16 and above. Current version: 15)
关于c# - 将DLL嵌入已编译的可执行文件中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4043522/