是否可以将预先存在的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/

10-12 00:27
查看更多