4

Windows 8 アプリを作成していますが、このアプリに SQLite を使用したいと考えています。SQLite for Windows RuntimeVisual Studio 2013 拡張機能マネージャーを使用してインストールし、 sqlite-netNuGet を使用してプロジェクトに追加しました。

app.xaml.csOnLaunchedにデータベースを作成しようとしていますが、プロジェクトを実行すると次の例外が発生します。

DLL 'sqlite3' をロードできません: 指定されたモジュールが見つかりませんでした。(HRESULT からの例外: 0x8007007E)

コンパイル中にエラーが発生しないため、これは非常に奇妙です。とにかく、追加の DLL: を参照する必要があることを伝えようとしていると思いますsqlite3.dllが、それは機能しません。私のファイル システムには 6 つの異なる DLL があります。ARM、x64、および x86 のデバッグ バージョンとリリース バージョンの両方です。プロジェクトに x86 リリース バージョンを追加しようとしましたが、次の例外が発生します。

「C:\Users\Leon\Documents\Visual Studio 2013\Projects\Googalytics\packages\SQLite\x86\sqlite3.dll」への参照を追加できませんでした。ファイルにアクセスできること、および有効なアセンブリまたは COM コンポーネントであることを確認してください。

sqlite-net のドキュメンテーションがひどいもので、非常に時代遅れで (例はもはや機能しません)、非常に不完全であり、手動で DLL を追加することについても言及されていないのは非常に悲しいことです。だから私は2つの質問があります:

  1. この特定の問題を修正するにはどうすればよいですか?
  2. sqlite-net の最新のドキュメントはどこにありますか?

編集: DB の作成に使用するコードは次のとおりです。

private void InitializeDatabase()
{
    var db = new SQLiteConnection("Googalytics");

    db.CreateTable<Account>();
    db.CreateTable<WebProperty>();
    db.CreateTable<Profile>();
}

ここからそのメソッドを呼び出します。

InitializeDatabase();

if (rootFrame.Content == null)
{
    // When the navigation stack isn't restored navigate to the first page,
    // configuring the new page by passing required information as a navigation
    // parameter
    if (!rootFrame.Navigate(typeof(MainPage), args.Arguments))
    {
        throw new Exception("Failed to create initial page");
    }
}
// Ensure the current window is active
Window.Current.Activate();

edit2:私のセットアップに関する詳細情報:

  • ビジュアル スタジオ 2013 RC
  • Windows 8.1 RTM
  • Windows ランタイム 3.8.0.2 の SQLite
  • sqlite-net 1.0.7
4

1 に答える 1

8

プロジェクトのビルド モードは現在、デフォルトである任意の CPU に設定されています。SqLite アセンブリは AnyCPU としてビルドされないため、ビルド モードを X86 に設定し、X86 SqLite 参照を追加する必要があります。

アプリをデプロイするときは、1 つの AnyCPU パッケージではなく 3 つのパッケージも作成する必要があります。

プロジェクトが AnyCPU であるため、x86 を追加しようとするとエラー メッセージが表示されます。x86 は AnyCPU には有効ではありません。


アップデート

私はあなたの問題を再現しようとしました。Visual Studio Ultimate 2012をインストールしたSQLite for Windows Runtime後、Windows ストア プロジェクトを作成し、その後 SqLite 参照を追加sqlite-netし、最後に DB 作成用のコードを追加しました。

コードを少し変更しました (パスとテーブル)。しかし、私のコードではまったくエラーが発生しません。

SqLite アセンブリを自分で参照する必要はありませんでした。拡張機能を Visual Studio にインストールすると、拡張機能リストに参照が表示されるためです (DLL を追加するのではなく、選択する必要があります)。

参照を追加

ただし、最初の回答で述べたように、ビルド モードを「任意の CPU」以外に設定する必要があります。

私の例は私のスカイドライブにあります(セット構成をx86にテストする場合)。


更新 2

データベース パス:

var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db.sqlite");
var db = new SQLite.SQLiteConnection(dbPath);
于 2013-10-03T13:59:53.947 に答える