Binding Redirect for a dependency dll

83 Views Asked by At

i have a project, that uses GodSharp.Opc.Ua.Client. This nuget package depends on OPCFoundation.Netstandart.Opc.Ua.Core, which in turn depends on Newtonsoft v.13.0.3. My project has to be integrated in a larger project as dll. That larger project depends on Newtonsoft.Json v.12.0.3 and can absolutely not be updated at this point. As i understand it, i should be able to solve this with a binding redirect, as soon as come to a point where anything from Opc.Ua.Core is used, i get the exception that

        +       e   {"Die Datei oder Assembly \"Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed\" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.":"Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed"} System.Exception {System.IO.FileNotFoundException}

My binding redirect looks like this:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
    </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      
      <dependentAssembly>
        <assemblyIdentity name="Opc.Ua.Client" publicKeyToken="bfa7a73c5cf4b6e8" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.372.0" newVersion="1.5.372.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Opc.Ua.Configuration" publicKeyToken="bfa7a73c5cf4b6e8" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.372.0" newVersion="1.5.372.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Opc.Ua.Security.Certificates" publicKeyToken="bfa7a73c5cf4b6e8" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.373.0" newVersion="1.5.373.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-13.0.3.0" newVersion="12.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Opc.Ua.Core" publicKeyToken="bfa7a73c5cf4b6e8" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.4.372.0" newVersion="1.4.372.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.4" newVersion="6.0.0.4" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

I don't understand what i am doing wrong. Please help.

As sugested by J.Memisevic i regenerated my binding redirects and that solved the conflict with Newtonsoft.Json versions.

Now i get another error, but only when i integrate my usercontrol in an other project.

System.IO.FileLoadException: "Die Datei oder Assembly "System.Memory, 
Version=4.0.1.1, Culture=neutral, 
PublicKeyToken=cc7b13ffcd2ddd51" oder eine Abhängigkeit davon wurde nicht gefunden. 
Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. 
(Ausnahme von HRESULT: 0x80131040)"

System.IO.FileLoadException: "Die Datei oder Assembly "System.Memory, 
Version=4.0.1.1, Culture=neutral, 
PublicKeyToken=cc7b13ffcd2ddd51" oder eine Abhängigkeit davon wurde nicht gefunden. 
Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. 
(Ausnahme von HRESULT: 0x80131040)"

System.IO.FileLoadException: "Die Datei oder Assembly "System.Memory, Version=4.0.1.1, 
Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" oder eine Abhängigkeit davon wurde nicht gefunden. 
Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. 
(Ausnahme von HRESULT: 0x80131040)"

System.IO.FileLoadException: "Die Datei oder Assembly "System.Memory, Version=4.0.1.1, 
Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" oder eine Abhängigkeit davon wurde nicht gefunden. 
Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. 
(Ausnahme von HRESULT: 0x80131040)"

System.IO.FileLoadException: "Die Datei oder Assembly "System.Memory, Version=4.0.1.1, 
Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" oder eine Abhängigkeit davon wurde nicht gefunden. 
Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. 
(Ausnahme von HRESULT: 0x80131040)"

System.IO.FileLoadException: "Die Datei oder Assembly "System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, 
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" oder eine Abhängigkeit davon wurde nicht gefunden. 
Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. 
(Ausnahme von HRESULT: 0x80131040)"

System.IO.FileLoadException: "Die Datei oder Assembly "System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, 
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" oder eine Abhängigkeit davon wurde nicht gefunden. 
Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. 
(Ausnahme von HRESULT: 0x80131040)"

Die Datei oder Assembly "System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, 
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" oder eine Abhängigkeit davon wurde nicht gefunden. 
Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. 
(Ausnahme von HRESULT: 0x80131040)

I'm sorry that this is in german.

The error occures the first time i use an element from GodSharp.Opc.Ua.Client

When i put my usercontrol inside a simple window, this error does not occure. I removed System.Memory and System.Runtime.CompilerServices.Unsafe via nuget package manager from my project. The error still occurs.

0

There are 0 best solutions below