【问题标题】:How do I publish a Windows Forms Application?如何发布 Windows 窗体应用程序?
【发布时间】:2011-05-22 01:14:57
【问题描述】:

所以我制作了一个 C# 程序,它非常棒(它是一个 Windows 窗体应用程序)。它的问题是我不知道如何在调试模式表单之外使用它。我如何发布它?我的目标是创建两个文件夹,将应用程序的快捷方式放在一个文件夹中,另一个文件夹将包含应用程序和所有外部程序(一些按钮链接到批处理文件)。然后我希望能够把它放在一个RAR压缩文件中,然后在线上传给其他人下载。

我如何发布它以便发生这种情况?如何让它退出调试模式?

【问题讨论】:

  • 除非您使用 ClickOnce 技术,否则为每个平台创建您自己的更新/下载/维护解决方案并不是很明智,dot net 框架可以。如果你相应地改变你的问题,我会教你如何做到这一点
  • 如果您将使用 ClickOnce,您将能够自动将应用程序更新到客户端,并在需要时覆盖(例如,在使用实际更新文件之前调用一些批处理使用 ClickOnce 技术生成进程、通知用户可用更新等)应用程序的分发逻辑。您将能够直接从构建环境发布更新版本。
  • 此外,ClickOnce 技术几乎可以在任何 Web 分发平台上使用,无论是 ASP.NET IIS 还是 PHP Apache 或 Mono。它还可以构建可更新的 CD 发行版或网络共享。
  • 你想为你的项目做一个设置吗?

标签: c# publishing


【解决方案1】:

进入您的项目文件夹,然后导航到 /bin/Release。如果那里有一个带有项目标题的 EXE 文件,请将其复制到某处(以及您可能已链接的任何 DLL),然后您的程序就存在了。如果它不存在,首先尝试在 Visual Studio 中构建 -> 编译解决方案。如果它仍然不存在,请导航到 /bin/Debug 并执行相同的操作。然后,将所有批处理文件复制到另一个文件夹,将它们放入同一个文件夹,然后 RAR。

附:尽量不要用RAR,很少有人能解压出来。尽可能使用 ZIP 或 SEA(自解压存档)。

【讨论】:

  • 我对您的回答投了反对票,因为您建议在 Debug 目录中对输出进行 RAR。除非您有特定的理由,否则您永远不应该分发应用程序的调试版本。
  • @Jacob:嗯,是的,但是 ZIP 功能是 Windows、Mac 和 Linux 中内置的。你必须安装 WinRAR,而一些权限有限的人不能这样做。当然,如果你的程序需要这样的权限才能运行,那也没关系。 @Chris Fulstow:谢谢 :)
  • 好的 - 现在你的答案已经足够了,干得好。 +1 是的,我知道实际代码不在调试版本中,但是还有其他一些小问题使调试版本不利于分发。
  • 我想有一个比那个更好的解决方案,此外,使用静态喜欢的 DLL 有时不足以构建现代应用程序,(例如,使用 MEF 的 Unity 的可扩展应用程序)容器)
【解决方案2】:

首先,您需要在发布模式下构建应用程序,在 Visual Studio 中只需将窗口顶部附近的下拉菜单更改为“发布”。这将创建一个bin/Release 您的源所在的目录。该文件夹将包含您的应用程序的 EXE 和您需要包含的 DLL。它可能(并且可能会)包含一些您不想想要包含的调试*.PDB 文件——因为它们包含调试信息。

将该目录的内容复制到某处并将其 RAR。

在 x86 模式下构建

(只有在有特定原因时才应该这样做)

如果您的应用程序使用不兼容 64 位的第 3 方 DLL,您可能需要在 x86 模式下进行发布构建。为此,请单击“任何 CPU”下拉菜单并单击“新配置”(或类似内容),然后按照步骤添加 x86。然后使用 x86 -- Release 设置构建。这会将 x86 二进制文件输出到您的源所在的 bin/x86/Release 文件夹。

首选解决方案

大多数用户会更喜欢某种形式的自动安装程序,而不是简单的 RAR 或 ZIP。 Visual Studio (Standard/Pro) 可以创建为您完成所有工作的自安装 MSI。基本概述是here。您可以使用 Visual Studio 提供的向导添加快捷方式/等。

如果您需要更强大的安装程序,您可以查看解决方案,例如 InnoSetupNSIS

【讨论】:

  • 实际上,使用 ClickOnce 可以避免 DLL 地狱。
【解决方案3】:

要以Release 模式而不是Debug 构建您的应用程序,请转到“构建”菜单并选择“配置管理器”。

主动解决方案配置更改为Release。现在,当您构建解决方案时,它会将可执行文件放在 /bin/Release 文件夹中。

如果您需要在构建解决方案后自动执行某些操作,例如打包到 RAR 或 ZIP 存档并将可分发文件复制到另一个文件夹,请查看 post-build actions

【讨论】:

  • 如果用户覆盖了默认的输出路径和目标平台,或者在不同的开发平台上编译,指定的路径可能是无效的并且针对应用程序上的特定版本,例如,默认输出路径可以目标为 (bin\x86\Debug, bin\x64\Debug, )
  • @Artur 是的,但问题中没有提到多架构构建,所以这不是考虑因素。
【解决方案4】:

在 Visual Studio 2010 之后,Microsoft 从 Visual Studio 中删除了 Make setup 实用工具,我们必须从

单独下载该插件

Get InstallShield Limited Edition for Visual Studio

您必须填写申请表

安装后,转到 Visual Studio-->新建项目-->其他项目类型-->设置和开发

您将看到以下屏幕

现在您可以转到 InstallShield 设置实用程序并根据需要进行更改。

在以下界面中添加项目调试文件夹中的所有文件并构建解决方案,

最终设置将位于您的设置文件夹中-->Express\CD_ROM\DiskImages\DISK1**

希望对你有帮助

【讨论】:

  • 你的意思是他应该从调试文件构建解决方案吗?!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
  • 1970-01-01
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多