Δεν μπορείτε να επικυρώσετε ή να εκτελέσετε μια ροή εργασίας σε υποδομή ροής εργασίας των Windows που έχει δημιουργηθεί με τη χρήση System.Activities.ActivityBuilder, αν περιέχει εκφράσεις της Visual Basic


Συμπτώματα


Κατά την επικύρωση ή την εκτέλεση μιας ροής εργασίας που δημιουργήθηκε με χρήση System.Activities.ActivityBuilder σε ένα Η εφαρμογή Microsoft Windows Communication Foundation (WCF) , η παρακάτω εξαίρεση:

Εξαίρεση που δεν αντιμετωπίστηκε: System.Activities.InvalidWorkflowException: τα παρακάτω σφάλματα παρουσιάστηκαν κατά την επεξεργασία του
δομή της ροής εργασίας:
'DynamicActivity': το ιδιωτικό εφαρμογή της δραστηριότητας ' 1: DynamicActivity "έχει το ακόλουθο σφάλμα επικύρωσης: σφάλματα μεταγλώττισης αντιμετώπισε Επεξεργασία έκφρασης"variable1. Το όνομα".
'variable1' δεν έχει δηλωθεί. Μπορεί να είναι δυνατή η πρόσβαση λόγω του επιπέδου προστασίας.

Αιτία


Αυτό το ζήτημα παρουσιάζεται επειδή το System.Activities.ActivityBuilder δεν περιλαμβάνει χαρακτηριστικό VisualBasic.Settings στο ριζικό στοιχείο του αρχείου XAML κατά την αποθήκευση μιας ροής εργασιών, όπως φαίνεται στο ακόλουθο παράδειγμα:

< δραστηριότητας x: Class = "CustomActivity" xmlns = "http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:w = "clr-namespace:WorkflowConsoleApplication1, συγκρότηση = WorkflowConsoleApplication1" xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" >

<Sequence>

<Sequence.Variables>

< μεταβλητής x: TypeArguments = όνομα "w:MyCustomType" = "variable1" / >

</Sequence.Variables>

< κείμενο WriteLine = "[variable1. Όνομα] "/ >

</Sequence>

</Activity>

Αυτό το χαρακτηριστικό είναι απαραίτητο για παραστάσεις της Visual Basic για την επίλυση των τύπων που χρησιμοποιούνται στην παράσταση για το αντίστοιχο συγκροτήσεις.

Προτεινόμενη αντιμετώπιση


Για να επιλύσετε αυτό το ζήτημα, προσθέστε με μη αυτόματο τρόπο τα ακόλουθα δύο χαρακτηριστικά για το ριζικό στοιχείο του αρχείου XAML.

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

mva:VisualBasic.Settings="Assembly αναφορές και εισαγόμενα χώρους ονομάτων για εσωτερική εφαρμογή"

Αφού προσθέσετε αυτά τα δύο χαρακτηριστικά, η ροή εργασίας που εμφανίζεται στην ενότητα "Συμπτώματα" εμφανίζεται ως εξής:

< δραστηριότητας x: Class = "CustomActivity" xmlns = "http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:w = "clr-namespace:WorkflowConsoleApplication1, συγκρότηση = WorkflowConsoleApplication1" xmlns:x = http://schemas.microsoft.com/ Το WinFX/2006 xaml xmlns:mva = "clr namespace:Microsoft.VisualBasic.Activities; assembly=System.Activities" mva:VisualBasic.Settings="Assembly αναφορές και εισαγόμενα χώρους ονομάτων για εσωτερική εφαρμογή" >
    <Sequence>
        <Sequence.Variables>
< μεταβλητής x: TypeArguments = όνομα "w:MyCustomType" = "variable1" / >
        </Sequence.Variables>
< κείμενο WriteLine = "[variable1. Όνομα] "/ >
    </Sequence>
</Activity>

Επιπλέον, μπορείτε επίσης να δημιουργήσετε μια λύση προγραμματισμού. Για να το κάνετε αυτό, προσθέστε τον ακόλουθο κώδικα μετά τη ρύθμιση "Λειτουργία δόμησης ". Εφαρμογή, όπως φαίνεται στο ακόλουθο δείγμα κώδικα:


VisualBasic.SetSettingsForImplementation (λειτουργία δόμησης, νέα VisualBasicSettings()
            {
ImportReferences =
                {
νέα VisualBasicImportReference
                    {
Συγκρότηση = "ConsoleApplication1"
Εισαγωγή = "ConsoleApplication1"
                    },
                }
            });