2

可能重复:
在编译的可执行文件中嵌入 DLL

我有 ac# winforms 应用程序以及一些依赖的 .dll 和依赖的外部 .exe。

是否有可能以某种方式将它们全部编译成一个可执行文件(不是安装程序),只是独立的可执行文件?

如果可能,从 VS 2010 Ultimate 开始?

4

2 回答 2

1

ILMerge是一个实用程序,可用于将多个 .NET 程序集合并为一个程序集。

于 2013-01-09T03:33:56.000 回答
1

简而言之:唯一可行的方法是将所有外部文件添加为嵌入式资源并使用ILMerge.

选项 #1:以下步骤显示如何在 Visual Studio 中嵌入资源文件:

  1. 转到解决方案资源管理器,
  2. 右键单击资源文件,
  3. 转到构建操作:选择嵌入式资源。

您将在 exe 中拥有该文件引用。稍后您可以在运行应用程序时使用反射并获取资源。从这里借来的源代码:

带有托管 dll 的选项 #2

对于托管 DLL,您有几个选项:

  • 使用ILMerge。ILMerge 有一个不错的 GUI 界面,可以在 [这里]7 找到
  • 将它们作为资源嵌入,有关详细信息,请参阅本文

查看以下解释此问题的 CodeProject 文章

ILMerge 是一个实用程序,可用于将多个 .NET 程序集合并为一个程序集。ILMerge 采用一组输入程序集并将它们合并到一个目标程序集中。输入程序集列表中的第一个程序集是主程序集。当主程序集是可执行文件时,目标程序集被创建为具有与主程序集相同入口点的可执行文件。此外,如果主程序集具有强名称,并且提供了 .snk 文件,则使用指定的密钥对目标程序集进行重新签名,使其也具有强名称。

于 2013-01-09T03:34:24.513 回答