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

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

 

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で指定できないのは気をつけないとだめですね。

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

【カテゴリ】プログラミング

プロフィール

愛知県名古屋市にあるジャスウィルで働く社員です。

ジャスウィルは大学事業に特化したシステムを提案しています。『大学向け事務・教務統合パッケージ―TriR Campus』を開発しています。


Facebookページでは、イベントや普段の社員の様子を公開中♪
ぜひご覧ください☆

過去一年の月別記事 全て表示