You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework桌面应用遇System.PlatformNotSupportedException问题求助

解决.NET Framework桌面应用中WinRT不支持的BLE问题

问题根源

VS2019及以后版本的.NET Framework项目默认禁用了WinRT API访问,而VS2015的项目模板默认允许该访问,这是导致差异的核心原因。你使用的Windows.Devices.Bluetooth系列API属于WinRT范畴,在桌面应用中需要额外配置才能启用。

可行解决方案

1. 完善WinRT支持的项目配置

在你的.NET Framework桌面项目的.csproj文件中,添加完整的WinRT启用配置,而非仅设置版本号:

<PropertyGroup>
  <TargetFrameworkVersion>v4.8</TargetFrameworkVersion> <!-- 替换为你的实际框架版本 -->
  <TargetPlatformVersion>10.0.19041.0</TargetPlatformVersion> <!-- 推荐使用较新的Win10版本号 -->
  <EnableWindowsRuntimeSupport>true</EnableWindowsRuntimeSupport>
</PropertyGroup>

关键配置项是EnableWindowsRuntimeSupport,仅添加版本号不足以启用WinRT支持。

2. 迁移到.NET 6+桌面应用

若允许升级项目框架,建议迁移至.NET 6或更高版本的WPF/Windows Forms项目。.NET Core及后续版本原生支持WinRT API,无需额外配置,对BLE的兼容性也更优。

3. 使用.NET Framework兼容的BLE替代库

如果不想修改项目框架或配置,可改用专为.NET Framework设计的BLE库,比如:

  • 32feet.NET:老牌蓝牙库,全面支持.NET Framework,无需依赖WinRT
  • BlueDot:轻量BLE库,兼容多种.NET框架版本

4. 检查项目类型的隐藏配置

部分VS2019/2022创建的桌面项目可能存在隐藏配置阻止WinRT访问,可尝试:

  • 右键项目 → 属性 → 应用程序 → 确保“目标平台”选择x64或x86(Any CPU可能引发兼容性问题)
  • 清理项目并删除bin/obj目录后重新生成

验证步骤

修改配置后重新编译项目,尝试初始化BLE相关API,若仍报错可检查:

  • 确认Windows系统版本在Win10 1507以上(WinRT BLE API的最低要求)
  • 若为桌面桥接应用,需在Package.appxmanifest中添加蓝牙权限声明

内容的提问来源于stack exchange,提问作者York Hwe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 05:43:09