【问题标题】:Can MSBuild package and deploy via MSDeploy to IIS 6 in the one command?MSBuild 可以在一个命令中通过 MSDeploy 打包和部署到 IIS 6 吗?
【发布时间】:2011-05-05 10:55:57
【问题描述】:

这是我想做的:

  1. 构建一个以“包”为目标的现有 .csproj
  2. 使用 MSDeploy 将包发布到 IIS 6 服务器

这是针对我尝试一步配置的 TeamCity 构建和发布。我可以创建一个自定义构建文件,但我试图在不向应用添加任何额外配置的情况下解决这个问题。

有很多关于 MSBuild 参数的示例,它们可以通过 WMSVC 进行此发布 - here's a great one - 但这不适用于 IIS 6。当依赖于MsDepSvc?这甚至可能吗,还是我留下了自定义构建脚本或包构建,然后是发布构建?

【问题讨论】:

    标签: msbuild teamcity msdeploy


    【解决方案1】:

    您可以修改现有的 .csproj 文件以添加所需的任何其他目标(它只是一个 MSBuild 文件),并且可以通过不同的 MSDeploy 提供程序(webServer60metaKeycontentPath 发布到 IIS6 服务器通过共享)。

    虽然这可以通过在项目的 MSBuild 中添加目标来实现,但我建议您将这两个活动拆分为两个单独的目标。通过将它们分成两个单独的目标,您仍然可以将它们一起调用msbuild /t:Package;Deploy,但您也可以单独调用它们。

    这将允许您创建部署包并让 TeamCity 将其作为构建的工件包含在内。然后,您可以从 TeamCity 下载此包并将其独立部署到任何服务器,即使您自动部署它也是如此。如果 TeamCity 还创建了您的发布版本,那么您就知道您的生产部署了

    【讨论】:

    • 在一个完美的世界中,我很想在不修改 csproj 的情况下执行此操作,但是您关于仅为 Deploy 创建一个目标然后在命令行上的 package 后调用它的观点非常简洁。我以前有一个构建文件,其中在 DependsOnTargets 属性中引用了多个目标,因此该包可作为人工制品使用,但您的方法更简洁一些,只要项目中没有多个网站需要从单个构建操作。
    猜你喜欢
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多