是否可以将整个c#控制台应用程序与其应用程序文件夹/文件打包到一个可执行文件中,以便在运行时不需要在计算机上安装它?将整个C#控制台应用程序打包到一个文件中?
回答
如果没有很多资源的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
ILMerge的作者说,这“作为ILMerge的作者,我认为这是美妙的,如果我早知道这一点,我从来不会写ILMerge“
这是杰弗里里希特写的,我希望这里的大多数人都会听说过。 :)
一个好的开始是这个工具http://ilmergegui.codeplex.com/这是ilmerge的gui包装。 –
[ILRepack](https://github.com/gluck/il-repack)是一个开源替代方案(针对ILMerge) – Gluck
- 1. 将音乐文件添加到C++控制台应用程序
- 2. 将一个kivy应用程序打包成一个exe文件
- 3. 将整个Python应用程序打包为PEX文件
- 4. 从控制台应用程序输入到另一个C#控制台应用程序?
- 5. C# - 从控制台应用程序发送数据到另一个控制台应用程序
- 6. 控制台应用程序:打印到控制台溢出
- 7. C#应用程序在控制台中使用另一个应用程序
- 8. 将一行“数据”从一个C#控制台应用程序传递到另一个C#控制台应用程序的最佳方式是什么?
- 9. C#中的第一个控制台应用程序#
- 10. 在C中逐行启动一个控制台应用程序#
- 11. 颜色在一个框中,c#控制台应用程序
- 12. 一个控制台应用程序,许多配置文件
- 13. C#控制一个控制台进程
- 14. 如何从“转到”另一个控制台应用程序中编写的控制台应用程序转移?
- 15. Phonegap Build将整个资源文件夹打包到每个平台包中?
- 16. 将数据从一个控制台应用程序发送到另一个控制台
- 17. 如何打包一个VC++ Win32控制台应用程序和DLL
- 18. 最快的方法来打包一个Java控制台应用程序
- 19. 在控制台应用程序中打开pdf文件
- 20. MCI_OPEN失败在一个C++控制台应用程序的MP3文件
- 21. 将C#控制台应用程序合并到MVC 4应用程序中
- 22. C++应用程序中的控制台
- 23. C#控制台应用程序中断?
- 24. 将文件拖放到控制台应用程序
- 25. 将整个控制台输出输出到文本文件
- 26. C++控制台应用程序连接到android应用程序
- 27. Pi 3上的Python打开并控制一个控制台应用程序
- 28. Debug文件夹中在Visual Studio中打开C#控制台应用程序2008
- 29. 控制台应用程序中的App.Config文件C#
- 30. C#控制台应用程序中的正确文件路径
即使它包含很多程序集,您不必安装它,您可以只复制整个文件夹。 – ElDog
我的应用程序也包含一些html/js/css文件。他们可以打包到.exe文件中吗? – Raskolnikoov
是的,作为一个嵌入式资源。这比将程序集打包到一个可执行文件中更容易也更常见。看到Matthew Watson的回答。 – ElDog