如何调试动态工作流(使用自定义活动)

本文关键字:自定义 活动 工作流 动态 调试 何调试 | 更新日期: 2023-09-27 18:15:56

我正在尝试调试一个动态加载的工作流。为此,我基本上实现了以下步骤:

var currentWorkflow = ActivityXamlServices.Load(@"d:'test.xaml");
var wfApp = new WorkflowApplication(currentWorkflow, anyInputs);
wfApp.Run();

现在我想一步一步地调试工作流的活动-如果可能的话,在工作流设计器中。在MSDN中,我发现了一篇如何在调试菜单上设置工作流中的断点的文章,

  1. 在Debug菜单中选择新建断点

  2. 单击功能断开。打开"新建断点"对话框。

  3. 在Function文本框中使用以下语法指定活动的名称:QualifiedActivityId[:[FullClassName][:InstanceId]].

但我不知道如何在功能文本框中指定活动的名称,以及如何获得QualifiedActivityId。

谁能举个例子?

另一个问题是,我在松散的xaml中有许多自定义活动,这些活动在设计器中由红色框显示,并带有以下消息:"由于xaml 中的错误,无法加载活动"。是否有一种方法可以加载相关的程序集,以便VS2010可以显示带有自定义活动的松散示例?

如何调试动态工作流(使用自定义活动)

这样做:

  • 加载XAML到VisualStudio(在您的情况下,d:'test.xaml)
  • 在工作流中设置断点(只需选择一个活动并按F9)
  • 在VS调试器中启动包含wfApp.Run()行的应用程序(F5)
  • 一旦你的应用程序加载并运行xaml,你的断点将被击中,你可以检查WF变量,跳过下一个活动等。

所以没有什么特别的,没有指定活动的名称,只需单击并选择。

在现实世界中,我总是有一些运行代码的测试用例,所以我简单地使用VS2010中的"测试->调试->在当前上下文中测试"选项,而不是F5键。将光标放入测试方法中,然后按Ctrl-R Ctrl-T(这是该操作的默认绑定)。或者,如果你已经安装了ReSharper,你可以点击"Unit Test Sessions"窗口中的Debugger按钮。