実行時に、設定した特定のアセンブリ属性に一致する dll をプログラムにロードしようとしています。フラグをチェックする前に dll がロード可能であることを確認するために、次のメソッドを作成しました。
private bool IsValidDll(string dll) {
try {
System.Reflection.Assembly.LoadFrom(dll);
return true;
} catch (Exception ex) { return false; }
}
現在のディレクトリ内の dll をループしてこのメソッドを呼び出し、dll を安全にロードしてそのアセンブリ属性をチェックできるかどうかを確認できます。ただし、例外をスロー/キャッチしておらず、プログラムを直接クラッシュさせているdllにアクセスしています。関連する出力ウィンドウ情報は次のとおりです。
LoaderException: System.IO.FileLoadException: Mixed mode assembly is built against
version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information. - Adapters.Spryware.SprywareAdapter
System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
特定の例外 (System.IO.FileLoadException) をキャッチしようとしましたが、キャッチ ブロックがまだスキップされ、クラッシュします。何かご意見は?
また、これは私のアセンブリ属性をチェックする非常に手間のかかる方法であることがわかりました。最初に Reflection で dll をロードせずにフラグをチェックする方法はありますか?