将整个C#Console应用程序打包在一个文件中?

Ras*_*oov 5 .net c# console-application owin

是否可以将整个c#控制台应用程序与其应用程序文件夹/文件打包到一个可执行的.exe文件中,以便在计算机运行时不需要安装它?

Mat*_*son 7

如果它没有很多资源DLL(带有翻译的字符串,在单独的子文件夹中),那么你可以使用ILMerge为DLL文件执行此操作:

http://research.microsoft.com/en-us/people/mbarnett/ilmerge.aspx

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

如果您还有其他文件,则必须将它们作为资源添加到程序中并在运行时提取它们.

有关如何嵌入资源文件并在运行时提取它们的详细信息,请参见此处:

http://support.microsoft.com/kb/319292

简要说明:将嵌入资源添加到项目后,执行以下操作:

 var assembly = Assembly.GetExecutingAssembly();
 var stream = assembly.GetManifestResourceStream("MyNamespace.MyResourceFileName");

 // ... do something with stream, e.g. write it out to a file.
Run Code Online (Sandbox Code Playgroud)

[编辑]

实际上,您可以完全取消ILMerge并拥有更强大的解决方案.

有关详细信息,请参见此处:http://blog.nenoloje.com/2011/08/better-alternative-to-ilmerge.html

在这里:http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx

ILMerge的作者说"作为ILMerge的作者,我认为这很棒!如果我知道这一点,我就不会写ILMerge"

它是由杰弗里里希特写的,我希望这里的大多数人都能听说过.:)