Hololens 2 和 Microsoft.MixedReality.QR 缺少方法异常
Posted
技术标签:
【中文标题】Hololens 2 和 Microsoft.MixedReality.QR 缺少方法异常【英文标题】:Missing method exception with Hololens 2 and Microsoft.MixedReality.QR 【发布时间】:2021-12-01 14:24:49 【问题描述】:我正在尝试通过创建一个统一项目、构建统一项目然后部署统一生成的解决方案来使用 Hololens 2 扫描 QR 码。
我已尝试遵循本指南:https://localjoost.github.io/Reading-QR-codes-with-an-MRTK2-Extension-Service/
每当运行 Microsoft.MixedReality.QR 的任何代码时,我都会收到 System.RuntimeType::GetGUID(System.Type, System.Byte[]) 的缺失方法异常
即使我只是通过以下行检查是否支持扫描二维码,也会发生异常:
QRCodeWatcher.IsSupported();
堆栈跟踪看起来有点像这样:
System.Reflection.TragetInvocationException: Exception has been thrown by the target of an invocation. ---> System.MissingMethodException:
System.RuntimeType::GetGUID(System.Type, System.Byte[])
at System.RuntimeType.get_GUID() [0x00000] in <00000000000000000000>:0
at WinRT.IObjectReference.As[T]()[0x00000] in <00000000000000000000>:0
at WinRT.ActivationFactory`1[T].As[I]() [0x00000] in <00000000000000000000>:0
at Microsoft.MixedReality.QR.QRCodeWatcher+Statics..ctor()[0x000000] in <00000000000000000000>:0
如果有帮助,我正在使用 Windows SDK 10.0.19041.0 和 Unity 2021.2.3f1
【问题讨论】:
【参考方案1】:不知道全息透镜,但是...
由于正在使用/预期的程序集版本不同,我已经多次看到这种情况。
一些更高级别的代码试图通过反射找到方法,但安装的程序集(至少是被发现的)是没有该方法的版本。 (这始终是基于反射的“绑定”的问题)。
所以,请检查所有版本是否兼容。
如果您最近升级了某些部分,则 VS/msbuild 可能遗留了一些旧版本。 (它在 obj 文件夹下“缓存” dll 作为构建优化。但有时会因为识别出需要更新的东西而绊倒)。
在 powershell 中,从解决方案文件夹的根目录尝试 ls -include obj,bin -recurse | rm -recurse -force
。
这将删除您的解决方案下的所有“bin”和“obj”文件夹。然后重建。
这是一根又大又丑的棍子,但是 在这些情况下,这通常对我有用。
【讨论】:
感谢您的意见。这是一个最近创建的项目,所以我觉得不太可能,但我明天会试一试。 很遗憾,这不适用于这种情况。 值得一试。可能值得检查您的项目是否针对正确的运行时等 GetGuid 在 c++ 层中的位置很低,并且似乎针对不同的环境以不同的方式实现。在这一点上,我的天赋用完了......祝你好运【参考方案2】:我已经克隆了指南提供的样本;它工作正常(使用 Unity2019.4.33f1)。我注意到本指南将项目 XR 管道设置为 Legacy XR,而 Legacy XR 在 Unity 2019 中已弃用并在 Unity 2020 中删除,您应该将 Unity 回滚到 2019 LTS:https://unity3d.com/unity/qa/lts-releases?version=2019.4
【讨论】:
感谢您的建议。我曾经在使用早期版本的 unity 时遇到过可怕的闪烁问题(与 this 非常相似),所以我对降级犹豫不决,但如果一切都失败了,我会试一试。 供您参考,Unity2020.3.21 及更高版本中的闪烁问题已在 2020.3.24f1 LTS 补丁更新中修复,请参阅forum.unity.com/threads/…以上是关于Hololens 2 和 Microsoft.MixedReality.QR 缺少方法异常的主要内容,如果未能解决你的问题,请参考以下文章
Hololens - UserConsentVerifier 不适用于 Hololens 第一代
hololens 2 和计算机上的统一应用程序之间的 TCP 连接只能工作一次
如何在 Unity 中获取 HoloLens 2 和 MRTK 的眼动追踪数据?