调用SQLite在c# /MonoDevelop中工作,但当程序从命令行运行时崩溃



在Windows 7上使用SQLite 4.0开发MonoDevelop 3.0.5和Mono 2.10.9。使用c#和Mono设置为我的活动运行时。目标框架是Mono/。NET 4.0 .

我的模式脚本加载到SQLite中,我可以在命令行从sqlite3.exe/sqlite3.dll访问它,没有问题。我可以连接到数据库,并执行选择/更新/插入和调用函数,如计数和last_insert_row_id从我的c#代码,当我从MonoDevelop IDE内执行代码(运行和调试工作良好)。

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

先。FileNotFoundException:无法加载文件或程序集"monodata"。Sqlite, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756'或其依赖项之一。系统找不到指定的文件。文件名称:' mon . data . 'Sqlite, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756'

数据库和sqlite3.dll与myprogram.exe在同一个目录下。这似乎是一个系统配置问题,这不是我的强项。希望我在开发机器上配置失败的地方对某些人来说是显而易见的。

如果您运行的是Windows 7 x64,请注意位。

在MonoDevelop(32位)中运行时,您的应用程序(编译为Any CPU)将作为32位进程启动。所以当你说它运行良好,这意味着在32位模式下它运行良好。

在命令提示符下(cmd.exe,默认64位),应用程序将自动在64位模式下运行。如果它在这种情况下失败,这意味着你将不得不使用64位SQLite的东西(64位sqlite3.dll和64位ADO。. NET提供程序集)。这应该在SQLite网站或ADO的其他地方清楚地说明。. NET提供程序集文档。

最新更新