我有一个在Unity3D项目中使用的类库,它使用Json序列化/反序列化。自从官方的NewtonSoft。Json NuGet与Unity不能很好地协同工作,我使用的是Json。网Unity3D(9.0.0.0版),迄今为止一直运行良好。
现在我正在建立另一个项目,其中一个主要组件依赖于NewtonSoft。Json(11.0.0.0节)。这个新项目还需要引用前面提到的类库。这个编译没有问题,但是当类库试图使用Json函数时,它找不到所需的Json库,我得到了一个错误。
System.IO.FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' ---> System.IO.FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'
由于两个Json库版本具有不同的PublicKeyToken,绑定重定向将无法工作。我一直试图找到这个问题的解决方案,但没有成功,但需要一些投入。以下是我提出的可能选项:
-
防止主项目的Json库传播到
不知怎的引用了这个项目。如果我运行的测试版本
project根本没有Json库,子项目可以工作
好的
-
破解绑定重定向以接受不同版本的不同dll:s。似乎不可能。
-
在主项目中安装两个版本,并在适当的情况下使用。似乎也不是第一个。
任何见解都将不胜感激——我已经在这个问题上浪费了太多时间。
Here's a small test solution that demonstrates the problem