備忘録 – 継承されたFormのデザイナが表示できない

備忘録 – 継承されたFormのデザイナが表示できない

こんにちわ。ぼんじりです。

数日前に詰まったことを備忘録として書きます。

 

VisualStudio2015でWindowsFormアプリケーション開発にて、

継承されたFormのデザイナが表示されず詰まりました。

 

原因はVisualStudioは64bitのOS上でも32bitで動いているため、デザイナを表示するときに

64bitのモジュールを読み込んでいると32bitで動作しているため読み込めずエラーとなっているのが原因でした。

 

今回のプログラムは動作環境がWindows8.1 64bitで、Oracle12cに接続する必要がありました。

 

Microsoft OLE DB Provider for Oracleは、64bitでの提供をしていなかったため

Oracle Provider for OLE DBを使用しての接続を選択しました。

 

Oracle Provider for OLE DBは32bitと64bitのモジュールがあるので、開発環境に合わせ64bitで指定して

ビルドを行っていました。

(AnyCPUでビルドしても起動するexeが64bitで動作していれば64bitとして動作するので指定する必要はないです。)

 

今回表示されていなかったFormの継承元では、メンバ変数にOLE DBを使用するモジュールのインスタンスを作成しており、

デザイナ表示時にインスタンス作成のロジックを処理していたため、32bitアプリ(VisualStudio)から64bitモジュール

の呼び出しが出来ず、デザイナーが表示されなかったようです。

 

解決策として、OLE DBを使用するモジュールのインスタンス作成をフォームロード時に変更する対応をしました。

場合によっては、DesignModeを使用して回避するのが良いでしょう。

 

ユーザコントロールを作成するときは、64bitで指定できないのは気をつけないとだめですね。

忘れてしまいそうなのでメモしておきます。