我正在尝试使用 TFS 2013 API 创建新的构建定义。我必须引用的流程模板包含几个自定义活动和参数。创建构建定义时,一些属性值需要动态更新。所以我尝试使用以下代码反序列化过程参数:
IDictionary<string, object> processParams = WorkflowHelpers.DeserializeProcessParameters(defaultTemplate.Parameters);
此代码总是抛出以下异常:
An unhandled exception of type 'System.Xaml.XamlObjectWriterException' occurred in System.Xaml.dll
Additional information: No matching constructor found on type 'System.Activities.Activity'. You can use the Arguments or FactoryMethod directives to construct this type.
这真的很令人沮丧,我还无法摆脱这个错误。
我还尝试使用以下代码反序列化过程参数:
using (StringReader stringReader = new StringReader(parameterValues))
{
object obj = XamlServices.Load(
ActivityXamlServices.CreateReader(
new XamlXmlReader((TextReader)stringReader, new XamlXmlReaderSettings { LocalAssembly = System.Reflection.Assembly.GetExecutingAssembly() }
)));
}
这有效,但是当我使用它再次序列化它时XamlServices.Save(XamlWriter writer, object instance)
方法,参数已更改,这与构建工作流程不兼容。
那么,如何在这里更新构建过程参数呢?可以吗WorkflowHelpers
类可以用其他方式使用吗?或者是否有任何其他方法来更新流程参数,以便它反映在构建定义中。非常感谢任何帮助。
现在效果很好。
以下是新代码:
IDictionary<string, object> processParams = WorkflowHelpers.DeserializeProcessParameters(defaultTemplate.ProcessParameters);
代替defaultTemplate.Parameters
,我需要通过defaultTemplate.ProcessParameters
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)