- Версия Xamarin -> 4.6.0.726
- Стратегия совместного использования кода -> Стандарт .NET < /li>
sqlite-net-pcl 1.6.292
{system.typeinitializationException: инициализатор типа для 'sqlite.sqliteconnection' выдал исключение. ---> system.dllnotfoundException: e_sqlite3 at (управляемая оболочка) sqlitepcl.sqlite3provider_e_sqlite3+nativemethods.sqlite3_libversion_number() at sqlitepcl.sqlite3provider_e_sqlite3.sqlitepcl.isqlite3provider.sqlite3_libversion_number () [0x00000] в sqlitepcl.ra ш. setprovider (sqlitepcl.isqlite3provider imp) [0x00008] в :0 в sqlitepcl.batteries_v2.init () [0x00005] в :0 в sqlite.sqliteconnection..cctor () [0x00016] в :0 --- конец трассировка внутреннего стека исключений --- в sqlite.sqliteconnectionwithlock..ctor (sqlite.sqliteconnectionstring Connectionstring) [0x0000b] в :0 в sqlite.sqliteconnectionpool+entry.connect () [0x0001c] в :0 в sqlite .sqliteconnectionpool.getconnection (sqlite.sqliteconnectionstring Connectionstring) [0x00048] в :0 в sqlite.sqliteasyncconnection.getconnection () [0x00005] в :0 в sqlite.sqliteasyncconnection.get_tracer() [0x00000] в :0
Я провел интенсивное исследование и не нашел ничего подходящего для себя. Последний пост, который я посетил, был такой: Android — инициализатор типа для SQLite .SQLiteConnection' вызвал исключение. ---> System.DllNotFoundException: e_sqlite3 в принятом ответе просто говорится, что установка самородка в проекте Android решит проблему (то, что я уже сделал)
Я покажите немного кода и как выглядят мои самородки.
Пакеты Droid
Код: Выделить всё
Код: Выделить всё
Код: Выделить всё
using SQLite;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace UISampleApp.Interfaces
{
public interface ISQLitePlatform
{
SQLiteConnection GetConnection();
SQLiteAsyncConnection GetConnectionAsync();
String GetPath();
}
}
Код: Выделить всё
using System;
using System.IO;
using Android.OS;
using SQLite;
using SQLitePCL;
using UISampleApp.Interfaces;
using UISampleApp.Models;
[assembly: Xamarin.Forms.Dependency(typeof(UISampleApp.Droid.Implementations.SQLitePlatform))]
namespace UISampleApp.Droid.Implementations
{
public class SQLitePlatform : ISQLitePlatform
{
public string GetPath() {
var dbName =Constantes.DatabaseFileName;
var path = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal),dbName);
return path;
}
public SQLiteConnection GetConnection()
{
return new SQLiteConnection(GetPath());
}
public SQLiteAsyncConnection GetConnectionAsync()
{
return new SQLiteAsyncConnection(GetPath());
}
}
}
Код: Выделить всё
string path = DependencyService.Get().GetPath();
SQLite.SQLiteAsyncConnection x = DependencyService.Get().GetConnectionAsync();
try
{
await x.Table().ToListAsync();
}
catch (Exception e)
{
throw e;
}
PS: Делаем то же самое в проекте с Стратегия совместного использования кода PCL работает, но мне нужно, чтобы она работала в проекте со стандартом .NET в качестве стратегии совместного использования кода. Спасибо
GitHub: https://github.com/ jesse0099/Hackathon2019-Movil.git
Подробнее здесь: https://stackoverflow.com/questions/617 ... te-net-pcl