1

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

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

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 构建解决方案任务中设置配置,如下所示:

在此处输入图像描述

4

1 回答 1

2

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

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

1) 转换可以同时参与构建和发布吗?

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

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

更新

BuildConfiguration 变量在 TFS 2017 中有所不同,它位于MSBuild 任务中!现在根据 MSBuild 任务配置设置应用转换。

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

通常我们将构建和发布分开进行部署,因为它易于配置多个环境并且易于调试问题。您绝对可以仅在构建中执行此操作,但过程臃肿。您可以参考本教程:使用 Team Foundation Server/Services vNext Builds 构建和部署 Azure Web 应用程序。

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

于 2017-11-15T09:33:11.850 回答