我最近一直在想办法解决这个问题。它在我的Windows机器上工作,我从NuGet那里得到了NuGet,但是.
当我将System.Data.SQLite.dll和SQLite.Interop.dll从我的Windows机器直接放到Linux服务器上时,它说找不到SQLite.Interop.dll,但我确信我看到的是可执行文件的下一个部分。
然后,我尝试用System.Data.SQLite.dll编译/p:UseInteropDll=false,但没有结果。这一次它说没有找到System.Data.SQLite.dll。
什么是“找不到”的谜团?
发布于 2014-01-22 21:25:33
在Linux上使用Mono.Data.SQLite.dll。看看在Linux上使用SQLite或在Mono上构建System.Data.SQLite.dll的Mono手册。
还可以映射DLL:
<configuration>
<dllmap dll="sqlite" target="libsqlite.so.0" os="linux"/>
<dllmap dll="sqlite" target="libsqlite.0.dylib" os="osx"/>
<dllmap dll="sqlite3" target="libsqlite3.so.0" os="linux"/>
<dllmap dll="sqlite3" target="libsqlite3.0.dylib" os="osx"/>
</configuration>发布于 2017-04-02 20:31:05
没有代码更改的必要。你自己建吧。
apt-get install build-essentials unzipunzip和cd Sourcechmod +x compile-interop-assembly-release.sh构建shell脚本,然后运行./compile-interop-assembly-release.sh。-它将在.so目录中构建一个../bin文件。.so文件复制到应用程序位于发布于 2015-11-24 21:26:50
我在Windows中启动了开发,但随后将应用程序移到Mono (Ubuntu 14),这是SQLite提供程序无法按OP描述加载的地方。
我必须使用以下命令重新编译System.Data.SQLite.dll:
MSBuild System.Data.SQLite.2012.csproj /t:Rebuild /p:UseInteropDll=false /p:UseSqliteStandard=true 然而,在此之后,我得到了以下例外:
提供程序没有返回ProviderManifest实例。方法
System.Data.SQLite.UnsafeNativeMethods:GetSettingValue (string,string)' is inaccessible from methodSystem.Data.SQLite.EF6.SQLiteProviderManifest:GetProviderManifestToken (string)‘
要解决这个问题,我必须使用以下命令重新编译System.Data.SQLite.EF6.dll:
MSBuild System.Data.SQLite.EF6.2012.csproj /t:Rebuild /p:UseInteropDll=false /p:UseSqliteStandard=true在将所有生成的文件复制到Mono项目的bin目录后,一切都正常。
我使用的SQLite提供程序源代码版本为1.0.98.1。
希望这能节省很多时间..。
https://stackoverflow.com/questions/21293105
复制相似问题