Обычно это делается с помощью чего-то похожего на
Dim dicParamValues As IDictionary(Of String, Object) = WorkflowHelpers.DeserializeProcessParameters(pStrProcParam)
'dicParamValues(<ProcessID>) = <Value>
'...
WorkflowHelpers.SerializeProcessParameters(dicParamValues)
Но обычные параметры процесса в BuildDefinition не имели параметров, которые мне нужно было изменить. Я нашел их в BuildDefinition.Process.Parameters, но это не файл, который можно проанализировать в словаре с помощью WorkFlowHelpers, вместо этого он десериализован в Activity.
Так как есть способ превратить Деятельности в список параметров словаря, я попробовал этот код
Dim actParamValues As Activity = WorkflowHelpers.DeserializeWorkflow(pStrProcParam)
Dim dicParamValues As IDictionary(Of String, Object) = WorkflowHelpers.GetProcessParameters(actParamValues)
, который, я думаю, будет работать, но он возвращает processParameters вместо объектов, и я не уверен, как их изменить или обойти проблему.
Я уже спрашивал на форумах msdn TFS, но пока не получил ответа. Буду признателен за любую помощь или подсказки.
EDIT:
Похоже, я идиот. Проблема началась, когда я не смог установить значения, которых там не было ... ну, получается, я могу добавить их в список словарей, а затем установить новый список без каких-либо проблем (пока).
Правильный код
Dim dicParamValues As IDictionary(Of String, Object) = WorkflowHelpers.DeserializeProcessParameters(pStrProcParamShort)
dicParamValues.Add("PublishToDevelopment", pBolDev)
dicParamValues.Add("PublishToMainOrDemo", pBolDemo)
dicParamValues.Add("PublishToLiveOrReleaseLocation", pBolRelease)
Return WorkflowHelpers.SerializeProcessParameters(dicParamValues)
Я постараюсь следить за этим на случай, если у кого-то еще возникнет подобная проблема.