WPF编译后如何获取WAV文件的URI链接?
解决方案
针对WPF中音乐资源编译后无法访问的问题,可按以下步骤解决:
1. 确认音乐文件的项目属性配置
- 选中
Assets文件夹下的音乐文件(如music_theme.wav、line_clear.wav) - 在属性窗口中设置:
- 生成操作:
Resource(与图片资源保持一致,将文件嵌入程序集) - 复制到输出目录:
不复制(已嵌入程序集,无需单独复制到输出目录)
- 生成操作:
2. 使用Pack URI访问嵌入的音乐资源
WPF访问嵌入资源需使用标准Pack URI格式,替换原有的绝对路径:
private readonly Uri[] SoundsTable = new Uri[] { new Uri("pack://application:,,,/Assets/music_theme.wav", UriKind.Absolute), new Uri("pack://application:,,,/Assets/line_clear.wav", UriKind.Absolute) };
说明:
pack://application:,,,/是WPF嵌入资源的固定前缀,指向当前程序集- 后续路径需与项目中
Assets文件夹的实际结构完全匹配
3. 核对项目结构
确保Assets文件夹直接嵌套在项目根目录下,避免因文件夹层级嵌套导致路径匹配失败。
4. 调试验证
编译后可通过两种方式排查问题:
- 用ILSpy等工具打开生成的EXE/DLL,检查音乐资源是否已嵌入程序集
- 为播放音乐的媒体控件绑定
MediaFailed事件,捕获具体错误信息定位问题
内容的提问来源于stack exchange,提问作者Eralo
相关产品推荐
相关产品推荐

