是否有可能解决这种装配不匹配的情况?或者这是无法解决的?

Is it possible to resolve this assembly mismatch situation? Or is this unresolvable?

在我的程序集中我想使用

SomeLibrary.dll -> Newtonsoft.Json, Version 10.0.0.0

我通过路径引用 SomeLibrary.dll。那我还有

Microsoft.NET.Sdk.Functions -> Newtonsoft.Json, Version 9.0.0.1

其中这些都被 Nuget 引用。当我这样做时,这会导致版本不匹配

JsonConvert.DeserializeObject<SomeTypeFromSomeLibrary>(json)

我能做些什么吗? :(

此类问题通常可以通过 binding redirect 解决。

对于 JSON.NET,它可能看起来像这样:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>