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

Msbuild 什么TFS 2017构建任务在TFS构建期间应用web.config转换?,msbuild,visual-studio-2017,web.config-transform,build-agent,Msbuild,Visual Studio 2017,Web.config Transform,Build Agent,一些原始信息被更改,以使帖子在被发现后更加关注真实问题 以下是当前环境的一些细节。我之所以列出这些问题,只是因为在其他帖子中提出了一些问题,以确定在当前环境中哪些是有效的,哪些不是有效的: 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 buil

一些原始信息被更改,以使帖子在被发现后更加关注真实问题

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

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

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

以下信息是名为“confPanner CI”的当前生成定义的状态。shaded PS脚本已成功用于上载到托管位置以测试整个过程,但这不足以用于需要应用转换的手头任务:

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

/p:DeployOnBuild=True /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl=c:\ConfPlnrWeb
如果要添加发布任务,我会看到发布构建工件任务:

但下面显示的设置似乎都与变换无关:

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

更新:在下面的答案之后添加了以下内容,至少有一个地方可以在构建过程中应用VS转换,大概也可以在发布过程中应用VS转换

在MSBuild生成解决方案任务内,按如下所示设置配置:


发布生成工件任务用于将相关工件(“a”工作目录包含在生成结束时上载的工件(也称为“放置””)发布到Visual Studio Team Services/TFS或文件共享

通常,它应该是一个包,并用于部署任务中,例如或用于实现部署

1) 转换能否同时参与构建和发布

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

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

更新

BuildConfiguration变量在TFS 2017中不同,它在内部 MSBuild任务!变换现在根据需要应用 到MSBuild任务配置设置

编辑
.proj
文件是执行转换的一种方法。如果您不需要更改转换,它将在生成过程中自动执行。您还可以使用一些第三方任务/扩展进行额外转换,例如:

通常我们将部署的构建和发布分开,因为很容易配置多个环境,也很容易调试问题。您肯定只能在构建中完成这项工作,但过程过于臃肿。您可以参考本教程:


对于一个单独的构建和发布解决方案,您可以看看这个博客:

在一个主题中有很多问题。也许你应该在不同的帖子中区分转换和发布部分?对于“发布”部分,您应至少提供一些详细信息,说明您希望在何处发布内容。今天将研究您的链接;后续操作:
1)
您说过使用
构建部署任务
。该任务在TFS中的确切名称是什么,以便我首先熟悉在构建代理上调用转换?但根据你的建议,我将开始使用
Release
。请帮助我理解这个问题:
2)
对于我在
发行版
中创建的每个环境,我只是创建了与创建单个
构建时完全相同的过程吗?作为参考,我当前的托管环境非常简单,我只是在一个web位置存放网站文件,但这些文件必须首先转换。您好@Alan 1)您可以在构建和发布中使用部署任务,有多个任务,例如部署:WinRM-IIS web App部署或Azure App Service部署。2) 对于发布版,您不必再使用构建任务,您应该使用一些其他任务,例如替换令牌(如果有)、部署任务。对于环境,您可以使用相同的任务,也可以为每个任务进行自定义。对于整个过程,建议您参考上面的博客:您的链接绝对帮助了我&回答了一个简单但非常重要的问题:
我们如何在TFS构建期间应用VS转换文件?
。我不得不一遍又一遍地阅读席尔瓦的文章,终于看到了2015/17年TFS之间的区别。TFS 2017中的
BuildConfiguration
变量不同,它在
MSBuild任务中
-我错过了它!现在根据
MSBuild
task
Configuration
设置应用转换。还有很多事情要做。更改文章标题以更好地匹配真实问题。您可以在答案中添加应用转换的MSBuild任务。