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

.NET MAUI应用GitHub Actions部署后SQLite Error 26问题求助

解决.NET MAUI通过GitHub Actions交付AppCenter后SQLite Error 26问题

问题场景

我的.NET MAUI应用基于面向MSSQL的基础库,使用Linq2DB操作SQLite,SQLite数据库作为嵌入式资源打包。本地编译签名APK并通过AppCenter发布到安卓手机一切正常,但通过GitHub Actions workflow交付到AppCenter的版本却抛出SQLite Error 26: 'file is not a database'致命异常,调试模式无此问题,仅在Logcat中捕获到该错误。同时Logcat中还出现警告:monodroid-assembly: Assembly 'en-GB/Microsoft.Data.Sqlite.resources'未找到。

排查与解决方向

1. 嵌入式资源打包时的文件损坏

GitHub Actions的打包流程可能对SQLite二进制数据库文件做了文本格式转换,导致文件结构损坏。

  • 确保项目文件中明确数据库文件的构建属性,避免不必要的转换:
    <ItemGroup>
      <EmbeddedResource Include="YourDbFile.db">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        <LogicalName>YourDbFile.db</LogicalName>
        <ExcludeFromSingleFile>false</ExcludeFromSingleFile>
      </EmbeddedResource>
    </ItemGroup>
    
  • 在GitHub Actions的dotnet publish命令中,避免启用可能破坏二进制资源的优化参数,保持发布命令简洁:
    dotnet publish -c Release -f net7.0-android /p:AndroidSigningKeyStore=yourkeystore.keystore /p:AndroidSigningKeyAlias=youralias /p:AndroidSigningKeyPass=$KEYSTORE_PASS /p:AndroidSigningStorePass=$STORE_PASS
    

2. 嵌入式资源读取方式错误

代码中读取嵌入式资源时,必须用二进制流方式,不能用文本流读取,否则会破坏数据库文件结构:

using var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace.YourDbFile.db");
using var fileStream = new FileStream(localDbPath, FileMode.Create);
stream.CopyTo(fileStream);

绝对不要使用StreamReader这类文本读取工具处理数据库文件。

3. 本地化资源缺失的关联修复

Microsoft.Data.Sqlite.resources未找到的警告,可能暗示CI环境打包时遗漏了本地化资源,间接影响SQLite驱动初始化:

  • 在项目文件中指定所需的本地化资源范围,减少不必要的资源打包:
    <PropertyGroup>
      <SatelliteResourceLanguages>en</SatelliteResourceLanguages>
    </PropertyGroup>
    
  • 确保GitHub Actions环境安装的.NET MAUI SDK是完整版本,包含所有必要的本地化组件。

4. 保持本地与CI环境的SDK版本一致

本地和GitHub Actions使用的.NET MAUI SDK版本不一致,可能导致打包逻辑差异。在workflow中指定和本地完全相同的SDK版本:

- name: Setup .NET
  uses: actions/setup-dotnet@v3
  with:
    dotnet-version: '7.0.400' # 替换为你本地使用的具体版本

内容的提问来源于stack exchange,提问作者Jay Kannan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:44:59