什么 TFS 2017 构建任务在 TFS 构建期间应用 web.config 转换?

What TFS 2017 build task applies web.config transforms during TFS builds?

更改了一些原始信息,以便 post 在发现问题后更加关注实际问题。

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

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 和其他论坛上对此进行了深入研究,但是有很多不同的答案,其中许多是针对旧版本的,我一直无法将其拼凑起来。结果我有几个 sub-questions.

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

2) TFS 2017 是否需要大量特殊处理才能使用转换文件? 一些 post 指示编辑 .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 任务:

但是如下所示的 none 设置似乎与转换有关:

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

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

在 MSBuild 构建解决方案任务中设置配置,如下所示:

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

通常应该是一个包,用于部署任务,如Deploy: WinRM - IIS Web App Deployment or Azure App Service Deployment来实现部署。

1) 可以在构建和发布中进行转换吗?

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

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

update

The BuildConfiguration variable is different in TFS 2017, it's inside the MSBuild task! Transforms are now applied according to the MSBuild task Configuration setting.

编辑.proj文件是进行转换的一种方法。如果您不需要更改转换,它将在 build.You 期间自动执行也可以使用一些第 3 方 task/extension 进行额外转换,例如: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