如何将 Windows Forms 应用程序(使用 C#)制作成为单个 exe 文件?

5
我正在使用Visual Studio 2013。我刚刚用它创建了我的第一个Windows应用程序(一个Windows窗体),如果可能的话,我希望将库、配置文件/清单等文件嵌入到一个单独的可执行文件中,以便更加方便。这个能做到吗?如果可以,怎么做呢?
非常感谢。

更方便是什么意思?为什么更方便? - rory.ap
你在谈论哪些库?无论如何,.NET Framework 应该安装,或者你有第三方库吗?配置文件确实应该保持外部化,否则就不再是“可配置”的了。 - Steve
我不确定ILMerge是否能够处理应用程序配置。 - BradleyDotNET
创建一个安装程序。 - Dour High Arch
只需部署一个文件而无需安装,对于小事情来说确实非常方便。 - TaW
显示剩余2条评论
1个回答

2
您不应该部署bin\Release文件夹中的所有文件。vshost文件是用于在Visual Studio中进行调试的,它们不应该被部署。pdb文件是用于调试的,不需要被部署。如果您的应用程序不使用配置文件,则不需要部署它。但您可能需要部署任何其他程序集,可以使用ILMerge来解决。
话虽如此,我的建议是要么创建一个安装程序,要么创建一个自执行存档(zip或7z),而不是尝试使用ILMerge来部署任何第三方程序集与您的应用程序。
更新:
仅为明确起见,这里是默认WinForms应用程序的文件列表,我向其中添加了JSON.NET(发布版本):
Newtonsoft.Json.dll
Newtonsoft.Json.xml
WindowsFormsApplication1.exe
WindowsFormsApplication1.exe.config
WindowsFormsApplication1.pdb
WindowsFormsApplication1.vshost.exe
WindowsFormsApplication1.vshost.exe.config
WindowsFormsApplication1.vshost.exe.manifest
如果应用程序不使用配置文件,则您只需要部署Newtonsoft.Json.dll和WindowsFormsApplication1.exe两个文件。

好的,谢谢你。我会考虑将其作为自存档事项来完成。由于这是我第一个Windows应用程序,我实际上希望它是一个独立的可执行文件,包含所有内容,但如果必要的话,我也不介意在文件夹中发布它与更多的文件一起,因为我的担心之一是以这种方式发布会显得很菜。 :p - CyborgFish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接