使用内部DLL构建C#应用程序

本文关键字:应用程序 构建 DLL 内部 | 更新日期: 2023-09-27 18:29:40

有没有办法将我的Visual C#程序(如SQLite)所需的任何DLL保留在实际的EXE中,这样它就不需要存在文件了?

如果没有,有人能告诉我如何为我的程序(独立于.NET,所以可能是C++?)制作一个包装器,在启动程序之前将所需的文件复制/加载到工作目录中吗。

我最终想要的是一个可以部署在任何地方的EXE文件,并将其设置为变压器。它所需要的只是以下标准:

  • SQLite存在
  • OpenHardwareMonitorLib存在
  • 已安装.NET 2.0(如果未安装,请提供带有可再发行软件包的安装)

使用内部DLL构建C#应用程序

Microsoft提供了一个用于合并DLL的工具。它被称为ILMerge。

它并不总是有效的,我相信某些事情会引起问题。但这绝对是一个更容易的选择!

如果问题是只重新分发一个文件,您可以创建一个"installer"exe,它可以(从可执行内容)解压缩所有依赖项。如果您不想在生产环境中保留所有dll,可以将所有IL代码合并到主可执行文件中。您可以使用ILMerge(但它不是唯一可以做到这一点的产品)

您可以将依赖项合并到主可执行文件中。构建完成后,您将运行一个额外的工具,该工具将IL代码组合成一个程序集。

ILMerge可以做到这一点,但使用起来有点麻烦。

一些(专有)工具也可以做到这一点。我知道至少有一个混淆器(深海)可以做到这一点。DeepSea还允许您指定要包含的内容以及要从生成的程序集中公开的类型。

全面披露:我认识建造深海模糊器的人。

我想您可以将目标程序集作为资源嵌入,然后在一些自定义程序集解析代码中对其进行解包?

编辑:这里有一个例子:在另一个程序集中嵌入程序集