未知との邂逅

unk own encounter

C#でアプリ開発しているときの話 (HRESULT からの例外: 0x8007007E)

C#アプリ開発している際に出くわした、
フォームデザイン画面が正常に表示されず以下のエラーメッセージが出た場合の対処法

DLL '( DLL 名 )' を読み込めません: 指定されたモジュールが見つかりません。(HRESULT からの例外: 0x8007007E)

DLL名は自開発品で、アプリのEXEが出力されるデバグフォルダに一緒に入ってるものの、なぜか読み込まれない

つか、

VS閉じて開きなおしたら上のメッセージがでた

それまではエラーもなくフォームデザインができていた

対処法

そもそもフォームデザイン画面でなぜDLLを読もうとしているのかが謎なのだが、

C#のビルダは賢い()ので、コーディングの段階からある程度、実行をしているようだ


この「ある程度」というのは、現時点でわかっている分では、

「プログラムが起動」してから「メインフォームが正常に立ち上がる」まで、のよう

これはメインフォーム内の話に限らず、メインフォームに構成されるユーザー定義のコントロールにまで波及する


これが曲者で、今回に限って言えば、この間にユーザーコントロールでDLLを呼んでしまっているので、

DLLがねーよ、と怒られるみたいだ  


怒りたいのはこっちなんだが?????激おこ


しかも、単純にDLLを呼んでいるわけではなく、

InitializeComponent関数内のユーザーコントロールのサイズインスタンス代入の際のリサイズイベントのあと

に呼び出されるところについて怒ってきている


で、

じゃあどうするんだ、といえば、InitializeComponent関数で起こるすべてのイベントに関わる呼び出しについて

セマフォ的なあれでブロックしてやればOK


もしくは、


これは試してはいないのだが、InitializeComponent外でイベントを付与すれば解決すると思われ