我是android和xamarin的新手。最近,我在xamrarin示例TaskyPortable之后创建了一个android应用。问题是,只要以下代码执行,就会抛出错误。

        public override void OnCreate()
        {
            base.OnCreate();
            var sqliteFilename = "ToDoItemDB.db3";
            string libraryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
            var path = Path.Combine(libraryPath, sqliteFilename);
            conn = new SQLiteConnection(path);


每当它调用具有给定路径的新SQLiteConnection时,都会抛出


  “ System.TypeInitializationException:的类型初始值设定项
  “ SQLite.SQLiteConnection”引发了异常。”


我究竟做错了什么?该代码几乎类似于TaskyPortable。
我搜索了很多,但没有找到任何东西。

请帮助。

附言:此问题已经被问过here,并且我已经检查了答案。我还在droid项目中添加了SQLite.net的引用。但是仍然面临这个问题。

最佳答案

该代码有效

 

  private SQLiteConnection conn;

  protected override void OnCreate(Bundle bundle)
  {
   base.OnCreate(bundle);
   Forms.Init(this, bundle);

   var sqliteFilename = "ToDoItemDB.db3";
   string libraryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
   var path = Path.Combine(libraryPath, sqliteFilename);
   conn = new SQLiteConnection(path);

   //create table
   conn.CreateTable<Todo>();

   LoadApplication(new App());
  }


检查这些软件包是否在package.config中。也许最好删除Sqlite软件包并仅安装sqlite-net-pcl,这将安装其余的sqlite软件包

  <package id="sqlite-net-pcl" version="1.3.1" targetFramework="monoandroid60" />
  <package id="SQLitePCLRaw.bundle_green" version="1.1.2" targetFramework="monoandroid60" />
  <package id="SQLitePCLRaw.core" version="1.1.2" targetFramework="monoandroid60" />
  <package id="SQLitePCLRaw.lib.e_sqlite3.android" version="1.1.2" targetFramework="monoandroid60" />
  <package id="SQLitePCLRaw.provider.e_sqlite3.android" version="1.1.2" targetFramework="monoandroid60" />

09-11 18:42