一尘不染

将DLL嵌入已编译的可执行文件中

c#

是否可以将预先存在的DLL嵌入到已编译的C#可执行文件中(以便仅分发一个文件)?如果有可能,人们将如何去做呢?

通常,我很酷,只是把DLL放在外面,让安装程序处理所有事情,但是有几个人在问我这个问题,老实说我不知道​​。


阅读 285

收藏
2020-05-19

共1个答案

一尘不染

我强烈建议使用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

2020-05-19