C# WorkFoundation Services服务在工作流基础中给我一个XAMROBJECWTrrExtRebug异常
对于一个简单的原型,我必须显示一个工作流文件,并显示我们实际执行的步骤 我在这里找到了一个样本: 这几乎满足了我的需要 在此示例中,所有操作从不等待另一个操作。所以我给自己创造了一些非常虚拟的活动:C# WorkFoundation Services服务在工作流基础中给我一个XAMROBJECWTrrExtRebug异常,c#,.net,workflow-foundation,workflow-foundation-4,workflow-activity,C#,.net,Workflow Foundation,Workflow Foundation 4,Workflow Activity,对于一个简单的原型,我必须显示一个工作流文件,并显示我们实际执行的步骤 我在这里找到了一个样本: 这几乎满足了我的需要 在此示例中,所有操作从不等待另一个操作。所以我给自己创造了一些非常虚拟的活动: public class WaitForNextCall :NativeActivity { public const String WaitBookmark = "WaitingStep"; #region Overrides of NativeActivity
public class WaitForNextCall :NativeActivity
{
public const String WaitBookmark = "WaitingStep";
#region Overrides of NativeActivity
/// <summary>
/// When implemented in a derived class, runs the activity’s execution logic.
/// </summary>
/// <param name="context">The execution context in which the activity executes.</param>
protected override void Execute(NativeActivityContext context)
{
context.CreateBookmark(WaitBookmark);
}
protected override bool CanInduceIdle
{
get
{
return true;
}
}
#endregion
}
唯一的问题是,我在工作流设计器中只看到“序列”元素
因此,我创建了一个xaml文件,该文件精确地描述了相同的内容,并按如下方式加载:
return ActivityXamlServices.Load("Workflows/WorkflowSample.xaml") as DynamicActivity;
但后来我得到了一个例外:
System.Xaml.XamlObjectWriterException occurred
Message=Impossible de créer le type inconnu '{clr-MyTestNameSpace.UserInterface.WorkflowItems}WaitForNextCall'.
Source=System.Xaml
LineNumber=0
LinePosition=0
StackTrace:
à System.Xaml.XamlObjectWriter.WriteStartObject(XamlType xamlType)
à System.Xaml.XamlWriter.WriteNode(XamlReader reader)
[...]
我仔细检查了文件是否存在(如果没有正确指定文件,则可能会出现另一条错误消息)。但是它找不到我的“WaitFornextCall”类,它只在下面几行使用
我有点失望,我试图理解工作流基础是如何工作的,但现在有点困难:(
欢迎提供任何建议
编辑:
我尝试读取该文件,我的构造函数中没有任何异常,但我不知道为什么,我正在使用的一些库(ActiPro)在加载后似乎不再工作:
XamlReader reader = new XamlXmlReader("Workflows/WorkflowSample.xaml", new XamlXmlReaderSettings(){LocalAssembly = System.Reflection.Assembly.GetExecutingAssembly()});
return ActivityXamlServices.Load(reader);
“Workflows/WorkflowSample.xaml”可能是根据以前版本的代码构建的
删除它,重建解决方案,然后重新创建它。我找到了解决方案 是啊,啊,啊,啊,啊 事实上,问题在于我的工作流与我的自定义活动位于同一个项目中。然后visual studio没有指明设计器可以在哪个程序集中找到此活动,但当您读取文件时,这是一个独立的读取器,它不知道您当前的程序集
因此,有两个不同的项目,一个包含工作流,一个包含活动,然后我的工作流指定可以在其中找到图表的程序集。这样,我可以轻松地执行WorkflowDesigner.Load(“myWorkflowHere.xaml”);没有任何问题!没有,我创建了它,大约是在我创建了应该加载sample@J4N:您是否删除了它,重新生成了它,然后重新创建了它?这种错误总是由假设引起的。@J4N:问题是序列化程序找不到类型
MyTestNameSpace.UserInterface.WorkflowItems.WaitForNextCall
为什么?它是否存在?它是否在运行时动态加载?它是否不可序列化?或者该异常的InnerException中的问题是否存在?是的,它存在,而不是动态加载,在同一个项目中。我不认为该类是可序列化的,它只是一个创建书签的活动。
XamlReader reader = new XamlXmlReader("Workflows/WorkflowSample.xaml", new XamlXmlReaderSettings(){LocalAssembly = System.Reflection.Assembly.GetExecutingAssembly()});
return ActivityXamlServices.Load(reader);