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

时间:2013-05-29 10:56:34

标签: c# visual-studio-2010 debugging workflow-foundation-4 workflow-foundation

我正在尝试调试动态加载的工作流程。基本上我已经实现了以下步骤:

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

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

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

  2.   
  3. 单击“功能中断”。将打开“新断点”对话框。

  4.   
  5. 使用以下语法在“功能”文本框中指定活动的名称: QualifiedActivityId [:[FullClassName] [:InstanceId]]

  6.         

    ...

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

有人可举个例子吗?

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

1 个答案:

答案 0 :(得分:3)

这样做:

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

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

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