7

我知道我们需要通过单个用户操作来部署我们的应用程序。但是,我知道:

  1. 在 .NET 商店中使用哪些好工具?
  2. 您如何管理每个环境的配置更改?

有人可以为我指出一些用于持续集成的好资源。我希望看到一些理论以及一步一步的实践指南。

编辑:
我现在需要自动化网络部署;但是,我还想了解如何为桌面应用程序执行此操作。

4

6 回答 6

5

我写了一篇可能有帮助的博文:

Visual Studio Web 部署项目

它已有一年半的历史,但谈到了一些新的(当时)VS 项目模板以及来自 IIS 团队的名为 MSDeploy 的命令行实用程序。它们听起来很有希望,而且看起来它们非常适合针对多个构建配置、跨场同步多个服务器以及对网站部署的实际输出进行更多控制。

也许到现在为止,这些技术也已经成熟了。

于 2009-07-13T19:23:10.503 回答
2

我们在Windows Installer XML方面取得了巨大成功。基本上,您在 XML 中定义构成应用程序的组件,然后 WiX 将其转换为 MSI 包。文档相对稀疏,但提供的 CHM 文件与 search fu 相结合将使您有很长的路要走。

MSI 包可以获取配置值的输入参数,并在部署应用程序后执行操作以操作配置文件。例如,“msiexec /i MyCustomPackage.msi SqlServer=SomeSQLBox”可以部署 Web 应用程序并修改从属 SQL 框的配置条目。

于 2008-10-23T20:15:35.497 回答
1

Kinook 的Visual Build Pro是一个非常好的一键部署工具。它易于使用并且具有很多功能。我已经使用它多年了。当然还有 NAnt,我用的不多。

至于管理配置更改,我管理多个带有指示部署环境的扩展名的配置文件,然后在我的构建脚本中执行一个简单的重命名作为一个步骤。

例如,如果我要部署到 Test,我可能有一个名为 Web.test.config 的配置文件,它会被构建脚本自动重命名为 Web.config。

于 2008-10-23T20:14:43.890 回答
1

我写了一篇非常详细的博客文章,使用 TeamCity 和 Web 部署项目来自动化构建和部署,作为初学者在这里:

http://www.diaryofaninja.com/blog/2010/05/09/automated-site-deployments-with-teamcity-deployment-projects-amp-svn

然后我添加到此以显示 FTP 添加

http://www.diaryofaninja.com/blog/2010/09/21/continuous-integration-tip-1-ndash-ftp-deployment

一个基本的流程非常简单:

  • 使用我从我的 SVN 存储库下载的 teamcity 构建服务器
  • 我构建站点并将其部署到构建服务器上的本地文件夹
  • 我启动了一个支持脚本的命令行 FTP 客户端,称为
  • WinSCP 使用 MSBUILD 任务执行 (http://winscp.net/)
  • 上传我的所有网站内容
  • 有[插入饮料]的选择

然后,我确保我只部署我的 SVN 存储库的主干,并在合并之前开发和测试分支中的所有内容 - 这样只有经过测试的东西才会被部署。将自动化测试添加到您的构建周期中,您将获得天作之合。

一些很棒的免费工具是:

于 2011-02-12T05:40:15.997 回答
0

我看到两个不同的问题:

  • 对于部署的事情:ClickOnce 部署应该这样做。您只需在 VS.net 中的 Build 菜单 > Publish 中发布您的桌面应用程序。VS.net 然后编译一个网页和一个 setup.exe。当使用 IE 或 Firefox 和 .net 3.5 SP1 的用户单击该链接时,它会立即运行。ClickOnce 还为您处理更新,并且有广泛的 API 可供开发。
  • 持续集成是一个非常不同的事情。我建议您在谷歌上搜索“CruiseControl.net”并下载并尝试尽可能多的资源。它基本上是一个构建服务器,但您可以将它与 SVN、NUnit 连接以进行测试等。我不建议为这种不稳定的产品买书。最好下载并尝试一下。
于 2008-10-23T20:20:16.127 回答
0

CruiseControl.NET 用于您的 ContinuousIntegration 解决方案。对于部署,我使用 MSBuild 项目文件。最重要的是,我保留了所有服务器配置文件。我通过参数将一个服务器属性传递给 MSBuild,该属性告诉 MSbuild 要使用哪些配置值,然后完成部署。唯一无法从 CruiseControl 直接完成的部署是部署到我们的实时服务器。我们保留该命令行 MSBuild 只是为了避免意外按下按钮,或者有权访问 CC.NET Web 仪表板的人只是在玩弄它。

于 2008-10-23T20:29:57.917 回答