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 中执行代码时,我可以连接到数据库并执行 select/update/insert 并从我的 C# 代码中调用 count 和 last_insert_row_id 等函数(运行和调试都可以正常工作)。

当我尝试从命令行执行代码并调用 myprogram.exe 时,程序在第一次数据库调用时崩溃。异常的重要数据似乎是:

System.IO.FileNotFoundException:无法加载文件或程序集“Mono.Data.Sqlite,版本=4.0.0.0,文化=中性,PublicKeyToken=0738eb9f132ed756”或其依赖项之一。该系统找不到指定的文件。文件名:'Mono.Data.Sqlite,版本=4.0.0.0,文化=中性,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 网站或 ADO.NET 提供程序程序集文档的其他地方明确说明。

于 2013-01-08T13:06:06.600 回答