定期我得到以下异常:
无法加载DLL 'SQLite.Interop.dll':无法找到指定的模块。(异常来自HRESULT: 0x8007007E)
我使用的是1.0.82.0。在VS2010, Win7 64操作系统下使用nuget安装。
一旦异常开始出现,它就会不断出现——在调试和发布中,在VS内部或外部运行应用程序。
阻止它的唯一方法就是退出并重新登录。不抛出异常并加载dll。 它可以工作几天,但之后又会坏掉。
有人见过这样的情况吗,有解决方案吗?
定期我得到以下异常:
无法加载DLL 'SQLite.Interop.dll':无法找到指定的模块。(异常来自HRESULT: 0x8007007E)
我使用的是1.0.82.0。在VS2010, Win7 64操作系统下使用nuget安装。
一旦异常开始出现,它就会不断出现——在调试和发布中,在VS内部或外部运行应用程序。
阻止它的唯一方法就是退出并重新登录。不抛出异常并加载dll。 它可以工作几天,但之后又会坏掉。
有人见过这样的情况吗,有解决方案吗?
当前回答
大会上会有竞争吗?检查DLL上是否有其他具有文件锁的应用程序。
如果是这个原因,使用Sysinternal的Process Explorer之类的工具来发现有问题的程序应该很容易。
HTH, 粘土
其他回答
一个对我有效的解决方案是从nuget包中安装System.Data.SQLite。
导入要导入的项目的.dll,并安装System.Data.SQLite。
这将安装与您的解决方案/项目兼容并更新的ddl。
即使这是一篇旧文章,我也想在这里分享我找到的解决方案: http://system.data.sqlite.org/index.html/info/54e52d4c6f
如果您不想读取所有问题,解决方案是将“msvcr100.dll”文件(可以在Windows\System32目录中找到)复制到与SQLite.Interop.dll相同的路径。
我建议阅读问题以了解原因,并在安装程序中包含该文件,但仅在错误发生时才安装它,我在安装程序选项中使其成为可选组件。
HTH, Formentz
在构建之前,尝试将平台目标设置为x86或x64(而不是任何CPU): 项目->属性->在Visual Studio中构建->平台目标。
正如SQLite wiki所说,你的应用程序部署必须是:
所以你要遵守规则。找到与您的目标平台匹配的dll,并将其放在图片中描述的位置。dll可以在YourSolution/packages/System.Data.SQLite.Core.%version%/中找到。
我有应用程序部署的问题,所以我只是添加了正确的SQLite.Interop.dll到我的项目中,在安装项目中添加了x86文件夹到applicicationfolder,并添加了文件引用到dll。
我在运行Visual Studio Express 2013时也遇到了同样的问题。我尝试了这里和其他地方提到的几种解决方案,但都没有用。我希望这个修正能帮助到其他人。
我通过在测试基于sqlite的服务的测试类上使用deploymenttem属性来修复它。
例子:
[TestClass]
[DeploymentItem(@"x86\SQLite.Interop.dll", "x86")] // this is the key
public class LocalStoreServiceTests
{
[TestMethod]
public void SomeTestThatWasFailing_DueToThisVeryIssue()
{
// ... test code here
}
}
这将导致所需的SQLite.Interop.dll被复制到适当的“TestResults”文件夹中的x86目录。
全是绿色的。一切都很好。