无法加载程序集'SQLite.Net.Platform.XamarinAndroid'

问题描述 投票:1回答:1

我正在尝试更新现有的代码库,使其在Android N上运行。目前,文件SQLite.cs正在使用DllImports将sqlite3命令链接到本机库libsqlite.so,不再允许这样做并生成错误:' libmonosgen-2.0.so:未经授权访问“/system/lib/libsqlite.so”

为了解决这个问题,我使用名为SQLite.Net.Platform.XamarinAndroidN的Nuget包管理器添加了一个新的引用,它包含SQLiteApiAndroidN类,它具有我需要的sqlite3方法来替换我的问题文件中的那些。

我的命名空间:

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using System.Linq.Expressions;
using System.Threading;
using SQLite.Net.Interop;
using SQLite.Net.Platform.XamarinAndroid;

实例化类:

public static class SQLThree
{
    public static SQLite.Net.Platform.XamarinAndroid.SQLiteApiAndroidN sqlite = new SQLiteApiAndroidN();
}

用于打开数据库的对象示例:

var r = SQLThree.sqlite.Open (databasePathAsBytes, out handle, (int) openFlags, IntPtr.Zero);

当我去构建这个解决方案时,我收到以下错误:

加载程序集时出现异常:System.IO.FileNotFoundException:无法加载程序集'SQLite.Net.Platform.XamarinAndroid,Version = 3.1.0.0,Culture = neutral,PublicKeyToken ='。也许它在Mono for Android配置文件中不存在?

文件名:'SQLite.Net.Platform.XamarinAndroid.dll',位于Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences的Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference引用,ReaderParameters参数)(DirectoryAssemblyResolver解析器,ICollection1 assemblies, AssemblyDefinition assembly, Boolean topLevel) at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(DirectoryAssemblyResolver resolver, ICollection1程序集, AssemblyDefinition assembly,Boolean topLevel)at Xamarin.Android.Tasks.ResolveAssemblies.Execute(DirectoryAssemblyResolver resolver)SIMSMobileView

SQLite.Net.Platform.XamarinAndroidN.dll位于项目的packages文件夹中。该引用将添加到正确的项目文件的引用中。关于我可以做些什么来解决这个错误的想法?我对c#和Xamarin很新,并且通常用Java本地编写Android应用程序,但是我把这个项目交给了更新;如果我忽略了一些微不足道的事情,那就道歉了。

c# android xamarin sqlite
1个回答
0
投票

尝试

  1. 关闭解决方案
  2. 删除Packages文件夹的所有内容(通过Nuget引用的所有DLL)
  3. 重启解决方案
  4. 构建(这将导致Nuget根据packages.config再次获取所有DLL)
© www.soinside.com 2019 - 2024. All rights reserved.