C#でアプリ開発している際に出くわした、
フォームデザイン画面が正常に表示されず以下のエラーメッセージが出た場合の対処法
DLL '( DLL 名 )' を読み込めません: 指定されたモジュールが見つかりません。(HRESULT からの例外: 0x8007007E)
DLL名は自開発品で、アプリのEXEが出力されるデバグフォルダに一緒に入ってるものの、なぜか読み込まれない
つか、
VS閉じて開きなおしたら上のメッセージがでた
それまではエラーもなくフォームデザインができていた
対処法
そもそもフォームデザイン画面でなぜDLLを読もうとしているのかが謎なのだが、
C#のビルダは賢い()ので、コーディングの段階からある程度、実行をしているようだ
この「ある程度」というのは、現時点でわかっている分では、
「プログラムが起動」してから「メインフォームが正常に立ち上がる」まで、のよう
これはメインフォーム内の話に限らず、メインフォームに構成されるユーザー定義のコントロールにまで波及する
これが曲者で、今回に限って言えば、この間にユーザーコントロールでDLLを呼んでしまっているので、
DLLがねーよ、と怒られるみたいだ
怒りたいのはこっちなんだが?????激おこ
しかも、単純にDLLを呼んでいるわけではなく、
InitializeComponent関数内のユーザーコントロールのサイズインスタンス代入の際のリサイズイベントのあと
に呼び出されるところについて怒ってきている
で、
じゃあどうするんだ、といえば、InitializeComponent関数で起こるすべてのイベントに関わる呼び出しについて
セマフォ的なあれでブロックしてやればOK
もしくは、
これは試してはいないのだが、InitializeComponent外でイベントを付与すれば解決すると思われ