おまけに会社PCがいずれWin7に代わるとなると、まともに動くのかわからないので心配でもある。(一応動くみたいではあるが)
仕事の話なので本当は会社でやりたいが、そうも言ってられない状況なので自宅色々とやる事にした。
やる事は、開発環境の再構築(VS2003→VS2010)と、対象フレームワークのアップグレード。対象フレームワークは、会社にあるXPマシンでも動き、尚且つ将来的にWin7でも動く様に.NET3.5あたりを狙う。
Win7で動けばあの会社の事だ、10年くらいは大丈夫だろう。その後はもう他の人に任せる事にする。
ソフトはデータベース(mdb)を使ってあれこれ管理する、といった有りがちなもの。ADOXを使ってデータベースファイルを作成したりする部分もある為、不安もあったが兎に角試す。
VS2010Expressを入れて、例のVS2003で作ったプロジェクトを開いてみると変換ウィザードが立ち上がり、何の文句も無く変換が終わった。うろ覚えだが、VS2005やVS2008あたりで試した時は色々怒られたような気がしたのだが…(まぁ警告はいっぱい出た)。
これは良いと試しにデバッグビルドしてみると、速攻でエラーで停止。エラーメッセージは以下の通りだ。
System.BadImageFormatException はハンドルされませんでした。
FileName=Interop.ADOX, Version=2.8.0.0, Culture=neutral, PublicKeyToken=null
Message=ファイルまたはアセンブリ 'Interop.ADOX, Version=2.8.0.0, Culture=neutral, PublicKeyToken=null'、またはその依存関係の 1 つが読み込めませんでした。間違ったフォーマットのプログラムを読み込もうとしました。
意味わからん・・・。
しかし、同じような状況に陥った方はやはり多かったようで、ネットをうろうろしてたら割とすぐに解決できた。原因は、(自分の環境がWin7 64bitなので)64bit向けにコンパイルしているのに、32bitのInterop.ADOX.dllを読み込もうとしたから、という事らしい。なるほど「間違ったフォーマットだ」というのはそういう事か。しっかしわかりにくいメッセージだ。
対策のひとつとして、コンパイルのターゲットプラットフォームをAnyCPUからX86にすれば良いとの事だが、Explessではそのような事が出来ない。
なので、プロジェクトを閉じておき、「ファイル」→「ファイルを開く」で、対象となる .vbproj ファイルを開き、直接編集する。
対策のひとつとして、コンパイルのターゲットプラットフォームをAnyCPUからX86にすれば良いとの事だが、Explessではそのような事が出来ない。
なので、プロジェクトを閉じておき、「ファイル」→「ファイルを開く」で、対象となる .vbproj ファイルを開き、直接編集する。
x86 Local 8.0.30319 2.0 {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx} Debug
上記のように、3行目を追加してやると良い。
とりあえず一歩前進できた。
0 件のコメント:
コメントを投稿