C# 在C中使用TFS API修改生成过程参数#

C# 在C中使用TFS API修改生成过程参数#,c#,powershell,tfs,C#,Powershell,Tfs,我试图通过使用TFSAPI的C#程序设置构建过程参数。此BuildDefinition是一个BuildDeployTest工作流(稍微修改LabDefaultTemplate.11.xaml)。我可以通过以下代码更改所有实验室流程设置(实验室工作流参数): System.Collections.Generic.IDictionary<string, object> myDictionary = Microsoft.TeamFoundation.Build.Workflow.Workf

我试图通过使用TFSAPI的C#程序设置构建过程参数。此BuildDefinition是一个BuildDeployTest工作流(稍微修改LabDefaultTemplate.11.xaml)。我可以通过以下代码更改所有实验室流程设置(实验室工作流参数):

System.Collections.Generic.IDictionary<string, object> myDictionary = Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers.DeserializeProcessParameters(buildDefinition.ProcessParameters);
foreach (var Parameter in myDictionary)
{
    if (Parameter.Key == "LabWorkflowParameters")
    {
        // copy the entry
        Microsoft.TeamFoundation.Lab.Workflow.Activities.LabWorkflowDetails myCopy = Parameter.Value as Microsoft.TeamFoundation.Lab.Workflow.Activities.LabWorkflowDetails;
        foreach(TestAgentListItem testAgent in listOfTestAgents)
        {
            if(testAgent.Checked == true)
            {
                myCopy.EnvironmentDetails.LabEnvironmentName = testAgent.TestAgentName;
                myCopy.EnvironmentDetails.LabEnvironmentUri = new Uri(testAgent.LabEnvironmentUri);
                break;
            }

        }

        myDictionary[Parameter.Key] = myCopy;
    }
    break;
}

request.ProcessParameters = Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers.SerializeProcessParameters(myDictionary);

// trigger a new Build
buildServer.QueueBuild(request);
但是我怎么能用C#做到这一点呢


关于

如果您已经分配了值,它将不会更改

请尝试以下内容:

string argumentName = "TestDirectory";
var process = Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers.DeserializeProcessParameters(BuildDefinition.ProcessParameters);

if (process.ContainsKey(argumentName))                             
{
    process.Remove(argumentName);
    process.Add(argumentName, attributeValue);
    BuildDefinition.ProcessParameters = WorkflowHelpers.SerializeProcessParameters(process);
    BuildDefinition.Save();
}

如果已经指定了值,则不会更改

请尝试以下内容:

string argumentName = "TestDirectory";
var process = Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers.DeserializeProcessParameters(BuildDefinition.ProcessParameters);

if (process.ContainsKey(argumentName))                             
{
    process.Remove(argumentName);
    process.Add(argumentName, attributeValue);
    BuildDefinition.ProcessParameters = WorkflowHelpers.SerializeProcessParameters(process);
    BuildDefinition.Save();
}