1.背景
很能同学可能需要C#蓝牙编程,目前使用最多的有Windows.Devices.Bluetooth.dll和InTheHand.Net.Personal.dll
但是据说InTheHand.Net.Personal.dll不能支持蓝牙4.0(有待考证),这就导致市面上多数的蓝牙4.0不能用InTheHand.Net.Personal.dll程序集进行编程通讯。
2.问题
-
所以很多同学转而使用Windows.Devices.Bluetooth.dll进行编程,然而在使用VS添加其using引用或在 :解决方案>引用>浏览时找不到此程序集,或者在进行尝试手动下载Windows.Devices.Bluetooth.dll,再添加引用则报告以下错误:
-
再尝试将此Windows.Devices.Bluetooth.dll放进System32或SysWOW64下,并尝试注册此dll,要么无法注册,要么仍然无法引用。
-
再尝试在 项目的.csproj文件的ItemGroup节点里添加以下代码
<Reference Include="Windows.Devices.Bluetooth">
<HintPath>Windows.Devices.Bluetooth.dll</HintPath>
</Reference>
vs仍然报错找不不到此程序集无法引用。
- 再尝试使用[DLLImport]不过vs提示调用函数时需要对函数进行声明,这个时候想到反编译工具ILSpy,但是仍然查看不到内容提示
This file does not contain a managed assembly.
3.解决方案
总之尝试了多种方法后仍然无果,无奈下通过海量阅读论坛和博文总结出以下行之有效的办法。
先晒图为证:
解决步骤:
- 解决方案管理器中右键项目选卸载项目,再右键点编辑.csproj。在文件里PropertyGroup节点下添加以下代码并保存:
<TargetPlatformVersion>8.0</TargetPlatformVersion>
- 添加如图引用:
如果没有,此引用存在于C:\Program Files (x86)\Windows Kits\8.0\References\CommonConfiguration\Neutral
文件夹下,引用Windows.winmd。(具体情况可能不同,可能存在于8.1,8.1A,10.0等文件夹下,如果这样记得修改.csproj文件的TargetPlatformVersion值,对于vs2017很可能存在于C:\Program Files (x86)\Windows Kits\8.1\References\CommonConfiguration\Neutral\Annotated下)如果ExtensionSDKs文件夹不存在Microsoft.VCLibs文件夹,则进行下面操作:
打开你的vs安装程序,或者在控制面板程序修改vs(不是卸载),到达如下界面:
你很可能未安装用于维护面向Windows 8的应用商店应用的工具,勾选后静等安装完毕。 - 添加WIndow.device.winmd引用(非必须)如果不存在可能存在于C:\WINDOWS\System32\WinMetadata\Windows.Devices.winmd,如果不存在请直接下载(提取码017m)后引用(亲测有效)
- 添加System.Runtime.WindowsRuntime.dll引用,此位于 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETCore\v4.5目录下。
- 修改项目属性目标框架选择.NET Framework 4.5或以上,若不存在,请转至MSDN下载上述框架。
以上就是解决方案,再代码添加
using Windows.Devices.Bluetooth;
就可以使用 Windows.Devices.Bluetooth程序集编程。
若有问题请咨询QQ1544780964
方法二:
尝试直接下载这些文件(提取码m7ty)并引用,在.csproj文件PropertyGroup结点下添加
<TargetPlatformVersion>8.0</TargetPlatformVersion>
并保存,就可以直接调用Windows.Devices.Bluetooth了
欢迎小伙伴们在评论区交流探讨