2016-08-08 29 views
7

Korzystanie z interfejsów API od Docusign, Twilio i Auth0. Wszystkie 3 mają RestSharp.dll jako zależność.Błąd programu RestSharp, gdy udostępniany jest jako zależność i inny publicKeyTokens

Jeśli używam RestSharp.dll dołączona do opakowania Docusign, Docusign działa dobrze, ale Auth0 i Twillio dać błędy:

Nie można załadować pliku lub zestawu „RestSharp, Version = 104.1.0.0, Culture = neutral , TokenKluczaPublicznego = null”

Jeśli używam normalnego RestSharp.dll (Install-Package RestSharp), Twilio i Auth0 działać dobrze, ale pojawia się błąd przy użyciu DocuSign:

Nie można załadować pliku lub zestawu 'RestSharp, Version = 100.0.0.0, Culture = neutral, TokenKluczaPublicznego = 5xxxxxxxxxxxx'

Dodawanie wiążących przekierowań nie rozwiązuje problemu. Bez wiążących przekierowań pojawia się ten błąd w dzienniku:

Porównanie nazwy zespołu spowodowało niezgodność: MAJOR VERSION.

Jeśli ja używać wiązania przekierowanie:

porównując nazwę zespołu spowodowały niedopasowania: klucz publiczny token.

Binding kod przekierowania:

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

Odpowiedz

4

tymczasowo rozwiązać ten problem przez zmianę nazwy RestSharp.dll, który został dołączony do pakietu DocuSign do „RestSharpDocusign.dll” i skopiowany że w moim projekcie.

Zmodyfikowałem powiązania zespołu, tak aby po wywołaniu wersji 100.0.0.0 załadowano specjalny plik "RestSharpDocusign.dll" z żądanym publicznym kluczem klucza Docusign. Cokolwiek innego użyłoby standardowego pliku RestSharp.dll z pustym kluczem publicKeyToken.

<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

Wydaje się trochę szalony, że na tym etapie gry jesteśmy zmuszeni grać w te gry prosto z biblioteki DLL z lat 90-tych. –

+1

Mówisz mi! Na szczęście interfejs API DocuSign jest otwarty, więc mogłem zaktualizować program RestSharp i ponownie skompilować bibliotekę DLL. Kiedy dodałem to do mojego projektu, wszystko działało dobrze. –