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

时间:2014-01-30 10:38:17

标签: c# .net console-application owin

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

1 个答案:

答案 0 :(得分: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.

[编辑]

您实际上可以完全取消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”

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