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

.NET MAUI安卓模拟器加载文本文件触发TargetInvocationException问题

.NET MAUI安卓端文本文件加载问题解决方法

你的问题核心是:Windows平台下Copy to Output Directory会将文件直接放到可访问路径,但安卓平台下,这个设置只会把文件打包进APK的只读资源目录,不会自动复制到可读写的AppDataDirectory,所以需要手动完成文件复制步骤。

步骤1:调整文件存放位置与属性

  • 将erv.txt移动到项目的Resources/Raw目录(如果没有Raw文件夹,直接新建)
  • 选中文件,在属性窗口设置:
    • Build Action:设为MauiAsset
    • Copy to Output Directory:设为Copy always或Copy if newer

步骤2:修改加载代码,添加资源复制逻辑

将原代码替换为以下逻辑:先检查AppDataDirectory中是否存在目标文件,不存在则从应用包资源中复制过去,再进行读取:

string appDataFilePath = Path.Combine(FileSystem.Current.AppDataDirectory, "erv.txt");

// 若AppData中无文件,从Raw资源复制到可读写目录
if (!File.Exists(appDataFilePath))
{
    using var resourceStream = await FileSystem.Current.OpenAppPackageFileAsync("erv.txt");
    using var fileStream = File.Create(appDataFilePath);
    await resourceStream.CopyToAsync(fileStream);
}

// 正常读取文件
using (StreamReader sr = File.OpenText(appDataFilePath))
{
    // 后续读取逻辑
}

可选:通过项目文件配置(替代属性窗口设置)

如果偏好直接编辑项目文件,可添加如下配置:

<ItemGroup>
  <MauiAsset Include="Resources\Raw\erv.txt">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </MauiAsset>
</ItemGroup>

这样就能确保安卓平台运行时,文件被正确复制到可访问的AppDataDirectory,避免找不到文件的异常。

内容的提问来源于stack exchange,提问作者Arturo Girona

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:02:38