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

标签 c# .net dll merge linker

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

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

最佳答案

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

Install-Package Costura.Fody

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

Install-CleanReferencesTarget

您还可以指定是包含 pdb、排除某些程序集还是即时提取程序集。据我所知,还支持非托管程序集。

更新

目前有人在尝试添加support for DNX .

更新 2

对于最新的 Fody 版本,您需要安装 MSBuild 16(因此需要 Visual Studio 2019)。 Fody 版本 4.2.1 将执行 MSBuild 15。(引用:Fody is only supported on MSBuild 16 and above. Current version: 15)

关于c# - 将 DLL 嵌入已编译的可执行文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16365117/

相关文章:

c# - 我可以在 EF Core 中使用带有外键的接口(interface)并使用 Fluent API 将其设置为外键吗?

c# - LINQ-to-SQL .ExecuteCommand() 不适用于参数化对象名称

c# - 为什么双击滚动条时会触发 DataGrid MouseDoubleClick 事件?

c# - DateTime.Parse 在 C# 中抛出异常

security - 保护您的DLL

c# - Azure 移动应用程序 - 尝试 POST 时收到 405(不允许的方法)

c# - mschart 缩放和滚动

dll - Gradle 异常无法加载 native 库 native-platform.dll

java - 旋转对象以放置在二维数组中

c++ - 在 Windows 上安装 QJson