Possible Duplicate:
Embedding DLLs in a compiled executable




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

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

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

最佳答案

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

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


转到解决方案资源管理器,
右键单击资源文件,
转到Build Actions:选择Embedded Resource。


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

带有托管dll的选项2:

对于托管DLL,您有两种选择:


使用ILMerge。 ILMerge有一个不错的GUI界面,可以在[here] 7中找到它
将它们用作资源,有关详细信息,请参见this article


查看以下CodeProject article that explains this


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

关于c# - Visual Studio 2010 EXE打包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14227814/

10-14 16:11