如何将C#控制台应用程序部署为单个exe文件?

17

我已经搜索了相关问题,但所有答案似乎都过于复杂。

我是C#和Windows开发的新手(之前是Mac开发者)。

我使用Visual Studio Community版编写了一个简单的控制台应用程序。我的应用程序使用两个第三方库(CommandLineParser和json.NET),通过NuGet在VS中添加到我的项目中。

我想要做的就是构建一个独立的.exe文件,可以在命令提示符下简单地运行,而无需担心最终用户必须安装许多DLL文件(这对于一个新的Windows用户来说是不习惯的)。我知道最终用户需要安装.NET框架。在我的用例中,有一个白痴级别的指南来构建单个.exe文件吗?

我无法不将这视为一个非常常见的问题。

谢谢。


2
这确实很常见。但是,这个问题没有默认解决方案。我从未需要它,但我知道一个叫做Fody.Costura的NuGet包,它能够将你的依赖项(dll和其他文件)打包为应用程序资源。另一个可能性是ILMerge,它基本上也是一样的。 - nozzleman
7
你可以查看这个链接:https://dev59.com/qHVC5IYBdhLWcg3wxEJ1 - Miguel
不知道你使用的是哪个版本的 VS。如果你使用的是 VS 2013,你可以使用 InstallShield Limited Edition(免费),它也能很好地完成工作。它有一个简单、直接的 GUI,在 VS 中具有引导式 UI。它会检查依赖项,如 .NET,并在需要时在客户端上安装它们等。你还可以配置添加二进制文件。最终你会得到一个文件夹和一个 setup.exe。 - nocturns2
Fody Costura 看起来是解决方案。谢谢。 - Garry Pettet
如果这有帮助的话(使它更小很方便!)https://davemateer.com/2020/04/13/NET-Core-Single-Executable-Console-Application - Dave Mateer
2个回答

7

7

如果您想运行临时测试以确保它确实有效并相对快速地完成,请尝试使用 ILMerge-GUI

我之前曾尝试过仅使用 ILMerge,但是使用 GUI 可以更快地验证是否可以使所有内容正常工作。


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