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

Ru *_*Air 5 c# debugging visual-studio-2010 workflow-foundation workflow-foundation-4

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

var currentWorkflow = ActivityXamlServices.Load(@"d:\test.xaml");
var wfApp = new WorkflowApplication(currentWorkflow, anyInputs);
wfApp.Run();
Run Code Online (Sandbox Code Playgroud)

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

  1. 在“调试”菜单上,选择“新建断点”。

  2. 单击“在函数处中断”。“新建断点”对话框打开。

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

...

但我不知道如何在“函数”文本框中指定活动的名称以及如何获取 QualifiedActivityId。

谁能举个例子吗?

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

Ach*_*him 3

像这样做:

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

因此,没有什么特别的,无需按名称指定活动,只需单击并选择即可。

在现实世界中,我总是有一些运行代码的测试用例,因此我只需使用 VS2010 中的“测试 -> 调试 -> 在当前上下文中测试”选项,而不是 F5 键。将光标放入测试方法中,然后按 Ctrl-R Ctrl-T(这是该操作的默认绑定)。或者,如果您安装了 ReSharper,则可以单击“单元测试会话”窗口中的“调试器”按钮。