这是一个错误还是我错过了WF设计师的东西

时间:2012-11-02 12:11:55

标签: workflow-foundation-4 activitydesigner

这是在尝试解决自托管设计器中的同一问题时发现的场景。创建一个包含类型的库项目。我的就是这个。

namespace RaceEventLibrary
{
    public class Registration
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string EventName { get; set; }
    }
}

现在创建一个Workflow 4.5控制台应用程序(或服务,它似乎并不重要)。参考图书馆项目。在设计器上放置一个序列,然后在我的案例中创建一个这种库类型的InArgument。一切都很好,设计师很高兴。

接下来创建另一个相同的项目,引用相同的库。现在只需从第一个项目中打开xaml文件。轰,它找不到类型。

System.Xaml.XamlException:'属性'registration'的类型'InArgument(r:Registration)'无法解析。'

这在xaml中是:

    <x:Members>
        <x:Property Name="registration" Type="InArgument(r:Registration)" />
    </x:Members>

preceded by 
    xmlns:r="clr-namespace:RaceEventLibrary;assembly=RaceEventLibrary"

对于自托管设计师,我一直在寻找这个问题的许多变体,并尝试了各种方法将库组件加载到设计器中,但没有任何乐趣。

有关如何纠正此问题的任何建议?

1 个答案:

答案 0 :(得分:0)

WF4拥有自己的加载程序集的方式,并不总是与标准.NET框架完全相同。罗恩·雅各布斯(Ron Jacobs)就此发表了一些有趣的帖子,请参阅here作为开始。

您没有提及如何将工作流程实际加载到WorkflowDesigner中。有几种方法可以做到这一点。使用ActivityXamlServices.CreateBuilderReader()时,您可以使用XamlSchemaContext指定所需的程序集。这应该可以让你加载工作流程。