0

我正在sharpdevelop 3.2 中开发一个网络紧凑的框架项目。它工作得很好,但是当我运行它时,必须有像firebird net provider和我使用的其他程序集这样的dll,在带有exe的文件夹中。如何将所有这些 dll 嵌入到 exe 中,将其全部嵌入到一个 exe 文件中,而不需要将它们单独复制粘贴到我从中运行 exe 的文件夹中?

4

1 回答 1

0

对于这类事情,我最常使用的方法是将程序集作为资源添加到 EXE 中,然后为AssemblyResolve事件添加一个处理程序,将程序集从资源解压到内存中并从那里加载。

使用的好处AssemblyResolve是,如果需要,您可以使用磁盘上的实际程序集覆盖资源绑定程序集,因为它不会调用AssemblyResolve,直到它无法通过正常方式找到程序集。如果您更喜欢强制它始终加载资源,请AssemblyLoad改为使用挂钩。

您还可以压缩资源以减少膨胀,从而节省总部署字节数。

于 2014-06-21T10:36:41.040 回答