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

时间:2012-03-30 10:00:18

标签: c# dll compilation

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

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

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

  • SQLite存在
  • OpenHardwareMonitorLib存在
  • 安装了.NET 2.0(如果没有,使用可再发行软件包提供安装)

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

ILMerge可以执行此操作,但a bit cumbersome可以使用。

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

完全披露:我知道构建DeepSea Obfuscator的人。

答案 3 :(得分:0)

我猜你可以将目标程序集嵌入为资源,然后在一些自定义程序集解析代码中解压缩它们?

编辑:这里有一个例子:Embedding assemblies inside another assembly