WF4 RC - Cannot create unknown type when loading WF Service from loose Xaml with ActivityXamlServices

后端 未结 4 1805
清酒与你
清酒与你 2021-01-02 12:45

I am trying to host a WF4 (RC) Service dynamically. I have a test solution with two projects. The first is a declarative workflow service library with one root Flowchart act

相关标签:
4条回答
  • 2021-01-02 13:20

    You're deserializing the xaml file directly, but it is referencing a type (CodeActivity1) that is compiled as a CLR type into the DeclarativeServiceLibrary1 assembly. The most obvious answer is that the DeclarativeServiceLibrary1 assembly is not available to the console app at runtime. Make sure that this assembly is copied into the folder where you are running the console app (\bin\debug) and see if that makes a difference.

    The bottom line is that even though you are reading the xaml file directly, it still needs access to any types that it references.

    0 讨论(0)
  • 2021-01-02 13:24

    Open source code of the activity. Change "xmlns:local="clr-namespace:DeclarativeServiceLibrary1" to xmlns:local="clr-namespace:DeclarativeServiceLibrary1;assembly=DeclarativeServiceLibrary1".

    0 讨论(0)
  • 2021-01-02 13:34

    By looking at your code I can tell that you should have loaded a WorkflowService instead of a simple activity. There are basically two options to try here:

    Option 1: Load the activity and host it inside a generated workflow service.

    You can do this by loading the activity as normal and use the following snippet to make it into a workflow service instance:

    WorkflowService service = new WorkflowService();
    service.Body = loadedActivity;
    

    After that you can host it inside the workflow service host.

    Option 2: Load the workflow service directly

    The second option is not much different from what you have now. But instead of using the ActivityXamlServices class you will need to use the XamlServices class to load the workflow service. After that it's a matter of firing up the workflow service host with the settings you used in your sample.

    0 讨论(0)
  • 2021-01-02 13:39

    Short answer - Xaml load can't infer the local (default) assembly, so you need to specify it on XamlReaderSettings.LocalAssembly.

    0 讨论(0)
提交回复
热议问题