2011-02-10 2 views
1

は、デバッグ中に、私はこのC#のアプリで次のことがわかり、私はここにある:.NETアプリケーションが関連のないDLLファイルを読み込もうとしているのはなぜですか? (デバッグ出力の最初のチャンスSystem.BadImageFormatException)

同じディレクトリに存在することが起こる すべて DLLファイルをロードしようとするように見える

実行可能ファイルとして。 (このプロジェクト/ソリューションで何かに全く関係のないものも含め)をアプリがロードし、正常に動作している

は、しかし、私は見つける奇妙なデバッグ出力:(パスが切り取ら)

... 
A first chance exception of type 'System.BadImageFormatException' occurred in mscorlib.dll 
'my_test.exe': Loaded '....\release\mfc42u.dll', Symbols loaded (source information stripped). 
'my_test.exe': Unloaded '....\release\mfc42u.dll' 
A first chance exception of type 'System.BadImageFormatException' occurred in mscorlib.dll 
'my_test.exe': Loaded '....\release\mpiwin32.dll', Binary was not built with debug information. 
'my_test.exe': Unloaded '....\release\mpiwin32.dll' 
A first chance exception of type 'System.BadImageFormatException' occurred in mscorlib.dll 
... 

2つのDLL上記のC#プロジェクトやそれが参照するものとはまったく関係がありません。実行可能ファイル(またはVSデバッガ)がこれらのDLLをロードしようとしているのはなぜですか?

+1

まず、実行可能ファイルのディレクトリにこれらの不要なDLLがあるのはなぜですか? – DOK

+1

@DOK - どうしていいの?これはかなり正常です。アプリが複数の実行可能ファイル(およびDLL)で構成されている場合でも、通常は1つのディレクトリに存在します。 –

+0

@DOKは何を言っていますか(私は完全に同意します):2つの.dllがあなたのプロジェクト(またはそれが参照するもの)と何も関係がない場合、それらはなぜあなたの実行可能ファイルのbinディレクトリにありますか?手動でコピーしましたか?もしそれらが何かによってロードされるべきでなければ、おそらくそこには存在しないはずです... – Pwninstein

答えて

2

このアプリは、これらのDLLを積極的に読み込んでいるようです。

このコード私は精通していないたコンポーネントで見つかった:第一のチャンス例外をキャッチについて

... 
foreach (FileInfo file in dirInfo.GetFiles()) 
{ 
... 
    try 
    { 
    Assembly ass = Assembly.LoadFrom(file.FullName); 
... 
    catch (Exception) 
    { 
    // Ignore all errors caught due to the .NET framework not being able to load an assembly. 
    // Not all qualifying files in the specified directories really are valid .NET assemblies. 
    } 
... 

0xA3のさんのコメントは、右のトラックに私を得ました!

+0

開発者が何を考えていたのか、うわー。彼はすべての* .dllファイルをロードするだけでなく、すべてのファイルをロードするだけです。 – CodesInChaos

+0

@CodeInChaos:ほとんどのコードを削除しました。すべての.dllファイルをチェックするのは "唯一の"方法です。 –

+3

@CodeInChaos:少なくとも変数名はそれに応じて選択されています... –

関連する問題