2

私はかなり大きなSilverlight4アプリケーション(1つのソリューションで42のプロジェクト)に取り組んでおり、非常に奇妙な問題に取り組んでいます。

アプリケーションはデバッグビルドで正常に動作し、リリースビルドでもデバッガーを接続して実行します(F5)が、デバッグせずに実行すると、Silverlight xapが読み込まれ、空白のページのみが表示されます。

起動していないApplication_UnhandledExceptionを処理しているため、デバッガーを接続した状態ではこの動作を再現できないため、有用な情報を取得することはほとんど不可能です。

デバッガーが接続されている実行時に、この問題を引き起こす可能性のある違いは何ですか?

編集:デバッグビルドもデバッガーを接続せずに実行されることも追加する必要があります。

4

2 に答える 2

2

問題は、リリース ビルドが呼び出しアセンブリを変更するいくつかの最適化を実行することであることが判明しました。

リフレクションを使用して IoC コンテナーに型を登録し、デバッグでは Assembly.GetCallingAssembly().GetTypes() は常に予期されるアセンブリを返します。しかし、リリース モードでは、呼び出し元のアセンブリは生成された匿名でホストされる DynamicMethods アセンブリであるため、型は IoC コンテナーに登録されず、アプリはリリース モードでクラッシュします。

修正は、代わりに this.GetType().Assembly を使用することでした。

問題を複雑にしているのは、IoC コンテナーから例外がスローされたときに Silverlight が空白のページを表示するだけであるため、失敗の原因を特定するのが非常に難しいことです。確かに、この動作を変更する方法はありますか?

于 2010-09-07T16:04:58.550 に答える
1

IIS 展開で空白ページが表示される一般的な理由は、MIME TYPES 定義の欠如です。Silverlight アプリケーションの種類に応じて、次のタイプの 1 つ以上を追加する必要があります。

.xap アプリケーション/x-silverlight-app .xaml アプリケーション/xaml+xml .xbap アプリケーション/x-ms-xbap

于 2011-10-26T09:16:39.510 に答える