尝试在 Android 上的 .net MAUI 中建立 SQLite 连接时出现 FileNotFoundException

Jim*_*Jim 12 sqlite .net-maui

db = new SQLiteConnection(databasePath);

上面的语句在 Windows 上运行良好,但在 Android 上出现以下错误。它在两个平台上以 xamarin 形式也运行良好。

System.IO.FileNotFoundException:“无法加载文件或程序集 'SQLitePCLRaw.provider.dynamic_cdecl,Version=2.0.4.976,Culture=neutral,PublicKeyToken=b68184102cba0b3b' 或其依赖项之一。”

谢谢你的帮助。

Ale*_*SFT 20

sqlite在项目中使用时需要注意一些事项MAUI

1.确保您已经安装了以下nuget软件包:

 <ItemGroup>
    <PackageReference Include="sqlite-net-pcl" Version="1.8.116" />
    <PackageReference Include="SQLiteNetExtensions.Async" Version="2.1.0" />
    <PackageReference Include="SQLitePCLRaw.core" Version="2.1.0-pre20220207221914" />
    <PackageReference Include="SQLitePCLRaw.bundle_green" Version="2.1.0-pre20220207221914" />
    <PackageReference Include="SQLitePCLRaw.provider.dynamic_cdecl" Version="2.1.0-pre20220207221914" />
    <PackageReference Include="SQLitePCLRaw.provider.sqlite3" Version="2.1.0-pre20220207221914" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

2.用于SQLiteAsyncConnection初始化数据库连接。

Database = new SQLiteAsyncConnection(Constants.DatabasePath, Constants.Flags);
Run Code Online (Sandbox Code Playgroud)

然后创建静态类常量,如下所示:

 public static class Constants
    {
        public const string DatabaseFilename = "MySQLite.db3";
        public const SQLite.SQLiteOpenFlags Flags =
            SQLite.SQLiteOpenFlags.ReadWrite |
            SQLite.SQLiteOpenFlags.Create |
            SQLite.SQLiteOpenFlags.SharedCache;
        public static string DatabasePath
        {
            get
            {
                var basePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
                return Path.Combine(basePath, DatabaseFilename);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)