質問

私は私のコードにこれを持っています:

Assembly assembly = Assembly.LoadFile(dllFile);
//dllFile has the correct value of a path of a .dll file
foreach (Type type in assembly.GetTypes()) {...}

プログラムをデバッグすると、すべてが正常に機能します。プログラムのexeを作成すると、コードはassembly.getTypes()に届き、実行を停止します。 exeを使用しているときとデバッグしているときに、assembly.getTypes()が異なる動作をする原因は何ですか?

役に立ちましたか?

解決

このリンクを見てください:

http://social.msdn.microsoft.com/forums/en-us/netfxbcl/thread/3bdaf65c-520c-4a1a-a825-fc2ca2957bf3/

assembly.loadfile()を使用しないでください。 loadfrom()を使用して、アセンブリがどこにあるかを知っている場合は、load()を使用して、アセンブリがどこにあるかを.netに把握させます。 load()を使用することはあなたの好みである必要がありますが、.netがアセンブリを見つけるのを助けるために.configファイルが必要になる場合があります

のクレジット @hanspassant

他のヒント

exeファイルを作成するとき、アセンブリが正しいフォルダーにあることを確認する必要があり、またexeファイルがフォルダーにアクセスできることを確認する必要があります。

あなたはそのイベントを購読して簡単なことをすることができます Assembly.LoadFrom あなたに知られている場所から、またはあなたがエンジニアに基づいてあなた自身の派手なロードをしてください。もあります TypeResolveResourceResolve のイベント AppDomain これにより、さまざまな依存関係を解決するこれらの側面を処理できます AppDomain. 。詳細については、これを参照してください マイクロソフトフォーラムスレッド.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top