使用ms-appx:///引用图片时出现URI前缀不识别报错怎么解决?
报错
System.NotSupportedException: 'The URI prefix is not recognized.' 解决方案 核心触发原因
ms-appx:/// 是UWP/WinUI 3项目专属的资源访问URI前缀,若当前项目为WPF/WinForms/.NET MAUI等其他类型,使用该前缀会直接触发不识别报错;即使是UWP/WinUI 3项目,路径或文件属性配置错误也可能触发该问题。
分场景解决方法
场景1:当前项目为WPF
替换为WPF支持的资源路径写法即可:
// 写法1:相对路径(需提前配置图片属性) HoverBanner.Source = new BitmapImage(new Uri("/Assets/testimg.jpg", UriKind.Relative)); // 写法2:Pack URI(兼容性更强) HoverBanner.Source = new BitmapImage(new Uri("pack://application:,,,/Assets/testimg.jpg"));
同时确认图片文件属性配置:
- 右键点击
testimg.jpg→ 选择「属性」 - 生成操作设置为
Resource - 复制到输出目录可设置为
不复制(Resource模式下无需输出到目录)
场景2:当前项目为UWP/WinUI 3
依次检查以下配置:
- 确认
Assets文件夹位于项目根目录,testimg.jpg直接存放在Assets文件夹下无嵌套 - 图片属性中生成操作设置为
内容,复制到输出目录设置为如果较新则复制 - 可尝试简化URI写法规避解析问题:
HoverBanner.Source = new BitmapImage(new Uri("Assets/testimg.jpg", UriKind.Relative));
场景3:兜底验证方案
如果以上方法都无效,可先用绝对路径验证图片本身可正常读取:
// 替换为你本地testimg.jpg的实际完整路径 var imgFullPath = @"C:\YourProjectPath\Assets\testimg.jpg"; if (File.Exists(imgFullPath)) { HoverBanner.Source = new BitmapImage(new Uri(imgFullPath)); }
如果绝对路径可正常加载图片,即可确定是相对路径/URI前缀配置错误,回到对应项目场景调整即可。
内容的提问来源于stack exchange,提问作者Blue Nova
相关产品推荐
相关产品推荐

