gpt4 book ai didi

c# - 如何在 TFS 中反序列化和序列化构建过程参数

转载 作者:行者123 更新时间:2023-11-30 22:07:53 25 4
gpt4 key购买 nike

我正在尝试使用 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 类能否以其他方式使用?或者是否有任何其他方法来更新流程参数,以便它反射(reflect)在构建定义中。非常感谢任何帮助。

最佳答案

现在一切正常。以下是新代码:

IDictionary<string, object> processParams = WorkflowHelpers.DeserializeProcessParameters(defaultTemplate.ProcessParameters);

我需要传递 defaultTemplate.ProcessParameters 而不是 defaultTemplate.Parameters

关于c# - 如何在 TFS 中反序列化和序列化构建过程参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22654096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com