7

私は WPF アプリケーションを持っていて、AppDomain.AssemblyResolveイベント(ランタイムがアセンブリを見つけられない場合は常にこのイベントが発生します) をサブスクライブしています。MyAssembly が現在の MyAssembly.resources を解決しようとして、何度か呼び出されることに気付きました。アセンブリを実行しています。また、MyAssembly から参照したライブラリ アセンブリに対しても同じことを要求しました (Library.resources を要求しました)。

これは正常ですか?どうすれば修正できますか?私のアプリケーションには問題があります。ライブラリにある一部の xaml ユーザー コントロールを読み込めません。これは関連していますか?

4

3 に答える 3

7

この行を AssemblyInfo.cs に追加すると、リゾルバーはリソースを要求されなくなります。

[assembly: NeutralResourcesLanguageAttribute("en-US", UltimateResourceFallbackLocation.MainAssembly)]

これは回避策ですが、多言語アプリケーションについては慎重に検討する必要があります。

より詳しい情報:

于 2011-02-12T09:53:21.880 に答える
1

AssemblyResolveイベント ハンドラーでこれと同じ問題に遭遇しました。奇妙なことに、この問題は Windows XP マシンでのみ見られました。私たちのアプリケーションは多くの言語にローカライズされているため、NeutralResourcesLanguageAttribute. 私たちのアプリケーションは .NET v3.5 用にコンパイルされましたが、.NET v4.0 用に文書化AssemblyResolveされた変更の影響を受けていました。

重要.NET Framework 4 以降では、リソース アセンブリを含むすべてのアセンブリに対して ResolveEventHandler イベントが発生します。以前のバージョンでは、イベントはリソース アセンブリに対して発生しませんでした。オペレーティング システムがローカライズされている場合、ハンドラーは複数回呼び出される可能性があります。フォールバック チェーン内のカルチャごとに 1 回です。

これを解決する方法はe.Name、*.Resources.dll を探しているかどうかを確認することでした。そのファイルが AppDomain または既知のフォルダーに見つからない場合は、".Resources" を削除して *.dll を探します。そのファイルが存在する場合は、そのアセンブリを読み込んで返します。これで問題は解決しました。

于 2012-04-05T18:15:34.453 に答える
0

fuslogvw.exe を使用して、.Net が依存関係を検索しようとしている場所を確認できます。

詳細については、 http://msdn.microsoft.com/en-us/library/e74a18c4.aspxを参照してください。

于 2011-01-28T08:49:11.363 に答える