msbuild - 将多个解决方案/项目转换为单个 msdeploy 包的建议?

标签 msbuild continuous-integration teamcity msdeploy webdeploy

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

我可以看到几种可能在这种情况下可行的可能性,但很想听听任何成功或失败的人的意见:

  • 一个充满包和 deploy.cmd 脚本的文件夹,带有一个“主脚本”,它将依次调用每个单独的应用程序脚本并将该应用程序部署到目标服务器。
  • 使用临时服务器,我们使用生产配置从 TeamCity 部署每个包的最新版本,然后使用 msdeploy 将该服务器捕获到单个巨大的 msdeploy ZIP 包中,然后将其作为单个 msdeploy 步骤部署到每个生产服务器上。
  • 创建一个单一的、巨大的 Visual Studio 解决方案,引用我们代码库中的每个项目(也许通过 svn:externals?),编译和交叉引用它们,因此支持使用单个 msbuild 作业来创建包含我们整个代码库的巨大单体包,从源代码管理中的最新版本构建并针对目标环境进行配置。

  • 我学过Troy Hunt's excellent "You're Deploying it Wrong" series , 和 Scott Hanselman's "Web Deployment Made Awesome"文章,但我认为我正在寻找超越这些方法中的任何一种的方法,该方法将多个项目和应用程序结合在一起,而不必一步一步地从源代码构建它们 - 有什么想法吗?

    最佳答案

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

    我们使用 Team Foundation Server 和 MSBuild做我们的构建。这非常简单,但确实需要一些工作才能正确设置与我们拥有的一样多的项目和解决方案。

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

  • InstallShield - 不够灵活。
  • 编写我们自己的 C# 安装 - WIX 已经考虑了我们的一切
    试图完成,为什么要重新发明轮子?
  • 只是说要解决所有问题并手动安装 - 2 或
    3 个月的 WIX 和 MSBuild 开发时间很容易得到
    去年我们花在手动处理事情上的时间。

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

    关于msbuild - 将多个解决方案/项目转换为单个 msdeploy 包的建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12976923/

    相关文章:

    c# - 有没有办法直接受益于 Roslyn C# 编译器的 AST?

    python-3.x - 没有名为 'dlib' 的模块

    docker - Bitbucket Pipelines - 如何在多个步骤中使用同一个 Docker 容器?

    error-handling - 使用蛋糕构建脚本时如何在 TeamCity 中显示构建错误消息

    ssh - 通过SSH的TeamCity 6.x和Mercurial(在Windows上)

    visual-studio-2010 - MSBuild 可以从生成的 SetParameters.xml 中排除 "Hidden"Web Deploy 参数吗?

    c# - vshost.exe 在 Visual Studio 2015 中未正确终止

    batch-file - 抑制 windows 命令行 PAUSE 命令

    yaml - 如何从主 github 操作 yaml 文件引用另一个 yml 文件?

    TeamCity 和 CTest 测试结果