如何根据构建配置将DeployIisAppPath设置为变量?

时间:2017-08-07 13:32:51

标签: msbuild

我想为我的项目创建一个构建,用于处理为测试和发布环境创建工件。我坚持如何根据构建配置使DeployIisAppPath变量可配置。例如,对于测试版本,我想将路径设置为“默认网站/测试文件夹”,但在生产(发布)中,我需要它是“其他网站/不同文件夹”。此值通常通过MSBuild参数传递到Visual Studio Team Services构建定义。我可以用变量做这个,如果有,怎么做?这些值可以在项目中设置吗?

我在网上找不到任何可以帮助我弄清楚如何做到这一点。

1 个答案:

答案 0 :(得分:0)

也许我有解决问题的方法。

可以在Visual Studio中定义发布配置文件以发布(WCF / Web服务)项目。

以前定义应该用于为每个环境构建的构建配置,例如: DEV,TEST,QA,PROD。在这些中你可以定义不同的输出目录和最好的,你可以为它们每个生成一个自己的web.config转换文件。如果您想在不同的阶段使用不同的数据库服务器连接字符串,这是非常重要的,仅作为示例。

创建构建配置后,只需在(Web服务)项目上打开上下文菜单,然后选择Publish...,您应该设置如下所示的发布配置文件:

  1. 使用目标环境/阶段作为名称(与Build Configuration相同) 有意义的命名)
  2. 发布方法: Web部署包
  3. 包裹位置:您可以使用发布管道获取它的地方
  4. 网站名称:"默认网站/测试文件夹" (适用于您的测试环境)|| "其他一些网站/不同文件夹" (为你的产品 环境)
  5. 设置之前已设置且适用于目标环境的构建配置
  6. 上述各点(以相同顺序)的示例:

    1. 姓名:TEST
    2. 发布方法:Web部署包
    3. 包位置:.... \ BuildDrop \ TEST \ My.WebService.zip)
    4. 网站名称:"默认网站/ test_service"
    5. 配置:TEST(如前所述)
    6. 您现在不必发布,但如果您愿意,您可以这样做。您将收到一个带有Web服务的zip文件,以及旁边的一些其他文件,这些文件是MSDeploy.exe在您的发布管道中进行部署所必需的。

      之后,您应该切换到TFS中的构建管道。你必须为你的舞台创建一个变量。因此,您必须在构建定义(edit Build definition > Options > Multi-configuration > enable it, add as multipliers "BuildConfiguration")的选项中启用多配置。 在构建定义的编辑模式中,您必须添加一个名为BuildConfiguration的变量,其值为"DEV, TEST, QA, PROD"。此变量现在可用于构建任务。只需将其添加到配置文本框中的构建任务$(BuildConfiguration)即可。 现在,对于添加到由'分隔的变量的每个构建配置,'将执行构建过程。 要创建artefact(上面的zip文件),您必须添加一些MSBuild参数,此时您将使用与您的构建配置具有相同名称的发布配置文件。这就是诀窍! :) 可以遵循参数列表:

      /p:DeployOnBuild=true /p:PublishProfile=$(BuildConfiguration)
      

      此参数列表将根据每个构建配置/发布配置文件为发布生成所需的工件。现在,您可以为每个构建配置,从而为您的环境提供单独的配置,例如您提到的不同DeployIisAppPath。

      要在发布定义中使用工件,您必须在构建定义中添加Publish Artifact(在TFS 2017中)任务。通过从定义的Package位置执行批处理文件,可以使用Batch任务自动发布Web服务。示例配置为:

      Path: $(System.DefaultWorkingDirectory)/<YourBuildDefinitionName>/<YourTargetSatgeName>/My.WebService.cmd
      Arguments: /Y /M:<TargetMachineName>
      

      我希望我能帮助你。如果您有任何问题或某些要点/说明不清楚,请告诉我......