2013年2月17日日曜日

VB2008EESP1 と SQLServerCompact3.5SP1 を x64 で

Visual Basic 2008 Express Edition SP1 ( VB2008EE ) を x86 ( 32 Bits ) 環境で使っていますが、
新たに、x64 ( 64 Bits ) 環境にも導入しました。
使っていくうちに気付いたのが、SQL Server Compact 3.5 SP1 ( SSCE3.5 ) の利用が出来ない事!
原因は、標準状態ではSSCE が 32 Bits 版での提供で、64 Bits 版が無い事によるライブラリ呼出の失敗です。
さてどうするか ... 。


SSCE はファイルベースのコンパクトなデータベースですが、
64 ビット OS にインストールされたままの状態では、利用出来ず、
開発もままならないのです。   ( VB2008EE 自体も x86 アプリです。 )

これに対して、ふたつの対処方法があります。
ひとつは、開発環境はそのままで、プロジェクトファイルを書き換える方法。
他方は、x64 版の SSCE を導入する事。


ひとつ目は、Internet 検索でよく見る方法。
VB2008 で生成される実行ファイルは、AnyCPU (つまり x86 ( 32 Bits ) 環境と x64 ( 64 Bits ) 環境を自動的に判別するもの) なので、
これを x86 に指定します。
有償の VB には、実行ファイルを、x86・x64・AnyCPU・IA64 から選択できる機能が備わっていますが、無償版のEE にはありません。
直接、プロジェクトファイル( XML 形式 )をメモ帳等で開き、<PropertyGroup> 要素の直下に 次の一行を追加します。
  <PlatformTarget>x86</PlatformTarget>
     何か間違ったのか、ちゃんとは動きませんでした。 どうも、馴染めない ... 。      
しかし、折角の x64 環境であっても、 x86 の指定では WOW64 環境の 32 ビット CLR 上での実行となってしまいます。


ふたつ目。 幸い SSCE3.5 は MS のサイトにて 64 Bits 版の提供が行われています。
当初、ネットで検索すると英語でのトラブル情報ばかりで、尻込みしていました。
よく巷で聞く DLL 地獄!の怖さから、消極的になっていました。
意を決して、ダウンロード・インストールと進め、めでたく、問題解決と相成りました。 チャンチャン。

VB2008EE で付随している SSCE3.5 の x86 のバージョンは v 3.5.5692.0 。
これと同じバージョンの SSCE3.5 x64 版を MS サイトからダウンロードしてインストールします。
Windows デスクトップ向け Microsoft SQL Server Compact 3.5 Service Pack 1 および Synchronization Services for ADO.NET Version 1.0 Service Pack 1

注意すべきは、この x86 と x64 とでバージョンを揃える事。
   別のソフトが、SSCE の別バージョンを 知らぬうちに 導入してしまっている事があるからだそうです。
   必ず、現状の x86 版のバージョンを コントロールパネル プログラムと機能 等で事前確認して下さい。




なお、SQL Server Compact は、既に、3.5 SP2/4.0/4.0 SP1 と最新バージョンがリリースされています。

今回は、既にある環境と資産を重視し、敢えて、3.5 SP1 x64 にしましたが、
すべての環境を入れ換え資産を直せる時間と気力があるなら、最新バージョンで一気に揃えてしまうのも手ですね。



[2013/02/20] 画像追加

0 件のコメント:

コメントを投稿