天天看點

未能添加對Windows.Devices.Bluetooth.dll的引用。請確定此檔案可通路并且是一個有效的程式集或COM元件

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的引用。請確定此檔案可通路并且是一個有效的程式集或COM元件
  • 再嘗試将此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.解決方案

總之嘗試了多種方法後仍然無果,無奈下通過海量閱讀論壇和博文總結出以下行之有效的辦法。

先曬圖為證:

未能添加對Windows.Devices.Bluetooth.dll的引用。請確定此檔案可通路并且是一個有效的程式集或COM元件
未能添加對Windows.Devices.Bluetooth.dll的引用。請確定此檔案可通路并且是一個有效的程式集或COM元件

解決步驟:

  1. 解決方案管理器中右鍵項目選解除安裝項目,再右鍵點編輯.csproj。在檔案裡PropertyGroup節點下添加以下代碼并儲存:
  1. 添加如圖引用:
    未能添加對Windows.Devices.Bluetooth.dll的引用。請確定此檔案可通路并且是一個有效的程式集或COM元件

    如果沒有,此引用存在于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.Devices.Bluetooth.dll的引用。請確定此檔案可通路并且是一個有效的程式集或COM元件
    你很可能未安裝用于維護面向Windows 8的應用商店應用的工具,勾選後靜等安裝完畢。
  2. 添加WIndow.device.winmd引用(非必須)如果不存在可能存在于C:\WINDOWS\System32\WinMetadata\Windows.Devices.winmd,如果不存在請直接下載下傳(提取碼017m)後引用(親測有效)
  3. 添加System.Runtime.WindowsRuntime.dll引用,此位于 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETCore\v4.5目錄下。
  4. 修改項目屬性目标架構選擇.NET Framework 4.5或以上,若不存在,請轉至MSDN下載下傳上述架構。

    以上就是解決方案,再代碼添加

    using Windows.Devices.Bluetooth;

    就可以使用 Windows.Devices.Bluetooth程式集程式設計。

    若有問題請咨詢QQ1544780964

方法二:

嘗試直接下載下傳這些檔案(提取碼m7ty)并引用,在.csproj檔案PropertyGroup結點下添加

并儲存,就可以直接調用Windows.Devices.Bluetooth了

歡迎小夥伴們在評論區交流探讨

繼續閱讀