4

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

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

现在我想逐步调试工作流的活动——如果可能的话,在工作流设计器中。在 MSDN 中,我在 Debug 菜单上找到了一篇文章how to set Breakpoints in Workflows,

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

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

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

...

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

谁能举个例子?

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

4

1 回答 1

3

像这样做:

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

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

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

于 2013-05-29T14:19:11.183 回答