1

我是 ServiceStack 的新手。我正在测试 MovieREST 示例。当我运行该项目时,即时窗口向我显示此错误

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

并且没有加载电影列表。因此,只有一个带有一些默认输入的空白​​“添加新电影”页面,每次我点击添加新电影时,都会抛出 DllNotFoundException。

我是否需要安装任何依赖项目才能使其工作?我正在使用 VS2010、IIS 和 Vista 32 位运行它(是的..我知道..)。刚刚还盲目安装了Mono和sqlite 32bit,我什至不确定项目是否需要它们运行。从代码中,我可以看到它指的是“App_Data/db.sqlite”,并且引用已经有了 sqlite3.dll,我用我下载的 32 位替换了 dll,但仍然没有运气。

请给我一些关于我缺少什么的提示?谢谢你。

4

1 回答 1

3

Mono.Data.Sqlite.DLL只是一个托管包装器,需要找到非托管sqlite3.dll的包装器才能运行(这是保存 Sqlite 本身的本机二进制文件的东西)。

它会在/bin目录中查找它,以便在您构建时将其部署到那里,您需要复制sqlite3.dll到项目根目录/并将构建操作设置为内容并将复制操作更改为Copy if newer.

理想情况下,您希望sqlite3.dll为您的体系结构使用正确的(ServiceStack.OrmLite.Sqlite.Mono NuGet 包包含 32 位/64 位 dll),尽管 IIS/.NET 可以使用 32 位非托管 dll,但需要在此处解释一些调整

使用混合模式程序集

虽然Mono.Data.Sqlite.DLL允许您在 Mono 上运行相同的 .NET 应用程序,但如果您只想在 Windows 中运行 Sqlite,您还可以使用在 .NET dll 中嵌入了非托管本机 sqlite 库的混合模式程序集。NuGet 上有 2 个不同的版本:

删除对现有 OrmLite 或 Sqlite dll 的任何引用,因为这两个 NuGet 包都包含所需的所有 Sqlite + OrmLite dll。

于 2012-08-13T06:53:49.577 回答