2012-01-04 1 views
0

いくつかのライブラリを読み込むための新しいappdomainを作成していますが、いくつかのファイルを見つけるのに問題があるようです。私はイベントを使用していますフルアセンブリ名のシステムアセンブリの検索

ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args) 

これらのうちの1つでは、以下のアセンブリでイベントが発生しました。

System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 

これは、すべての必要なアセンブリが要求される方法です。

私の質問にはフルネームが与えられていますが、実際にロードするライブラリの場所を取得するにはどうすればよいですか?それも必要ではなく、ライブラリをロードする別の方法がある場合は、同様にそれを感謝します。

PS:主なアプリケーションは.net 4.0アプリケーションです。

答えて

1

Assembly.Load(String)メソッドを試してください。一般的なケースでは動作するはずです。

+0

正常に動作しているようです。私は読む行を変更しました 'var assm = Assembly.ReflectionOnlyLoad(args.Name); 'return assm; 問題は今、ライブラリの1つに対して何らかの例外がスローされていることです。 '継承セキュリティルールは、型によって違反しました: 'System.Web.Mvc.CompareAttribute'。派生型は、基本型のセキュリティアクセシビリティと一致するか、アクセスしにくいものでなければなりません。 – ritcoder

+0

アセンブリは、セキュリティ設定が異なるAppDomainに既にロードされている可能性があります。この場合、AppDomain.GetAssemblies()をチェックし、完全な名前を比較しようとすることができます。 –

+0

動作しませんでした。私は同じエラーがあります。私が設定したブレークポイントから、アセンブリが既にロードされている場合、イベントは発生していないようです。 – ritcoder