Рабочий стол C# — ссылка на Windows.Devices

Я пытаюсь создать классическое настольное приложение для Windows 10 на С#, которое сможет общаться с устройствами BLE. Я следовал инструкциям (Bluetooth 4.0 ( с низким энергопотреблением) API для приложения C# для рабочего стола Windows) и добавил тег в файл проекта

<TargetPlatformVersion>10.0.10156</TargetPlatformVersion>

и перезагрузил проект. Мне предоставлен доступ только к пространству имен Windows: диалоговое окно ссылок

Я не знаю, что я делал в одном из своих тестов, но как только этот список был заполнен множеством других пространств имен, у меня появилась возможность проверить пространство имен Windows.Devices, которое необходимо для моего проекта. Теперь я могу добавить Windows.Devices через опцию Recent, но не могу добавить какое-либо другое пространство имен...

Ребята, вы знаете, что мне делать, чтобы получить доступ к списку всех пространств имен Windows.xy?


person matevzb    schedule 28.05.2016    source источник
comment
Вы, вероятно, использовали более правильную версию платформы в том другом проекте. 10.0.10156 — номер бета-версии. Правильнее будет 10.0.10240 (первая поставляемая версия) или 10.0.10586 (текущая версия). На компьютере должна быть установлена ​​соответствующая версия SDK. Посмотрите в каталоге C:\Program Files (x86)\Windows Kits\10\Include.   -  person Hans Passant    schedule 28.05.2016
comment
Пробовал с 10.0.10240, 10.0.10240.0 10.0.10586 и ничего... в списке появляется только Windows. Версия 255.255.255.255 вообще подойдет?   -  person matevzb    schedule 29.05.2016
comment
Обновление. Я создал новый проект и добавил C:\Program Files (x86)\Windows Kits\10\UnionMetadata\Windows.winmd и C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4. 5\System.Runtime.WindowsRuntime.dll позволил мне включить пространство имен Windows.Devices без выбора Windows.Device в диалоговом окне «Ссылки».   -  person matevzb    schedule 29.05.2016
comment
Это сработало и для меня - добавьте это как ответ;)   -  person Ivan Temchenko    schedule 23.11.2017
comment
У меня тоже сработало через 2 года после публикации.   -  person glihm    schedule 25.09.2019


Ответы (3)


Чтобы получить доступ к Windows.Devices и другим WinRT API из кода .NET Framework,

  1. Добавьте пакет NuGet Microsoft.Windows.SDK.Contracts в проект.
  2. Настройте проект для поддержки ссылок на пакеты (щелкните правой кнопкой мыши packages.config, выберите Migrate packages.config to PackageReference...)
person Carsten Hansen    schedule 17.06.2020

Из комментария автора ОП:

Обновление. Я создал новый проект и добавил C:\Program Files (x86)\Windows Kits\10\UnionMetadata\Windows.winmd и C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETCore\v4.5 \System.Runtime.WindowsRuntime.dll позволил мне включить пространство имен Windows.Devices, не выбирая Windows.Device в диалоговом окне «Ссылки».

Это сработало для многих из нас.

person glihm    schedule 25.09.2019

Теперь существует пакет Windows.SDK.Contracts NuGet, который помогает с Эта проблема. Я не смог добавить вышеуказанные библиотеки DLL, но пакет nuget сработал.

Пакет WinRT API для Windows 10 позволяет добавить поддержку новейших API-интерфейсов среды выполнения Windows в библиотеки и приложения .NET Framework 4.5+ и .NET Core 3.0+.

Этот пакет включает все поддерживаемые API-интерфейсы среды выполнения Windows до версии Windows 10 1903.

person Macke    schedule 27.02.2020
comment
Спасибо за чаевые. Я видел это как требование в нескольких проектах. теперь точно знаю для чего. очень полезно. - person michael g; 12.02.2021