C#学习教程:MonoSQLite上的System.DllNotFoundException它在我的Windows机器上运行,我从NuGet获得了SQLite,但是......当我将System.Data.SQLite.dll和SQLite.Interop.dll从我的Windows机器直接放入Linux服务器时,它说没有找到SQLite。Interop.dll,但我确信我会在下一个可执行文件中看到它。然后我尝试使用/p:UseInteropDll=false编译System.Data.SQLite.dll,但没有成功。这次它说找不到System.Data.SQLite.dll。这个“未被发现”的奥秘是什么?在Linux上使用Mono.Data.SQLite.dll。查看Mono手册在Linux上使用SQLite或在Mono上构建System.Data.SQLite.dll。您还可以映射DLL:无需更改代码。您可以自己构建它。apt-getinstallbuild-essentialsunzip以下载SQLITE源代码——您需要完整的源代码。目前称为sqlite-netFx-full-source-1.0.104.0.zip。解压并cdSource,chmod+xcompile-interop-assembly-release.sh构建shell脚本,然后运行它./compile-interop-assembly-release.sh。-它将在../bin目录中构建一个.so文件。将此.so文件复制到与您的应用程序相同的目录中,然后正常运行您的应用程序。注意:确保您尝试运行的用户可以写入您的SQLite数据库和其中的目录。我开始在Windows中开发,但随后将应用程序移动到Mono(Ubuntu14),这是SQLite提供程序无法加载的地方,如OP所述。我不得不使用以下命令重新编译System.Data.SQLite.dll:MSBuildSystem.Data.SQLite.2012.csproj/t:Rebuild/p:UseInteropDll=false/p:UseSqliteStandard=true但是,在此之后我得到以下信息异常:提供者没有返回ProviderManifest实例。方法System.Data.SQLite.UnsafeNativeMethods:GetSettingValue(string,string)'无法从方法System.Data.SQLite.EF6.SQLiteProviderManifestGet:GetProviderManifestToken(string)'访问Data.SQLite.EF6.dll:MSBuildSystem.Data.SQLite.EF6.2012.csproj/t:Rebuild/p:UseInteropDll=false/p:UseSqliteStandard=true将所有生成的文件复制到Mono项目的bin目录下,一切正常。我使用的SQLite提供程序源代码版本是1.0.98.1。我希望这样可以节省很多时间...以上就是C#学习教程:System.DllNotFoundExceptiononMonoSQLite分享的全部内容。收藏不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
