将运行程序所需的几个文件分组为一个可执行文件

问题描述

| 有时我会创建一些供个人使用的小项目。因此,只要需要使用应用程序,我就从项目中提取调试目录并运行可执行文件。如何合并所有这些文件: 成一个可执行文件。我知道我可以将该文件夹放在c驱动器中的某个位置,并具有指向可执行文件的快捷方式。我只是想知道如何做到这一点。     

解决方法

要在此处实现两点很重要: 您永远不要分发应用程序的调试版本。始终以“发布”模式编译应用程序的最终版本,这是您要让人们使用的应用程序(即使这些人只是您自己)。 这样做的原因有很多,但最明显的原因是,在“发布”模式下进行编译将同时启用编译时优化和运行时优化,从而使您的代码运行速度大大提高。 实际上,只有您显示的文件之一才可以运行您的应用程序,而这就是“ 0”文件本身。那是您必须分发的唯一一个。其余文件仅提供调试信息,并由Visual Studio使用。由于编写应用程序后可能不需要调试,因此根本不需要这些文件。 实际上,只有在您的应用使用了
.DLL
个库文件时,才需要分发除
.EXE
文件之外的任何内容。它们可能是您在同一解决方案中从另一个项目创建的库,也可能是其他人编写的库,您正在使用这些库为自己的代码提供某些功能。     ,您是否尝试仅将exe文件复制到单独的目录并运行exe?屏幕快照中列出的其他3个文件对于您的应用程序来说是不需要的。     ,您不需要合并整个文件夹,只需将一个文件'ConsoleApplication26.exe \'移到您需要的任何位置,然后即可愉快地运行它。其他文件仅包含在Visual Studio IDE中调试程序时使用的信息。     ,在此特定情况下,您仅需要.exe文件,因为其余文件包含调试信息等。 但是一般来讲,dll文件可以放在全局程序集缓存(或GAC)中。 GAC上的MSDN文章-如注释中所述-应该由安装程序处理,但这是避免将dll \保留在程序文件夹中的方法。正如Cody所提到的,通常最好将它们保留在program文件夹中。 如果您拥有图像或文本文件之类的资源,则可以通过在Visual Studio中将它们设置为嵌入式资源来将它们嵌入可执行文件中。 然后,它们可以作为执行程序集内部的流进行访问(
this.GetType().Assembly.GetManifestResourceStream(name)
,其中name是默认名称空间\“。\”文件名。如果要学习嵌入式资源的名称,可以参考GetManifestResourceNames方法。 但是,包含资源还意味着您必须重写一些资源加载才能使用资源流,因此需要一些额外的工作。