【发布时间】:2019-01-01 10:12:32
【问题描述】:
更新 我现在有理由相信您不能在 Enterprise LTSB 上使用 Windows Creator,因为版本不够高,无法更新!如果有人可以确认这一点并说明我应该如何开发蓝牙应用程序,因为我可以使用 Creator,那将不胜感激。
“找不到 Windows 运行时类型'Windows.Devices.Bluetooth.GenericAttributeProfile.GattDeviceServicesResult'”
我在我的开发人员机器上开发了一些示例代码,以通过 C#/.Net 中的 BLE(蓝牙低功耗)进行通信。当我将此发布文件夹传输到另一台机器并运行程序时,当我尝试启动 BLE 通信时收到上述消息。我猜我缺少一些关键库/dll(或 .NETCore 或 .Net Framework),但是什么?我已经搜索过,但找不到答案。
一个可能有用的线索(或可能不相关)是,在我的项目中,我在目录 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETCore\v4 中有对 System.Runtime.WindowsRuntime 的引用。 5.1\System.Runtime.WindowsRuntime.dll 另一台机器没有v4.5.1,只有v4.5。但是,当我尝试安装 v4.5.1 时,我被告知我已经有了更新的版本!也许有人可以告诉我如何在机器上获取 .netcore v4.5.1?
谢谢, 戴夫
更多信息。 在原始项目中,有一个引用“Windows”,路径为 C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.17134.0\Windows.winmd 如果您在此使用对象浏览器,您将看到 Windows.Devices.Bluetooth.GenericAttributeProfile.GattDeviceServicesResult 这个相同的文件(相同的版本)也在我试图让我的代码运行的系统上。不知道为什么它在运行时没有“看到”它。
显然,其他人也遇到过这个问题。见:Bluetooth LE GattDeviceServicesResult TypeLoadException from WPF application
基于研究的更多信息 我在生产机器上安装了 Visual Studio,认为这将消除我的开发机器和生产机器之间的一个差异。仍然没有运气。但是,我要指出,剩下的区别之一是我的开发人员机器装有 Windows 10 Pro。生产机器(平板电脑)具有 Windows 10 Enterprise 2016 LTSB
【问题讨论】:
-
您似乎正试图在 .NET Framework 应用程序中使用 UWP 命名空间,docs.microsoft.com/en-us/uwp/api/windows.devices.bluetooth 您应该只在 UWP 应用程序中使用它,例如示例项目 github.com/Microsoft/Windows-universal-samples/tree/master/…
-
莱克斯。你是对的。我在 WPF 应用程序中使用了一些 UWP 的东西。但是,我已经在我的开发机器上成功地完成了它。我只需要让应用程序在生产机器上运行。我听说您可以将通用应用程序库用于常规 WPF 应用程序。如果需要,我会找到参考资料。感谢收看!
-
我不知道你能找到什么样的参考资料。 blogs.msdn.microsoft.com/dotnet/2018/05/07/… 显然,Microsoft 只计划授予对 .NET Core 3.0 和 .NET Framework 4.8 中完整 Windows 10 API 的访问权限。
-
除非微软说它是支持,否则我不会相信任何其他的。
-
您链接的答案是“请注意,#2 版本取决于您正在使用的 .Net 版本。”,在 UWP 中是 GAC(或者现在可能将它与 exe 捆绑在一起?)处理查找特定安装的兼容 dll(在 prod 机器上),在您的情况下,您需要明确知道该位置是否可以工作。您也许可以将其复制到
/lib/文件夹并更可靠地从那里导入,但这也可能会导致问题
标签: .net bluetooth-lowenergy lib