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

如何在.NET Framework/.NET Standard应用中使用UWP类库?

解决.NET Framework调用UWP BLE类库的方案

1. 改用Windows Runtime组件(WinRT Component)

把你的BLE_Module从纯UWP类库改成Windows Runtime组件项目,这类组件是微软设计用来跨UWP、.NET Framework等平台共享的,.NET Framework 4.6.1+(Windows 10 1709及以上,Windows 11完全支持)可以直接引用:

  • 创建WinRT组件时,目标版本选Windows 10, version 1809 (10.0.17763.0),和你之前的UAP版本对齐。
  • 把原UWP类库中的BLE核心逻辑迁移过来,只对外暴露必要的操作接口(比如扫描、连接、读写特征值等)。
  • 直接在.NET Framework项目里引用这个WinRT组件,你也可以套一层.NET Standard 2.0的适配类来统一业务侧的调用逻辑。

2. 直接在.NET Framework中调用WinRT BLE API

Windows 10 1709+的.NET Framework 4.7.2及以上,原生支持直接调用WinRT的蓝牙API,不用额外写UWP类库:

  • 确保你的.NET Framework项目目标框架是4.7.2或更高(右键项目→属性→应用程序里设置)。
  • 直接在代码里引用Windows.Devices.Bluetooth、Windows.Devices.Bluetooth.GenericAttributeProfile等命名空间,编写BLE逻辑。
  • 要让项目正确识别WinRT API,需要在.csproj中添加配置:
<PropertyGroup>
  <TargetFramework>net472</TargetFramework>
  <EnableWindowsTargeting>true</EnableWindowsTargeting>
</PropertyGroup>

3. COM互操作封装(备选方案)

如果前两种方法受限,可把UWP的BLE逻辑封装成COM组件,再让.NET Framework调用:

  • 在UWP项目中,给BLE操作类加上[ComVisible(true)]特性,实现一个COM可见的接口。
  • 生成项目后,注册该COM组件(Windows 11上用regsvr32或VS自带的注册工具完成)。
  • 在.NET Framework项目中添加COM引用,直接调用接口方法。

原引用报错的原因

UWP类库(目标为uap)依赖UWP专属的运行时环境,.NET Framework和.NET Standard项目无法直接引用;而WinRT组件是专门为跨平台共享设计的,编译输出兼容多种Windows平台的应用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:05:18