1

这里有很多关于这个的帖子,我正在使用另一个 SO 帖子中的这段代码,并在我的 Main() 方法中放置一个委托分配。其他帖子都没有直接回答我的问题。

我已经将我的第三方程序集作为资源嵌入,但是当我启动应用程序时:

  • 我得到一个带有 FileNotFoundException 内部的 TypeInitializationException。它试图在文件系统上找到程序集并失败。
  • 它永远不会到达 Main 方法,在该方法中为 AssemblyResolve 分配了事件处理程序

我的 Resources.resx 中嵌入了两个程序集引用,一个是第三方工具(命令行解析器),另一个是应用程序所在的库文件。

也许这对于控制台应用程序是不可能的?似乎不太可能,但我看不到解决方法。

回复:ILMerge 等:我想在不涉及任何工具的情况下完全用代码完成这项工作。原因:我不希望存储库中的源代码需要其他团队成员安装他们可能还没有的工具。如果这不可能,那么 ILMerge 看起来是下一个最佳选择。

4

3 回答 3

2

考虑使用 ILMerge 将程序集合并为一个,而不是作为资源嵌入。这是ILMerge的下载站点。

您会将第三方程序集合并到您的控制台应用程序中。

于 2010-03-10T16:24:16.903 回答
1

您还可以查看XenoCode等应用程序虚拟化工具。他们可以将多个程序集(包括 .net 框架本身)打包成一个独立的可执行文件。

于 2010-03-10T21:39:09.257 回答
1

如果是混合模式程序集,它必须驻留在磁盘上。一些限制或东西。

于 2010-03-11T15:18:00.100 回答