Neutral Scent

App developments & Gadgets

Windows Storeアプリ(WinRT)でSQLiteを使う(2012年秋/VS拡張&ビルド編)

Windows 8向けアプリケーションとして、Metro Styleアプリ改めModernなんとかことWindows StoreアプリでローカルDBを使いたい場合、WPのLocal DBのようなDBは未だ提供されず、今の所まだSQLiteを使うのが一般的なようです。
ただ、様々なPreviewを経て情報が錯そうしてしまっている感じなので、とりあえず、現状RTM版SDKでVS拡張をインストールしてSQLiteをアプリに組み込む基本的な段取りをまとめます。

1. Visual Studio Galleryから、SQLite for Windows Runtime VS拡張をダウンロード
http://visualstudiogallery.msdn.microsoft.com/23f6c55a-4909-4b1f-80b1-25792b11639e

2. .vsixをダブルクリックして実行、インストール、念のためVSが立ち上がっていたらVS再起動

3. VS2012でプロジェクトを開きます
4. プロジェクトの[参照設定]/[参照の追加...]

5. [Windows]/[拡張]を選択して、
Microsoft Visual C++ Runtime Package
SQLite for Windows Runtime
の2つをチェック。

現状(3.7.x)ではVC++ Runtimeもチェックしないとビルドエラーになりますよ。
で、とりあえず、ビルドしてみましょう。

エラー 1 構築されているプロジェクトのプロセッサ アーキテクチャ "Any CPU" は、参照される SDK によってサポートされていません。ターゲットとするプロジェクトのプロセッサ アーキテクチャを、SDK "x86, x64, ARM" によってサポートされるアーキテクチャの 1 つに変更することを検討してください (Visual Studio では構成マネージャーを使用してこの変更を行うことができます)。 SQLiteTest1

と言われると思います。
今の所、SQLite for WinRTはAnyCPUに対応していません。
6. プロジェクトの[プロパティ]/[ビルド]で[プラットフォーム ターゲット]を[x86]等へ変更します

再びビルドすればビルドが通るようになります。ARMでもビルドできるはずです。
AnyCPUのように一つの.appxにまとめることはできませんが、3つのターゲットに対してそれぞれビルドを行い、Windows Store登録時にそれぞれの.appxをUploadすればよい、ということのようです。
登録前にWindows App Cert Kitを使うときはRelease版にするのを忘れずに。
7. .NETからのアクセスラッパーとしてsqlite-net(praeclarum)をNuGetでプロジェクトに組み込み
[NuGetパッケージの管理...]からsqlite-netを検索しインストール。


packages.config/SQLite.cs/SQLiteAsync.csがプロジェクトに追加されます。

以上で、.NETのコードからSQLite名前空間が参照可能になるはずです。7.の.NETラッパーはsqlite-net以外にもいくつかあるのでお好みで。
いちおうまだこれで実際にWindows Store通ったわけではないので、ツッコミあればお願いします。

追記(2012/09/23):
インストール方法をsqlite.orgからVS Galleryに変更、.NETラッパーの記述を追加しました。

Windows8UI/UXデザイン入門code name Metro

Windows8UI/UXデザイン入門code name Metro

SQLite ポケットリファレンス

SQLite ポケットリファレンス