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

时间:2011-05-23 13:31:19

标签: c# .net deployment executable

我有时会创建供个人使用的小项目。因此,我只需从项目中提取调试目录,并在需要使用我的应用程序时运行可执行文件。我怎么能组合所有这些文件:

enter image description here

成一个可执行文件。我知道我可以将该文件夹放在我的驱动器中的某个位置,并具有可执行文件的快捷方式。我很想知道如何做到这一点。

4 个答案:

答案 0 :(得分:4)

在这里要实现两件事:

  1. 您永远不应该分发应用程序的调试版本。总是在“发布”模式下为您的应用程序的最终版本编译,即您将允许人们使用的版本(即使这些人只是您)。

    有很多很多理由这样做,但最明显的原因是在“Release”模式下编译将启用允许代码运行的编译时和运行时优化显着更快。

  2. 您实际上只需要其中一个文件来运行您的应用程序,那就是.EXE文件本身。这是你必须分发的唯一一个。其余文件只提供调试信息,并由Visual Studio使用。由于您可能不需要在编写应用程序后对其进行调试,因此根本不需要这些文件。

    事实上,只有当您的应用使用.EXE库文件时,才需要分发.DLL文件之外的任何内容。它们可能是您在同一解决方案中从另一个项目创建的库,或者它们可能是其他人编写的库,您可以使用它们为您自己的代码提供一些功能。

答案 1 :(得分:0)

您是否尝试仅将exe文件复制到单独的目录并运行exe?您的应用程序无需运行屏幕截图中列出的其他3个文件。

答案 2 :(得分:0)

您不需要组合整个文件夹,只需将一个文件“ConsoleApplication26.exe”移动到您关注的任何位置,并自己快乐地运行它。其他文件只包含在Visual Studio IDE中调试程序时使用的信息。

答案 3 :(得分:0)

在这种特定情况下,您只需要.exe文件,因为其余文件包含调试信息等。

但一般来说,dll文件可以放在全局程序集缓存(或GAC)中。 MSDN article on the GAC这应该 - 如评论中所述 - 由安装程序处理,但是避免将dll留在程序文件夹中的方法。正如Cody所提到的,将它们留在程序文件夹中通常会更好。

如果您有图像或文本文件等资源,可以通过在Visual Studio中将它们设置为嵌入资源来嵌入可执行文件中。

然后可以将它们作为执行程序集内的流进行访问(this.GetType().Assembly.GetManifestResourceStream(name),其中name是默认名称空间“。”filename。如果要了解嵌入资源的名称,可以参考GetManifestResourceNames方法。

但是包含资源也意味着您必须重写一些资源加载才能使用资源流,因此需要一些额外的工作。