【问题标题】:Steps to take when deploying a Windows Forms application?部署 Windows 窗体应用程序时要采取的步骤?
【发布时间】:2011-02-21 19:06:25
【问题描述】:

我已经完成了我的桌面应用程序的第 1 版,它已准备好进行部署。

为了测试一下,我抓取了 /debug 文件夹的内容并将其复制到目标机器的文件夹中,然后应用程序就可以工作了。

我确定这不是正确的做法。

我已经创建了一个 Visual Studio 安装程序项目并且也创建了它。我的问题是,在部署应用程序时,我是否必须设置类似于 ASP.Net 的 debug=false 的东西?

感谢您的建议。

【问题讨论】:

    标签: c# winforms deployment


    【解决方案1】:

    .NET 应用程序有多种部署选项。您的方法通常称为“xcopy 部署”,是所有包含文件的简单副本。

    通常您不会从调试文件夹中复制内容。相反,您将 Visual Studio 中的“解决方案配置”组合从调试更改为发布,编译应用程序并从“发布”文件夹复制文件。

    在创建应用程序的发布版本时,编译器会对代码进行更多优化,以创建更高效​​的可执行文件。

    还有其他部署方法。这里有一些创建不同类型的安装程序

    • ClickOnce(在解决方案资源管理器中右键单击您的项目并选择“发布”)
    • 安装程序项目(创建 MSI 安装程序)
    • WiX(也创建 MSI 安装程序,比安装程序项目更麻烦,但更灵活

    创建安装程序的好处是最终用户运行安装程序通常比复制一堆松散的文件更简单。安装程序可以在开始菜单上自动创建一个图标,确保安装了正确版本的 .NET 框架等。

    如果您只想在一台或最多几台计算机上运行您的应用程序,那么创建安装程序的额外工作可能不值得。

    【讨论】:

      【解决方案2】:

      在为您的应用创建“候选发布版”时,我会执行以下操作:

      • 在您的源代码控制存储库中创建一个分支或标签,将特定构建标识为候选发布的源。分支很好,因为它允许您进行必要的更改,以在您的开发环境中发布您不想要的源代码。
      • 设置应用的发布版本配置。除其他外,是的,这确实确保未设置 DEBUG 编译常量,因此基于该常量有条件编译的任何内容都不会设置。默认行为也是优化代码(更快的运行时,不可调试)并且不生成 PDB。
      • 构建安装程序。理想情况下,安装程序的输出应该放在主项目的主要输出之外的其他地方。
      • 运行安装程序(从其构建位置执行此操作即可)。它应该没有错误地执行,并产生您期望的结果。
      • “冒烟测试”安装的应用程序。基本上,运行一些不修改它所针对的数据层的基本操作,这将验证应用程序没有可能由于缺少 DLL 或不正确的连接字符串/应用程序设置而导致的重大问题。
      • 将安装程序复制到足够大的 U 盘,并在未安装 VS 的“处女”计算机上尝试相同的安装和冒烟测试。理想情况下,它应该尽可能地模仿目标机器的环境。

      【讨论】:

        【解决方案3】:

        首先,您不应该部署调试程序集。您应该在发布模式下构建。 http://msdn.microsoft.com/en-us/library/wx0123s5.aspx

        我从未使用过 Installer 项目,但我更倾向于使用 Web 和控制台的东西。希望其他人会有更详细的帖子:)

        【讨论】:

          【解决方案4】:

          使用Setup and Deployment project。这样,您的应用程序将确保用户拥有所需的库。如果未安装,它还将下载所需的 .net 版本。

          并且总是发布“发布”版本而不是调试版本。从调试文件夹复制/粘贴在调用案例中不起作用,并且它不是发布应用程序的正确方法。

          【讨论】:

            【解决方案5】:

            此外,如果您不希望有人对您的代码进行逆向工程,您可能需要使用 Dotfuscate。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-03-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多