这是在尝试解决自托管设计器中的同一问题时发现的场景。创建一个包含类型的库项目。我的就是这个。
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"
对于自托管设计师,我一直在寻找这个问题的许多变体,并尝试了各种方法将库组件加载到设计器中,但没有任何乐趣。
有关如何纠正此问题的任何建议?
答案 0 :(得分:0)
WF4拥有自己的加载程序集的方式,并不总是与标准.NET框架完全相同。罗恩·雅各布斯(Ron Jacobs)就此发表了一些有趣的帖子,请参阅here作为开始。
您没有提及如何将工作流程实际加载到WorkflowDesigner中。有几种方法可以做到这一点。使用ActivityXamlServices.CreateBuilderReader()时,您可以使用XamlSchemaContext指定所需的程序集。这应该可以让你加载工作流程。