我是ServiceStack的新手。我正在测试MovieREST示例。当我运行项目时,立即窗口显示此错误
"A first chance exception of type 'System.DllNotFoundException' occurred in Mono.Data.Sqlite.DLL"
并且没有加载任何电影列表。因此,只有一个空白的“添加新电影”页面带有一些默认输入,每次我点击添加新电影时,都会抛出DllNotFoundException。
我是否需要安装任何依赖项目才能使其正常工作?我用VS2010,IIS和Vista 32bit运行它(是的......我知道..)。刚刚盲目地安装了Mono和sqlite 32bit,我甚至不确定该项目是否需要它们运行。从代码中,我可以看到它指的是“App_Data / db.sqlite”,而References已经有了sqlite3.dll,我用我下载的32bit替换了dll,但仍然没有运气。
请给我一些关于我失踪的提示?谢谢。
答案 0 :(得分: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一起使用但会{ {3}}
虽然Mono.Data.Sqlite.DLL
允许您在Mono上运行相同的.NET应用程序,但如果您只想在Windows中运行Sqlite,您还可以使用嵌入在.NET中的非托管本机sqlite库的混合模式程序集。 DLL。 NuGet有两个不同的版本:
删除对现有OrmLite或Sqlite dll的任何引用,因为这两个NuGet包都包含所需的所有Sqlite + OrmLite dll。