5

アプリケーションを合理的に表示するには、Blend 4 で初期化コードを呼び出す必要があり、Josh Smith によるこのアプローチを使用してそれを実行しています。

次のプロジェクト構造を使用しています。

MainProgram
  -- Properties
     -- AssemblyInfo.cs (including the custom attribute)
  -- App.xaml
  -- HostWindow.xaml    (UserControls are embedded here)
  -- DesignTimeBootstrapperAttribute.cs

ViewsAssembly
  -- Lots of user controls

何らかの理由で、すべてのビルド後にデザインタイム ブートストラップが呼び出されるわけではありません (カスタム マークアップ拡張機能が例外をスローし、Blend で多くのエラー メッセージが表示されます)。ただし、ソリューションを最初にロードするときに呼び出されますが、ここでの Blend の動作がわかりません。

私は何を間違っていますか、または別のアプローチがありますか?

編集: 完全な再構築を行うと、毎回 Bootstrapper が呼び出されることに気付きました。それは回避策として機能するかもしれませんが、それでも理解したいと思います。

4

1 に答える 1

3

スタートアップを実行しない再構築後に、メイン アプリのアセンブリ バイナリが実際に変更されていることを確認できますか? (バイナリが変更されない場合、Blend はリフレクションを評価しないと思います)。また、解決策をきれいにして、再構築するよりも試してみます。

重度の回避策として、ビルド後のイベントでソリューション/プロジェクト ファイルを変更する (たとえば、スペースを追加する) ことを検討してください。これにより、Blend はソリューションをリロードし、カスタム スタートアップ コードを再度実行します。

補足として、VS XAML UI デザイナー プロセス (xDesProc) での私の経験では、再ビルド後に加えた変更を常にキャッチするとは限らず、タスク マネージャーを使用して強制的にリロードを強制終了する必要があることを示しています。

于 2013-02-28T18:37:45.523 に答える