.NET MAUI使用Plugin.Maui.Audio播放音频遇FileNotFoundException问题
解决Plugin.Maui.Audio播放音频的“文件未找到”问题
问题根源
你碰到的问题是.NET MAUI与Xamarin的资源路径规则差异,不同平台对MauiAsset资源的解析逻辑不一样:
- Windows对路径兼容度高,用
Resources/Raw/done.wav能识别,但Android平台不支持这种带目录前缀的写法 - MAUI中
FileSystem.OpenAppPackageFileAsync的默认查找根目录就是Resources/Raw,直接传文件名即可,加前缀反而会找不到文件
具体解决步骤
1. 先确认文件配置
- 确保音频文件放在
Resources/Raw目录下 - 右键文件→属性,确认生成操作是
MauiAsset,复制到输出目录设为如果较新则复制
2. 修正播放代码
把链式调用拆分开(方便调试),直接用文件名访问:
var audioStream = await FileSystem.OpenAppPackageFileAsync("done.wav"); var player = AudioManager.Current.CreatePlayer(audioStream); player.Play();
3. Android平台额外检查
如果Android模拟器还是报错,做这两步:
- 检查文件名大小写:Android对路径大小写敏感,确保文件名是全小写(比如
done.wav,不要写成Done.WAV) - 清理重建项目:删除项目下的
bin和obj文件夹,重新生成解决方案,避免旧缓存干扰
4. 更稳妥的替代写法
Plugin.Maui.Audio支持直接通过程序集加载资源,不用依赖FileSystem,兼容性更好:
var assembly = typeof(你的页面类名).GetTypeInfo().Assembly; var player = AudioManager.Current.CreatePlayer(assembly, "你的应用命名空间.Resources.Raw.done.wav"); player.Play();
替换提示:把你的页面类名改成当前页面的类(比如MainPage),你的应用命名空间换成项目的根命名空间(比如项目叫TodoApp,命名空间就是TodoApp)
内容的提问来源于stack exchange,提问作者Ghostpanther
相关产品推荐
相关产品推荐

