You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI集成SQLiteDataAdapter发布Android遇PE元数据缺失错误求助

在.NET MAUI中使用SQLiteDataAdapter连接SQLite数据库并解决Android发布错误

错误原因

System.Data.SQLite NuGet包并非为.NET MAUI这类跨平台移动框架设计,其包含的Windows平台原生PE文件在Android发布流程中被错误处理,导致元数据读取失败,触发XAPRAS7009错误。

解决方案

方案一:改用官方兼容的Microsoft.Data.Sqlite(推荐)

这是微软官方推出的跨平台SQLite库,完美适配.NET MAUI,支持类似SQLiteDataAdapter的数据操作能力:

  • 卸载项目中的System.Data.SQLite NuGet包,安装Microsoft.Data.Sqlite包。
  • 使用SqliteDataAdapter实现数据查询与填充,示例代码:
using Microsoft.Data.Sqlite;
using System.Data;

// 获取MAUI跨平台数据库路径
string dbPath = Path.Combine(FileSystem.AppDataDirectory, "app_database.db");

// 建立数据库连接
using var connection = new SqliteConnection($"Data Source={dbPath}");
connection.Open();

// 使用SqliteDataAdapter填充DataTable
string query = "SELECT * FROM UserInfo";
using var adapter = new SqliteDataAdapter(query, connection);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);

// 对DataTable进行后续操作
foreach (DataRow row in dataTable.Rows)
{
    // 处理数据逻辑
}

方案二:强制适配System.Data.SQLite到Android(不推荐)

若必须使用System.Data.SQLite,需通过项目配置排除不兼容的原生文件:

  • 编辑项目的.csproj文件,添加以下配置(替换版本号为你使用的System.Data.SQLite版本):
<ItemGroup Condition="$(TargetFramework) == 'net7.0-android'">
  <PackageReference Include="System.Data.SQLite.Core" Version="1.0.118" />
  <None Remove="$(NuGetPackageRoot)\system.data.sqlite.core\1.0.118\runtimes\win\**" />
  <None Remove="$(NuGetPackageRoot)\system.data.sqlite.core\1.0.118\runtimes\unix\**" />
  <NativeLibrary Include="$(NuGetPackageRoot)\system.data.sqlite.core\1.0.118\runtimes\android\**" />
</ItemGroup>
  • 保存配置后,重新执行发布命令。

发布验证

使用你原来的发布命令(替换占位符为实际参数):

dotnet publish -f net7.0-android -c Release -p:AndroidKeyStore=true 
-p:AndroidSigningKeyStore=你的密钥库文件路径
-p:AndroidSigningKeyAlias=你的密钥别名 -p:AndroidSigningKeyPass=你的密钥密码
-p:AndroidSigningStorePass=你的密钥库密码

内容的提问来源于stack exchange,提问作者Hassam Fares

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 13:22:12