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