0

Windows 7 で SQLite 4.0 を使用して MonoDevelop 3.0.5 および Mono 2.10.9 で開発しています。C# と Mono を使用することは、私のアクティブなランタイムに設定されています。ターゲット フレームワークは Mono/.NET 4.0 です。

私のスキーマ スクリプトは SQLite に正常に読み込まれ、コマンド ラインで sqlite3.exe/sqlite3.dll から問題なくアクセスできます。MonoDevelop IDE 内からコードを実行すると、C# コードからデータベースに接続し、select/update/insert を実行し、count や last_insert_row_id などの関数を呼び出すことができます (実行とデバッグの両方が正常に動作します)。

コマンド ラインからコードを実行して myprogram.exe を呼び出そうとすると、最初のデータベース呼び出しでプログラムがクラッシュします。例外からの重要なデータは次のようです。

System.IO.FileNotFoundException: ファイルまたはアセンブリ 'Mono.Data.Sqlite, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。ファイル名: 'Mono.Data.Sqlite, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756'

データベースと sqlite3.dll は、myprogram.exe と同じディレクトリにあります。これは、私の得意ではないシステム構成の問題のようです。うまくいけば、開発マシンで構成に失敗したことは明らかです。

4

1 に答える 1

0

Windows 7 x64 を実行している場合は、ビット数に注意してください。

MonoDevelop (32 ビット) で実行する場合、アプリケーション (Any CPU としてコンパイル) は 32 ビット プロセスとして起動されます。つまり、32ビットモードで正常に動作することを意味します。

コマンド プロンプト (cmd.exe、デフォルトで 64 ビット) で、アプリケーションは自動的に 64 ビット モードで実行されます。その場合に失敗した場合は、64 ビット SQLite スタッフ (64 ビット sqlite3.dll と 64 ビット ADO.NET プロバイダー アセンブリの両方) を使用する必要があることを意味します。これは、SQLite Web サイトまたは ADO.NET プロバイダー アセンブリ ドキュメントのどこかに明確に記載されている必要があります。

于 2013-01-08T13:06:06.600 に答える