【问题标题】:Recommendations for turning multiple solutions/projects into a single msdeploy package?将多个解决方案/项目转换为单个 msdeploy 包的建议?
【发布时间】:2012-10-19 14:55:42
【问题描述】:

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

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

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

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

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

我研究了 Troy Hunt's excellent "You're Deploying it Wrong" seriesScott Hanselman's "Web Deployment Made Awesome" 文章,但我认为我正在寻找一种超越这两种方法的方法,它可以整合多个项目和应用程序,而不必在一个步骤中从源代码构建它们 -有什么想法吗?

【问题讨论】:

    标签: msbuild continuous-integration teamcity msdeploy webdeploy


    【解决方案1】:

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

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

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

    • InstallShield - 不够灵活。
    • 编写我们自己的 C# 安装程序 - WIX 已经想到了我们的一切 都在努力完成,为什么要重新发明轮子?
    • 只是说要解决所有问题并手动安装 - 2 或 在 WIX 和 MSBuild 中 3 个月的开发时间很容易支付 去年我们手动做事的时间。

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

    【讨论】:

      【解决方案2】:

      我会选择 Installshield。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-09
        • 1970-01-01
        • 2022-07-03
        • 2013-07-03
        • 1970-01-01
        • 2011-05-10
        • 1970-01-01
        相关资源
        最近更新 更多