1

ServiceStack は初めてです。私は MovieREST の例をテストしています。プロジェクトを実行すると、イミディエイト ウィンドウにこのエラーが表示されます

"A first chance exception of type 'System.DllNotFoundException' occurred in Mono.Data.Sqlite.DLL"

映画のリストが読み込まれていません。そのため、デフォルトの入力がいくつかある空の「新しいムービーの追加」ページしかなく、[新しいムービーの追加] をクリックするたびに、DllNotFoundException がスローされます。

動作させるために依存プロジェクトをインストールする必要がありますか? 私はVS2010、IIS、およびVista 32ビットで実行しています(うん..知っています..)。また、Mono と sqlite 32 ビットを盲目的にインストールしましたが、プロジェクトでそれらを実行する必要があるかどうかさえわかりません。コードから、「App_Data/db.sqlite」を参照していることがわかります.Referencesにはすでにsqlite3.dllがあります.dllをダウンロードした32ビットのものに置き換えましたが、まだうまくいきません.

私が欠けているものについてのヒントを教えてください。ありがとうございました。

4

1 に答える 1

3

これは、実行するためにMono.Data.Sqlite.DLLアンマネージドを見つける必要がある単なるマネージド ラッパーですsqlite3.dll(これは、Sqlite 自体のネイティブ バイナリを保持するものです)。

ディレクトリでこれを探し、/binビルドするたびにそこにデプロイするためsqlite3.dllに、プロジェクト ルートにコピーし、[ビルド アクション]を[コンテンツ/]に設定し、[コピー] アクションを に変更します。Copy if newer

理想的には、IIS/.NET は 32 ビットの管理されていない DLL で動作しますが、ここで説明する調整が必要sqlite3.dllになりますが、アーキテクチャ ( ServiceStack.OrmLite.Sqlite.Mono NuGet パッケージには 32 ビットと 64 ビットの両方の DLL が含まれています) に適したものを使用することをお勧めします。

混合モード アセンブリの使用

Mono.Data.Sqlite.DLLMono で同じ .NET アプリを実行できますが、Windows でのみ Sqlite を実行したい場合は、アンマネージ ネイティブ sqlite ライブラリが .NET dll に埋め込まれた混合モード アセンブリを使用することもできます。NuGet で利用できる 2 つの異なるバージョンがあります。

これらの両方の NuGet パッケージには、必要なすべての Sqlite + OrmLite dll が含まれているため、既存の OrmLite または Sqlite dll への参照を削除します。

于 2012-08-13T06:53:49.577 に答える