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/47991844/

相关文章:

windows - 如何为非 Qt 应用程序创建 Qt 共享库

c# - Windows Phone 8 中的 Websockets 客户端支持

plugins - 插件和共享对象库

c# - 使用 Visual Studio 2012 分析 .NET 类库时未收集任何数据

.net - LINQ-to-SQL 中不区分大小写的字符串比较

.net - 如何使用 StackExchange.Redis 禁用证书验证?

c# - 注册到事件的命名方法

c# - 全局内存访问

c# - 开始使用 BouncyCaSTLe 加密 dll c#

c# - ODP.net 是否在连接关闭时关闭引用游标?