2013-08-26 31 views
0

我正在构建控制器或协助管理构建和部署。在这个过程中,我需要指定构建的变更集编号。 在构建配置中,手动执行此操作时,它与在“过程”|“设置”中设置“获取版本”参数相同。高级。无法获得指定的更改集

当我在UI中设置此值时,可以在获取构建定义时对其进行修改。我所做的修改导致构建按预期工作。

当Get Version空白时,我重复测试,通过代码加载参数,我总是得到最新版本,好像变更集没有被指定。

这里是我的代码:

foreach (IBuildDefinition def in BuildDefinitions.SelectedItems) 
{ 
    var process = WorkflowHelpers.DeserializeProcessParameters(def.ProcessParameters);      
    process.Add("GetVersion", "C1111"); 
    // process["GetVersion"] = "C1133"; 
    def.ProcessParameters = WorkflowHelpers.SerializeProcessParameters(process); 
    IQueuedBuild result = buildServer.QueueBuild(def); 
} 

看来,构建定义可能包含两种情况之间不同的值,但我无法找到它。

我错过了什么?

+0

此代码在哪里运行?在构建过程中还是在您自己的过程中? – DaveShaw

+0

这是我自己的过程,在客户端计算机上运行。 – JamieMeyer

回答

0

的这个代替:

var request = def.CreateBuildRequest(); 
request.GetOption = GetOption.Custom; 
request.CustomGetVersion = "C1234"; 
server.QueueBuild(request); 

的文档IBuildServer.QueueBuild(IBuildDefinition)说:

队列与所有默认选项 指定构建定义构建。

我猜测它不使用大多数自定义传入的参数。

其实,思考,设置PARAMS上的要求是有道理的,这是你的构建请求,你没有改变定义。

+0

我测试了这个代码,并没有产生正确的变更集。它执行构建,并交付最近的变更集。 – JamieMeyer

+1

戴夫 - 我读了你的回复5次,并根据你的回答计算出答案。显然,我没有逐字地尝试你的代码,我仍然在排队,而不是要求。谢谢。 – JamieMeyer

+0

@JamieMeyer - 我不知道还有什么可以尝试的,我没有时间去测试这个,但是我从逆向工程TFSBuild.exe得到了它) – DaveShaw