2017-03-08 65 views
1

我在嘗試更新現有的代碼庫,以便在Android上運行N. 目前,文件SQLite.cs正在使用DllImports將sqlite3命令鏈接到一個本地庫libsqlite.so不再被允許併產生一個錯誤: 'libmonosgen-2.0.so:未經授權訪問「/system/lib/libsqlite.so」無法加載程序集'SQLite.Net.Platform.XamarinAndroid'

爲了解決這個問題,我添加了一個使用NuGet包管理器調用SQLite.Net.Platform.XamarinAndroidN包含類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,版本= 3.1.0.0,文化=中性公鑰='。也許它不適用於Android個人資料的Mono中?

文件名: 'SQLite.Net.Platform.XamarinAndroid.dll' 在Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference參考,ReaderParameters參數) 在Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences( DirectoryAssemblyResolver分解器,ICollection的1 assemblies, AssemblyDefinition assembly, Boolean topLevel) at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(DirectoryAssemblyResolver resolver, ICollection 1個組件,AssemblyDefinition組件,布爾頂層) 在Xamarin.Android.Tasks.ResolveAssemblies.Execute(DirectoryAssemblyResolver解析器)SIMSMobileView

的SQLite.Net.Platform.XamarinAndroidN.dll位於我的包的文件夾在項目中。該引用被添加到正確的項目文件的引用。有什麼想法可以解決這個錯誤?我很新的C#和Xamarin和一般程序的Java原生的Android應用程序,但有人遞給我這個項目進行更新;所以如果我忽視了一些微不足道的事情,我很抱歉。

回答

0

嘗試

  1. 關閉解決方案
  2. 刪除包文件夾中的所有內容(所有的DLL的通過的NuGet引用)

  3. 重啓解決方案

  4. 構建(這將造成的NuGet再次獲得所有DLL的基礎上,packages.config)