TFS Build 2.0 C#,如何向 build/Pass Msbuild args 添加变量

标签 tfs build tfs-2015

我正在尝试将参数传递给 MSBuild 2.0。经过研究,似乎我需要使用变量来执行此操作,但我无法弄清楚如何将其合并到下面的队列请求中。我试过参数,但这似乎不起作用。这是我想告诉 MSBuild @"/p:OctoPackPackageVersion="+ releaseNumber.这适用于使用 IBuildRequest.ProcessParameters 的 XAML 构建。

var buildClient = new BuildHttpClient(new Uri(collectionURL), new 
VssCredentials(true));
var res = await buildClient.QueueBuildAsync(new Build
            {
                Definition = new DefinitionReference
                {
                    Id = targetBuild.Id
                },
                Project = targetBuild.Project,
                SourceVersion = ChangeSetNumber,
                Parameters = buildArg

            });
            return res.Id.ToString();

最佳答案

vNext 构建系统与传统 XAML 构建系统不同,在构建构建队列时,您不能直接将变量传递给构建定义中的构建任务。您使用的代码在将构建排队之前更新了构建定义,这意味着如果变量更改,构建定义可能会不断更改。

解决方法是在构建定义中添加一个变量,例如“var1”,然后将此变量用作 MSBuild 任务的参数:
enter image description here
有了这个,您将能够在排队构建时将值传递给“var1”变量,而无需更新构建定义。

Build build = new Build();
build.Parameters = "{\"var1\":\"/p:OctoPackPackageVersion=version2\"}";

// OR using Newtonsoft.Json.JsonConvert
var dict = new Dictionary<string, string>{{"var1", "/p:OctoPackPackageVersion=version2"}};
build.Parameters = JsonConvert.SerializeObject(dict)

关于TFS Build 2.0 C#,如何向 build/Pass Msbuild args 添加变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44784909/

相关文章:

tfs - 如何阻止团队创建新的基于 XAML 的构建定义

visual-studio-2010 - 使用 Team Explorer 2010 连接到 TFS 2008 Server

visual-studio - 如何衡量开发人员构建时间

tfs-2015 - 如何获取当前/事件 TFS 用户列表?

c# - TFS 2012 Team Build 获取解决方案配置

powershell - 我如何从TeamCity构建中运行的Powershell脚本收到有意义的错误消息?

Android gradle 构建和支持库

powershell - TFS 2015.3定制构建步骤未将变量发送到脚本

TFS 2010 分支可视化