.NET MAUI FilePicker在macOS(Mac Catalyst)下抛出异常问题
.NET MAUI FilePicker在macOS Catalyst无法工作的解决方案
针对你遇到的FilePicker在Windows正常、macOS Catalyst失效的问题,以下是几个可行的排查和修复方向:
1. 手动指定macOS平台的文件UTI
默认的FilePickerFileType.Pdf在Mac Catalyst环境下可能没有正确映射到系统认可的PDF文件类型标识符(UTI)。可以通过自定义FilePickerFileType,明确指定macOS对应的UTI:
var result = await FilePicker.PickAsync(new PickOptions { PickerTitle = "Carica il PDF del tuo documento", FileTypes = new FilePickerFileType(new Dictionary<DevicePlatform, IEnumerable<string>> { { DevicePlatform.macOS, new[] { "com.adobe.pdf" } }, // macOS标准PDF UTI { DevicePlatform.Windows, new[] { ".pdf" } } // Windows保留原格式 }) }); if (result == null) return; string PathFile = result.FullPath;
2. 确保在主线程调用FilePicker
Mac Catalyst要求所有UI相关操作必须在主线程执行,虽然MAUI通常会自动处理,但异步场景下可能出现线程上下文异常。可以将调用包裹在主线程执行方法中:
var result = await MainThread.InvokeOnMainThreadAsync(async () => { return await FilePicker.PickAsync(new PickOptions { PickerTitle = "Carica il PDF del tuo documento", FileTypes = FilePickerFileType.Pdf }); }); if (result == null) return; string PathFile = result.FullPath;
3. 升级MAUI到最新稳定版本
部分旧版MAUI存在Mac Catalyst平台下FilePicker的已知bug,升级到官方最新稳定版可以修复这类兼容性问题。
补充说明
你提到下载和文件保存功能正常,确实可以排除大部分权限问题,但上述方案针对的是FilePicker在Catalyst平台的特定适配问题,建议依次尝试。
内容的提问来源于stack exchange,提问作者Gabriele Tedeschi
相关产品推荐
相关产品推荐

