【问题标题】:What TFS 2017 build task applies web.config transforms during TFS builds?什么 TFS 2017 构建任务在 TFS 构建期间应用 web.config 转换?
【发布时间】:2019-11-29 14:58:28
【问题描述】:

更改了一些原始信息,以使帖子在发现后更加关注真正的问题。

这些是当前环境的一些细节。我列出这些只是因为在其他帖子中提出了问题,以确定在当前环境中哪些是有效的,哪些是无效的:

Upon check-in TFS 2017 successfully builds a web project on the build agent.
A VS 2017 publish profile can manually transform the project properly
The build machine artifact location includes both the transform and profile files

神器位置如下图:

我在微软的 VS 网站、SO 和其他论坛上对此进行了深入研究,但是有很多不同的答案,其中许多是针对旧版本的,我无法将其拼凑起来。因此,我有几个子问题。

1) 可以在构建和发布中进行转换吗?。我读到转换是在发布过程中应用的,而不是在构建过程中,这让我想知道是否有可能在构建过程中做到这一点。但是当我探索发布时,我看到所有相同的任务都可以在 Build 中使用,这表明我可以在 Build 或 Release 中使用转换进行发布。对吗?

2) TFS 2017 是否需要进行大量特殊处理才能使用转换文件?一些帖子指示编辑 .proj 文件。我想在进行这种详细操作之前得到确认,尤其是考虑到 TFS 2017 的改进。

以下信息是名为“confPanner-CI”的当前构建定义的状态。阴影 PS 脚本已成功用于上传到托管位置以测试整个过程,但这对于需要应用转换的手头任务来说是不够的:

还为 powershell 脚本创建临时位置的完整 MSBuild 参数是:

/p:DeployOnBuild=True /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl=c:\ConfPlnrWeb

如果我要添加发布任务,我会看到 Publish Build Artifacts 任务:

但如下所示的设置似乎都与变换无关:

最重要的问题是:如何配置构建,以便上传的 web 项目应用正确的 web 转换?

更新:在下面的答案之后添加的以下内容导致至少有一个地方可以在构建期间应用 VS 转换,并且可能也是一个版本。

在 MSBuild Build 解决方案任务中设置如下所示的配置:

【问题讨论】:

  • 一个主题中有很多问题。也许您应该在单独的帖子中划分转换和发布部分?对于发布部分,您应该至少提供一些您想要在哪里发布的详细信息。

标签: msbuild visual-studio-2017 web.config-transform build-agent


【解决方案1】:

发布构建工件任务用于发布相关工件(“a”工作目录包含构建结束时上传的工件(也称为“drop”))到 Visual Studio Team Services/TFS 或文件共享。

通常它应该是一个包并用于部署任务,例如Deploy: WinRM - IIS Web App DeploymentAzure App Service Deployment以实现部署。

1) 转换可以同时用于构建和发布吗?

是的,您也可以使用构建部署任务在构建管道中执行此操作。您需要在发布构建工件任务之后添加该任务。

2) TFS 2017 是否需要大量特殊处理才能使用转换文件?

更新

TFS 2017 中的 BuildConfiguration 变量不同,它在里面 MSBuild 任务!变换现在根据 到 MSBuild 任务配置设置。

编辑.proj 文件是一种进行转换的方法。如果您不需要更改转换,它将在构建期间自动执行。您还可以使用一些 3-rd 方任务/扩展来进行额外的转换,例如:XDT Transform

通常我们将构建和发布分开进行部署,因为很容易配置多个环境并且容易调试问题。您绝对可以仅在构建中执行此操作,但过程臃肿。你可以参考这个教程:Build and Deploy Azure Web Apps using Team Foundation Server/Services vNext Builds.

对于单独的构建和发布解决方案,您可以查看此博客:Using web.config transforms and Release Manager – TFS 2017/Team Services edition

【讨论】:

  • 今天将研究您的链接;跟进:1) 你说使用build deploy task。该任务在 TFS 中的确切名称是什么,以便我首先熟悉在构建代理上调用转换?但我会根据你的建议开始使用Release。请帮助我理解这个问题:2) 对于我在Release 中创建的每个环境,我是否只是在创建与创建单个Build 时完全相同的过程?作为参考,我当前的托管环境非常简单,我只是存放网站文件的网站位置,但这些文件必须首先进行转换。
  • 嗨@Alan 1)您可以在构建和发布中使用部署任务,有多个任务,例如部署:WinRM - IIS Web 应用程序部署或 Azure 应用程序服务部署。 2)对于发布,您不必再使用构建任务,您应该使用其他一些任务,例如替换令牌(如果有),部署任务。对于环境,您可以使用相同的任务,或者为每个任务进行自定义。整个过程建议参考上面的博客:blogs.msdn.microsoft.com/alming/2017/02/09/…
  • 您的链接绝对帮助了我,并且回答了一个简单但非常重要的问题:How do we apply VS transform files during a TFS Build?。我必须一遍又一遍地阅读 Silva 的文章才能最终看到 TFS 2015/17 之间的区别。 BuildConfiguration 变量在 TFS 2017 中有所不同,它位于 MSBuild task 内部 - 我错过了!现在根据MSBuild 任务Configuration 设置应用转换。还有更多的事情要做。更改帖子标题以更好地匹配实际问题。您可能会在答案中添加应用转换的 MSBuild 任务。
猜你喜欢
  • 2018-04-01
  • 1970-01-01
  • 2018-11-21
  • 2018-02-16
  • 2019-01-15
  • 1970-01-01
  • 2017-07-30
  • 2018-07-24
相关资源
最近更新 更多