4

我们的主网站是 10 个独立的 ASP.NET 项目和应用程序的集合。目前,在新服务器上进行完整部署需要运行十个单独的 msdeploy 作业;每个应用程序都被构建、配置(使用配置转换)和打包,但我们没有任何解决方案可以将所有包部署为单个操作。

我可以看到几种可能这种情况下起作用的可能性,但我很想听听任何成功或失败的人在设置类似的东西方面的​​意见:

  1. 一个包含包和 deploy.cmd 脚本的文件夹,其中包含一个“主脚本”,它将依次调用每个单独的应用程序脚本并将该应用程序部署到目标服务器。

  2. 使用暂存服务器,我们使用生产配置从 TeamCity 部署每个包的最新版本,然后使用 msdeploy 将该服务器捕获到一个巨大的 msdeploy ZIP 包中,然后将其作为单个 msdeploy 步骤部署到每个生产服务器上。

  3. 创建一个单一的、巨大的 Visual Studio 解决方案,它引用我们代码库中的每个项目(可能通过 svn:externals?),编译和交叉引用它们,因此支持使用单个 msbuild 作业来创建包含我们整个代码库的巨大单体包,从源代码管理中的最新版本构建并针对目标环境进行配置。

我研究了Troy Hunt 的优秀“你部署错了”系列,以及Scott Hanselman 的“Web 部署变得很棒”文章,但我认为我正在寻找一种超越这两种方法的方法,它包含多个项目和应用程序不必一步从源代码构建它们 - 有什么想法吗?

4

2 回答 2

2

我们公司有一个非常相似的场景,我们使用WIX创建了一个安装包。我们的配置转换发生在安装时,所以现在我们创建一个构建,然后通过 MSI 安装包将其部署到每个服务器。WIX 非常灵活,但学习曲线也很陡峭。我们使用自己的自定义操作修改配置,但也可以通过其他方式完成。

我们使用 Team Foundation Server 和MSBuild进行构建。这很简单,但确实需要一些工作才能正确设置尽可能多的项目和解决方案。

我们研究甚至尝试过的其他选项是:

  • InstallShield - 不够灵活。
  • 编写我们自己的 C# 安装 - WIX 已经想到了我们想要完成的所有事情,那么为什么要重新发明轮子呢?
  • 只是说要搞定这一切并手动安装 - 在 WIX 和 MSBuild 中花费 2 或 3 个月的开发时间很容易支付我们去年手动完成工作所花费的时间。

我认为 Visual Studio 中内置的部署工具是为只有几个部署的单个应用程序而设计的。听起来您需要外部工具和开发工作来更快地进行部署,并消除手动操作的需要。这就是我们投资上述解决方案的原因,它确实得到了回报。

于 2012-10-19T15:32:43.410 回答
-1

我会选择Installshield。

  • Installshield 最新版本支持创建 webdeploy 包。
  • 如果您想为所有 Web 应用程序单独或一个版本创建包,您可以为单个项目中的所有应用程序定义 IIS 配置并创建版本。
  • Installshield 项目有一个对象模型,您可以在其中基本上自动化构建脚本中的每项任务,这些项目也是简单的 xml 文件,如果需要,您还可以在自动化脚本中进行修改
  • 开发人员可以单独修改更新 WixXML 项目,您可以通过构建脚本将这些项目构建作为合并模块添加到您的 installshield 项目中,并对 installshield 项目 xml 进行一些小调整(至少在 2011 版本中,这部分不受 installshield 支持,但是可以做到)
  • 您甚至不需要为遵循相同模式的 Web 应用程序组修改 Visual Studio 项目,也不需要手动修改 installshield 项目来为这些情况添加新的 Web 应用程序,您可以为新的 Web 应用程序创建包而无需干预设置一次基于根 VS 构建输出的 installshield 项目自动化任务的构建脚本
于 2015-02-13T20:09:44.220 回答