Visual Studio 2017更新问题:无法加载DLL'sqlite3':找不到指定的模块。(来自HRESULT的异常:0x8007007E)

Ela*_*ine 5 sqlite visual-studio-2017

将vs2015 .net标准升级到vs2017时,在测试项目中出现以下错误。

无法加载DLL'sqlite3':找不到指定的模块。(来自HRESULT的异常:0x8007007E)

与sqlite provider 1.0.101.0 vs2015搭配使用良好

新环境:Visual Studio 2017,使用.netcore1.1程序包的TargetFramework =“ net461”,sqlite提供程序1.0.105.0

我尝试了以下所有可以从互联网上获得的解决方案,但都是徒劳的。我试过了,

  1. 在以下行中添加了.csproj, <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType><AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  2. 选择测试处理器为x86
  3. 已安装的提供程序:http://system.data.sqlite.org上的sqlite-netFx46-static-binary-bundle-Win32-2015-1.0.105.0.zip

  4. 已安装System.Data.SQLite 1.0.105 nuget包

  5. 尝试将sqlite3.dll(x86)放入项目文件夹,将其设置为“内容”和“始终复制”,甚至尝试将文件复制到bin / x86 /,它抱怨有一个新错误

试图加载格式错误的程序。(来自HRESULT的异常:0x8007000B)

at Microsoft.Data.Sqlite.Interop.NativeMethods.Sqlite3_sqlite3.sqlite3_open_v2(IntPtr filename, Sqlite3Handle& ppDb, Int32 flags, IntPtr vfs)
   at Microsoft.Data.Sqlite.Interop.NativeMethods.Sqlite3_sqlite3.open_v2(IntPtr filename, Sqlite3Handle& ppDb, Int32 flags, IntPtr vfs)
   at Microsoft.Data.Sqlite.Interop.NativeMethods.sqlite3_open_v2(String filename, Sqlite3Handle& ppDb, Int32 flags, String vfs)
   at Microsoft.Data.Sqlite.SqliteConnection.Open()
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open()
   at Microsoft.EntityFrameworkCore.Storage.Internal.SqliteRelationalConnection.Open()
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.BufferlessMoveNext(Boolean buffer)
   at Microsoft.EntityFrameworkCore.Storage.Internal.NoopExecutionStrategy.Execute[TState,TResult](Func`2 operation, Func`2 verifySucceeded, TState state)
   at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute[TState,TResult](IExecutionStrategy strategy, Func`2 operation, TState state)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext()
   at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.<_ShapedQuery>d__3`1.MoveNext()
   at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.<_Include>d__30`1.MoveNext()
   at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.<_Include>d__30`1.MoveNext()
   at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.<_TrackEntities>d__15`2.MoveNext()
   at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at 
Run Code Online (Sandbox Code Playgroud)
  1. 下载了2017年的C ++运行时
  2. 已安装“用于Windows的SQLite运行时”扩展

一切都没有帮助。我错过了什么吗?

Ela*_*ine 5

通过绕道解决。

我在Visual Studio 2017中尝试了POC,有一个net461项目和一个单元测试项目,net461项目与sqlite配合良好,但单元测试项目需要引用sqlite包在此输入图像描述

然而,sqlite 包不能很好地与 net461 类库项目一起工作,没有 dll 被提取到 bin/x86 或 bin/x64 文件夹

在此输入图像描述

解决方法是将 x86/sqlite3.dll、x64/sqlite3.dll 添加到项目中作为“内容”和“复制新版本”(否则,它可能会被使用,并导致错误),如下所示 在此输入图像描述 在此输入图像描述

System.Data.SQLite,这里并不是真正需要的。

现在可以了。希望 sqlite 包能够尽快与 Visual Studio 2017 兼容