如何将 C# 控制台应用程序部署为单个 exe? [复制]

Posted

技术标签:

【中文标题】如何将 C# 控制台应用程序部署为单个 exe? [复制]【英文标题】:How can I deploy a C# console application as a single exe? [duplicate] 【发布时间】:2017-03-25 13:20:24 【问题描述】:

我已经搜索过这个并且有许多以前的答案,但似乎都过于复杂。

我通常是 C# 和 Windows 开发的新手(以前的 Mac 开发人员)。

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

我想要做的就是将我的项目构建为一个独立的 .exe 文件,该文件可以简单地从命令提示符运行,而不必担心最终用户必须安装大量 DLL(我不习惯作为新的 Windows 用户处理)。我了解最终用户需要安装 .NET 框架。是否有在我的用例中构建单个 .exe 文件的防白痴指南?

我不禁认为这一定是一个非常普遍的问题。

谢谢。

【问题讨论】:

这确实很常见。但是,没有默认的解决方案所以这个问题。我从来不需要它,但我知道一个名为 Fody.Costura 的 nuget 包,它能够将你的依赖项(dll 和东西)作为资源打包到应用程序中。另一个可能性是 ILMerge,它基本上做同样的事情 您可以查看***.com/questions/189549/… 不知道你用的是什么版本的vs。使用 vs 2013,您可以使用 installshield 限量版(免费),它也做得很好。简单、直接的 gui,就在与引导式 ui 的对比中。它会检查 .net 等依赖项,并在需要时将它们安装在客户端上等。您还可以配置以添加二进制文件。你最终得到一个文件夹和一个 setup.exe Fody Costura 看起来是解决方案。谢谢。 现在可以从 .NET Core 3 docs.microsoft.com/en-us/dotnet/core/whats-new/… 【参考方案1】:

或者,如果您想运行 adhoc 测试以查看它确实有效并且相对较快地完成它,您可以尝试使用ILMerge-GUI

我以前一直在努力单独使用 ILMerge。使用 GUI,我可以更快地验证我可以让一切正常工作。

【讨论】:

【参考方案2】:

您可以将库与ILMerge 合并,并在 Visual Studio 中将其作为构建后事件运行。这将创建一个包含所有库的 exe。您将找到有关 ILMerge here 的更多信息。

【讨论】:

以上是关于如何将 C# 控制台应用程序部署为单个 exe? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 .exe 从 C++ 项目复制到 C# 项目的输出目录?

C#,我可以将文件从流或其他文件保存到我的单个 exe 中吗?

如何将我的 C# Basic 控制台应用程序打包成一个 EXE 文件? [复制]

如何将C#代码转换成软件

如何将 .NET EXE 反编译为可读的 C# 源代码?

如何创建线程安全的 c# exe 包装器