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

.NET 7 MAUI读取MauiAsset文件时为何指向C:\WINDOWS\system32?

问题原因及解决方案

你的代码核心错误在于:调用StreamReader时传入的是文件路径path,而非通过FileSystem.OpenAppPackageFileAsync获取到的文件流。

FileSystem.OpenAppPackageFileAsync(path)能正确定位到Resources/Raw目录下的文件并返回流,但你后续完全没有使用这个流,反而直接用StreamReader读取路径字符串。当传入相对路径(如default.xml)时,StreamReader会默认以当前工作目录拼接完整路径,而桌面端MAUI应用的当前工作目录默认是C:\WINDOWS\system32,因此才会出现到该目录查找文件的错误。

修正后的LoadAsset方法代码如下:

private static async Task<string> LoadAsset(string path)
{
    using var stream = await FileSystem.OpenAppPackageFileAsync(path);
    using var reader = new StreamReader(stream, Encoding.UTF8);

    return await reader.ReadToEndAsync();
}

额外注意事项:

  • 确认文件的生成操作确实设置为MauiAsset,且代码中的文件名大小写与实际文件名一致(不同平台对文件名大小写敏感程度不同)
  • 读取文本时建议使用异步方法ReadToEndAsync(),保持代码的异步一致性,避免阻塞线程

内容的提问来源于stack exchange,提问作者Martin Honnen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:23:17