3

我正在尝试调试动态加载的工作流。对于基本上我实现步骤如下:如何调试动态工作流(使用自定义活动)

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

现在我要一步调试工作流步骤的活动 - 如果可能的工作流设计器中。在MSDN我发现一个article如何调试菜单上设置的断点在工作流程,

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

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

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

...

,但我没有任何想法如何指定的功能文本框中的活动,以及如何获得QualifiedActivityId的名称。

任何人都可以举个例子吗?

另一个问题是,我有松散XAML,它在设计器中通过与下面的消息红色方框内显示许多自定义活动:“活动不能因为在XAML错误加载”。有没有办法加载相关的组件,以便VS2010可以显示带有自定义活动的松散xamls?

回答

3

做这样的:

  • 装入XAML到VisualStudio的(在你的情况下,d:\ test.xaml)
  • 设置工作流程中的断点(只需选择一个活动,然后按F9)
  • 启动包含在VS调试您的wfApp.Run()线的应用程序(F5)
  • 只要你的应用程序加载的XAML和运行它,你的断点被触发,您可以检查WF变量,一步在接下来的活动等。

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

+0

Hi @Achim!感谢您的回答。编辑并在vs2010中保存松散的xaml后,您的方式就可以工作。然后在根序列标签中有一个新的属性,其中包含一个绝对路径(

+0

另一个问题是,我在工作流程中有很多自定义活动,并且在调试过程中跳过了它们(它们也不能在设计器中显示 - 而不是在它们的红框中显示此消息:由于XAML)。有没有办法加载相关的组件,以便VS2010可以显示带有自定义活动的松散xamls。 –

+0

VS2010确实有很多问题。通常,如果Xaml文件包含在C#项目中,则该项目可以工作,该项目具有对包含所使用的自定义活动的所有程序集的引用,并且在xaml中,所有名称空间声明都包含一个assembly = part。如果你在VS中创建Xaml,那么对于某些命名空间(即那些是你拥有你的xaml的项目的一部分)来说通常会缺少汇编部分,并且在调试时可能会导致问题。 – Achim

相关问题