2016-08-08 44 views
7

Verwendung von APIs von Docusign, Twilio und Auth0. Alle 3 haben RestSharp.dll als Abhängigkeit.RestSharp Fehler bei der Freigabe als Abhängigkeit und andere publicKeyTokens

Wenn ich die RestSharp.dll mit dem Docusign Paket enthalten, Docusign gut funktioniert, aber Auth0 und Twillio Fehler geben:

konnte nicht Datei oder Assembly ‚RestSharp, Version = 104.1.0.0 laden, Culture = neutral PublicKeyToken = null‘

Wenn ich die normale RestSharp.dll (Install-Package RestSharp) verwenden, Twilio und Auth0 Arbeit in Ordnung, aber ich erhalte eine Fehlermeldung bei der Verwendung von DocuSign:

konnte nicht Datei oder Assembly laden 'RestSharp, Version = 100.0.0.0, Culture = neutral, PublicKeyToken = 5xxxxxxxxxxxx'

Bindung Umleitungen Hinzufügen das Problem nicht lösen. Ohne verbindliche Weiterleitungen erhalte ich diesen Fehler im Protokoll:

Vergleichen des Assemblynamens führte zu der Mismatch: MAJOR VERSION.

Wenn ich eine Bindung Umleitung tun verwenden:

die Assemblierung-Name in der Mismatch geführt Vergleich: PUBLIC KEY TOKEN.

Binding Redirect Code:

<dependentAssembly> 
    <assemblyIdentity name="RestSharp" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-105.2.3.0" newVersion="105.2.3.0" /> 
</dependentAssembly> 

Antwort

4

Vorübergehend löste das Problem, indem die RestSharp.dll Umbenennung, die mit dem DocuSign Paket enthalten war auf "RestSharpDocusign.dll" und kopiert, dass in meinem Projekt.

Ich modifizierte die Assembly-Bindungen, so dass beim Aufruf von Version 100.0.0.0 die spezielle "RestSharpDocusign.dll" mit dem publicKeyToken Docusign geladen werden würde. Alles andere würde den Standard RestSharp.dll mit einem Null-publicKeyToken verwenden.

<dependentAssembly> 
    <assemblyIdentity name="RestSharp" publicKeyToken="null" culture="neutral" /> 
    <bindingRedirect oldVersion="100.0.0.1-105.2.3.0" newVersion="105.2.3.0" /> 
</dependentAssembly> 
<dependentAssembly> 
    <assemblyIdentity name="RestSharp" publicKeyToken="598062e77f915f75" culture="neutral" /> 
    <codeBase version="100.0.0.0" href="ult/RestSharpDocusign.dll" /> 
</dependentAssembly> 
+4

Scheint irgendwie nussig, dass in diesem Stadium des Spiels sind wir auf diese Spiele direkt aus den 90er DLL Hell reduziert. –

+1

Du sagst es mir! Glücklicherweise ist die DocuSign API geöffnet, so dass ich RestSharp aktualisieren und die DLL neu kompilieren konnte. Sobald ich das in mein Projekt eingefügt habe, hat alles funktioniert. –