Nie można sprawdzić poprawność lub uruchomić przepływ pracy w Windows Workflow Foundation, który został utworzony przy użyciu System.Activities.ActivityBuilder, jeżeli zawiera on wyrażenia języka Visual Basic


Objawy


Podczas sprawdzania poprawności lub wykonywania przepływu pracy, który został utworzony przy użyciu System.Activities.ActivityBuilder w Aplikacja Microsoft Windows Communication Foundation (WCF) , następujący wyjątek:

Nieobsługiwany wyjątek: System.Activities.InvalidWorkflowException: napotkano następujące błędy podczas przetwarzania
drzewa przepływu pracy:
"DynamicActivity": prywatnego wdrożenia działania "1: DynamicActivity' ma następujący błąd sprawdzania poprawności: Napotkano błędy kompilatora przetwarzania wyrażenie"variable1. Nazwa".
'variable1' nie został zadeklarowany. Może być niedostępny z powodu swojego poziomu zabezpieczenia.

Przyczyna


Ten problem występuje, ponieważ System.Activities.ActivityBuilder nie ma atrybutu VisualBasic.Settings w elemencie głównym pliku XAML podczas zapisywania przepływu pracy, jak pokazano w następującym przykładzie:

< działanie x: Class = "CustomActivity" xmlns = "http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:w = "clr-namespace:WorkflowConsoleApplication1; zestawu = WorkflowConsoleApplication1" xmlns: x = "http://schemas.microsoft.com/winfx/2006/xaml" >

<Sequence>

<Sequence.Variables>

< zmiennej x: TypeArguments = "w:MyCustomType" Name = "variable1" / >

</Sequence.Variables>

< tekst WriteLine = "[variable1. Nazwa] "/ >

</Sequence>

</Activity>

Ten atrybut jest wymagany dla wyrażeń języka Visual Basic rozwiązać typy, które są używane w wyrażeniu do odpowiednich zestawów.

Rozwiązanie


Aby rozwiązać ten problem, należy ręcznie dodać następujące dwa atrybuty do elementu głównego pliku XAML.

xmlns:mva="clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities"

MVA:VisualBasic.Settings="Assembly odniesienia i importowane obszary nazw dla wewnętrznego wdrażania"

Po dodaniu tych dwóch atrybutów, przepływ pracy, który jest wyświetlany w sekcji "Symptomy" pojawia się w następujący sposób:

< działanie x: Class = "CustomActivity" xmlns = "http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:w = "clr-namespace:WorkflowConsoleApplication1; zestawu = WorkflowConsoleApplication1" xmlns: x = http://schemas.microsoft.com/ WinFX/2006/xaml xmlns:mva = "clr-namespace:Microsoft.VisualBasic.Activities; assembly=System.Activities" odniesienia mva:VisualBasic.Settings="Assembly i importowane obszary nazw dla wewnętrznego stosowania" >
    <Sequence>
        <Sequence.Variables>
< zmiennej x: TypeArguments = "w:MyCustomType" Name = "variable1" / >
        </Sequence.Variables>
< tekst WriteLine = "[variable1. Nazwa] "/ >
    </Sequence>
</Activity>

Ponadto mogą tworzyć rozwiązania programowe. Aby to zrobić, Dodaj następujący kod, po ustawieniu konstruktora . Implementacja, jak pokazano w następujący przykładowy kod:


VisualBasic.SetSettingsForImplementation (Konstruktor, nowy VisualBasicSettings()
            {
ImportReferences =
                {
Nowy VisualBasicImportReference
                    {
Montaż = "ConsoleApplication1",
Import = "ConsoleApplication1",
                    },
                }
            });