有没有办法在实际的EXE中保留我的Visual C#程序(例如SQLite)所需的任何DLL,因此它不需要文件存在?
如果没有,任何人都可以告诉我如何为我的程序(独立于.NET,也许是C ++?)创建一个包装器,以便在启动程序之前将所需文件复制/加载到工作目录。
我打算最终得到的是一个可以在任何地方部署的EXE文件,并将其自身设置为变换器。它所需要的只是以下标准:
答案 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