我正在尝试将参数传递给 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 任务的参数:
有了这个,您将能够在排队构建时将值传递给“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/