我是 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,但仍然没有运气。
请给我一些关于我缺少什么的提示?谢谢你。
最佳答案
Mono.Data.Sqlite.DLL
只是一个托管包装器,需要找到非托管 sqlite3.dll
为了运行(这是保存 Sqlite 本身的 native 二进制文件的内容)。
它在 /bin
中查找此内容目录,要在构建时将其部署到那里,您需要复制 sqlite3.dll
到您的项目根目录/
并设置 构建操作 至内容 并将复制操作更改为 Copy if newer
.
理想情况下,您希望使用正确的 sqlite3.dll
对于您的体系结构(ServiceStack.OrmLite.Sqlite.Mono NuGet 包包含 32 位/64 位 dll)虽然 IIS/.NET 可以使用 32 位非托管 dll,但 require some tweaking explained here .
使用混合模式程序集
而Mono.Data.Sqlite.DLL
允许您在 Mono 上运行相同的 .NET 应用程序,如果您只想在 Windows 中运行 Sqlite,您还可以使用在 .NET dll 中嵌入非托管 native sqlite 库的混合模式程序集。 NuGet 上有 2 个不同的版本:
删除对现有 OrmLite 或 Sqlite dll 的任何引用,因为这两个 NuGet 包都包含所需的所有 Sqlite + OrmLite dll。
关于c# - 让 ServiceStack 示例工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11929105/