3

現在、.NET FX 4.0.1 StateMachine アクティビティを次のように保存しています。

var sb = new StringBuilder();
var xamlWriter = ActivityXamlServices.CreateBuilderWriter(
                     new XamlXmlWriter(new StringWriter(sb),
                     new XamlSchemaContext()));
XamlServices.Save(xamlWriter, activityBuilder);

return sb.ToString();

これは正常に機能し、生成された XAML は適切に表示されます。残念ながら無効です。使用して読み戻すことはできますActivityXamlServices.Loadが、実行すると、ワークフローで定義されたプロパティが不明であると表示されます。Visual Studio デザイナーで開くと、同じエラーが発生します。

式「ActiveCall」の処理中にコンパイラ エラーが発生しました。「ActiveCall」は宣言されていません。保護レベルにより、アクセスできない場合があります。

元の XAML と私のコードで生成された XAML を比較することで、この問題を解決する方法を見つけました。タグの前にこのタグを付ける必要がありますStateMachine

<mva:VisualBasic.Settings>
    Assembly references and imported namespaces for internal implementation
</mva:VisualBasic.Settings>

ちなみに、
タグ内のテキストは次のようにする必要があります。そうしないと、VS で WF を開くときにエラーが発生します。

テキスト「FooBar」から「設定」を作成できませんでした

質問:
生成された XAML にこのタグを含めるには、コードで何を変更する必要がありますか?

4

1 に答える 1

1

私は答えを見つけたと思います。

を呼び出す前に、次のコードを使用する必要がありますSave

VisualBasic.SetSettings(activityBuilder, new VisualBasicSettings());

activityBuilderが から作成されている場合はDynamicActivity、次のコードを使用することをお勧めします。

VisualBasic.SetSettings(activityBuilder,
                        VisualBasic.GetSettings(dynamicActivity));

これを使用しないと、拡張メソッドにのみ必要な名前空間が XAML に書き込まれず、XAML を読み込んで実行するときにエラーが発生します。


code projectに関する調査結果をまとめました。

于 2012-07-26T09:44:34.010 に答える