Jak poprawnie zapisać WF4 ActivityBuilder
Obecnie zapisuję moją aktywność .NET FX 4.0.1 StateMachine w następujący sposób:
var sb = new StringBuilder();
var xamlWriter = ActivityXamlServices.CreateBuilderWriter(
new XamlXmlWriter(new StringWriter(sb),
new XamlSchemaContext()));
XamlServices.Save(xamlWriter, activityBuilder);
return sb.ToString();
Działa to dobrze, a wygenerowany XAML wygląda dobrze. Niestety jest nieprawidłowy. Mogę to przeczytać w użyciuActivityXamlServices.Load
ale gdy go wykonam, mówi, że nie zna właściwości zdefiniowanych w przepływie pracy. Otwarcie go w projektancie Visual Studio daje te same błędy:
Błąd kompilatora napotkał wyrażenie przetwarzania „ActiveCall”. „ActiveCall” nie jest zadeklarowany. Może być niedostępny z powodu poziomu ochrony.
Porównując oryginalny XAML z XAML wyprodukowanym przez mój kod, odkryłem, jak rozwiązać ten problem. Muszę mieć ten tag przedStateMachine
etykietka:
<mva:VisualBasic.Settings>
Assembly references and imported namespaces for internal implementation
</mva:VisualBasic.Settings>
Tak poza tym:
Tekst wewnątrz znacznika musi być dokładnie taki, w przeciwnym razie wystąpi błąd podczas otwierania WF w VS:
Nie udało się utworzyć „Ustawień” z tekstu „FooBar”
Pytanie:
Co muszę zmienić w moim kodzie, aby mieć ten tag w wygenerowanym XAML?