Hololens 中的 DLL 与 IL2CPP 后端发生冲突

DLL conflict in Hololens with IL2CPP backend

我一直在 Hololens 上开发。该项目在 .NET 4.x 上,带有 IL2CPP,具有 API 兼容性 4.x。我使用的是 Unity 2018.3.6f。

我需要添加外部 DLL (IdentityClient.dll)

参考:IdentityModel NuGet Package

此 dll 依赖于 Newtonsoft.Json 和 System.Text.Encodings.Web。

经过大量工作,我现在可以使用 dll 部署我的应用程序,但是当我使用它们时,它会使我的应用程序崩溃。问题出在 Newtonsoft.Json.

由于IL2CPP使用AOT编译而newtonsoft使用反射,所以崩溃了。我已经用这个替换了 Newtonsoft.Json.dll https://assetstore.unity.com/packages/tools/input-management/json-net-for-unity-11347

我已经能够在我的代码中使用 Newtonsoft,但是 IdentityModel.dll 仍然引用旧的实现,即使我删除了它。所以它再次崩溃。我现在有点卡住了,我想知道你们中是否有人有解决方案!

我也在想我是不是也修不好:

  1. 分叉 IdentityModel 的 github 项目并进行调整
  2. 只需手动制作所有内容,而不是依赖 IdentityModel,但这可能需要一些时间。

此外,在 Unity 编辑器中一切正常,但在部署时崩溃。

最后还是决定自己实现de dll。大多数在 Hololens 上工作的人似乎都有类似的问题