小编典典

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

all

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

通常,我很乐意将 DLL 留在外面并让安装程序处理所有事情,但是有几个工作人员问过我这个问题,我真的不知道。


阅读 114

收藏
2022-03-03

共1个答案

小编典典

我强烈推荐使用Costura.Fody -
迄今为止在您的程序集中嵌入资源的最佳和最简单的方法。它以 NuGet 包的形式提供。

Install-Package Costura.Fody

将其添加到项目后,它会自动将复制到输出目录的所有引用嵌入到 主程序 集中。您可能希望通过向项目添加目标来清理嵌入文件:

Install-CleanReferencesTarget

您还可以指定是否包括 pdb、排除某些程序集或动态提取程序集。据我所知,也支持非托管程序集。

更新

目前,有些人正在尝试添加对 DNX 的支持

更新 2

对于最新的 Fody 版本,您需要拥有 MSBuild 16(即 Visual Studio 2019)。Fody 版本 4.2.1 将执行 MSBuild
15。(参考:Fody 仅支持 MSBuild 16
及更高版本。当前版本:15

2022-03-03