2010-12-28 7 views
1

Ich habe mehrere Workflows WF 4.0, die ich für eine Anwendung erstellt habe, die meine Firma entwickelt. Einige dieser Arbeitsabläufe sind einfach und einige sind sehr komplex (d. H. Viele Schritte, verschiedene Arten von Aktivitäten, benutzerdefinierte Aktivitäten). Für viele dieser Workflows habe ich mehrere benutzerdefinierte Codeaktivitäten erstellt, um einige interne Prozesstypen zu unterstützen.Windows Workflow Foundation 4.0 Designer Rehosting mit benutzerdefinierten Aktivitäten

Die Workflows funktionieren gut und wir hatten sehr wenige Probleme, wenn es darum ging, sie innerhalb von VS 2010 zu verwalten. Wir möchten diese Verantwortung nun unseren Geschäftsbenutzern übertragen. Daher habe ich eine WPF-Anwendung erstellt, um den WF-Designer neu zu hosten (nach den MS-Proben). Mein Problem ist, dass, wenn ich einen der Workflows öffne, die benutzerdefinierte Code-Aktivitäten enthalten, diese Aktivitäten als rote Kästchen mit der Fehlermeldung "Aktivität konnte wegen Fehlern in XAML nicht geladen werden" dargestellt werden.

Ich habe Nachforschungen angestellt und habe mehrere Beiträge gefunden, die erwähnen, dass dies normalerweise ein Problem mit Namespacing und Referenzierung ist. Der rehosted Designer ist in einem Namensraum ähnlich wie diese:

Company.Application.Workflow.Designer

Und die benutzerdefinierten Code Aktivitäten werden in einem separaten benutzerdefinierten Workflow-Bibliothek enthalten, die ich als Referenz im Designer enthalten sind, Projekt. Die Namespace-Bibliothek ist ähnlich wie folgt aus:

Company.Application.Workflow.Data.Activities

Wie ich bereits erwähnt habe, wird die Bibliothek als Referenz in der Designer-Projekt festgelegt, und ich sehe es auf die kopiert werden Ausgabe, wenn ich das Projekt erstelle. Ich habe auch die Referenz in der XAML der wichtigsten entworfenen Anwendung aufgenommen.

Was fehlt mir?

Antwort

0

Hier könnten viele Dinge falsch sein. Zum einen haben Sie die LocalAssembly bei Verwendung des XamlXmlReader gesetzt? Ein Beispiel finden Sie in here. Ein anderes Problem könnte sein, dass Ihre Aktivitäten gut geladen werden, aber die zugehörigen Aktivitätsdesigner nicht gefunden werden. Sie können auch das AppDomain.CurrentDomain.AssemblyResolve-Ereignis verwenden, um zu sehen, welche Assemblys geladen werden und fehlschlagen. Oder besser noch Fuslogvw.exe für den gleichen Zweck verwenden.

Verwandte Themen