调用GetFileFromApplicationUriAsync抛出“系统找不到指定文件”异常求助
问题复现
运行如下代码时,读取folder.png正常,读取zh.grxml时报「系统找不到指定文件」错误,两个文件存放在同一Assets目录下:
var test3 = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/folder.png")); var test2 = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/zh.grxml"));
该问题同样出现在所有非png后缀的ms-appx路径文件读取场景中。
解决方案
核心原因
UWP项目默认仅将png、jpg等常用资源文件的生成操作配置为内容,编译时会自动打包进应用包;grxml这类自定义后缀的文件默认生成操作是无,不会被打包到运行目录,因此无法通过ms-appx URI读取。
操作步骤
- 右键点击项目中Assets目录下的
zh.grxml文件,选择「属性」 - 在属性面板中将「生成操作」修改为
内容 - 将「复制到输出目录」修改为
如果较新则复制 - 重新编译项目后即可正常读取该文件
额外排查项
- ms-appx URI对大小写敏感,需确认代码中填写的文件名、后缀与实际文件完全一致,避免拼写错误、多余空格
- 所有需要通过ms-appx路径读取的非默认资源类型文件,都需要按照上述步骤修改生成操作配置
内容的提问来源于stack exchange,提问作者Seaky Lone
相关产品推荐
相关产品推荐

