2017-10-13 4 views
0

lorsque je débogue, j'ai fait face à une exception au-dessous du point.Impossible de charger le fichier ou l'assemblage 'Newtonsoft.Json' ou l'une de ses dépendances?

var connection = new HubConnection("http://localhost:8080/"); 

Exception: 
Could not load file or assembly 'Newtonsoft.Json, Version=6.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) 

j'avais créé un dossier que je jetai mon serverHub.exe (console App) et un module client qui est de WinForms. Du côté du client quand j'ai essayé d'appeler l'étape ci-dessus mentionné, j'ai eu l'exception.

D'abord j'ai installé Newtonsoft.Json de la version = 6.0.0.0, plus tard je l'ai mis à jour vers la version = 9.0.1. Maintenant, j'ai copié (Microsoft.Asp.Net.Client.dll, Newtonsoft.Json.dll along with other dll's required) de la DLL requis dans le dossier commun que j'avais créé. C'est quand j'ai commencé à faire face à l'exception.

Maintenant les références (Newtonsoft.Json.dll, Microsoft.Asp.Net.Client.dll) dans mon projet font référence au dossier que j'avais nouvellement créé où j'ai jeté les dll copiés de l'emplacement "packages".

Encore une fois j'ai supprimé ces références et téléchargé les paquets Nuget à partir du gestionnaire de paquets (Microsoft.Asp.Net.Client.dll-version: 2.2.1 & Newtonsoft.Json.dll-9.0.1). et les références sont maintenant référencées à partir package emplacement. Maintenant j'ai essayé de construire mon application et maintenant ça fonctionne bien.

App.config (du client):

<?xml version="1.0" encoding="utf-8"?> 
<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-9.0.0.0" newVersion="9.0.0.0" /> 
     </dependentAssembly> 

    </assemblyBinding> 
    </runtime> 
</configuration> 

App.config (serveur):

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" /> 
    </dependentAssembly> 
    <dependentAssembly> 
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" /> 
    </dependentAssembly> 
</assemblyBinding> 

Si je commence référence à un autre endroit où je vais copier tous de la dll qui sont installés plutôt que d'un emplacement "Packages" par défaut dans le répertoire de la solution, je suis confronté à l'exception ci-dessus. Ne pouvons-nous faire de la dll de se référer à partir d'un emplacement différent plutôt que par défaut "packages" emplacement? Si oui, aidez-moi là où je me trompe.

Quelqu'un peut-il m'aider s'il vous plaît.

+0

Je ne comprends pas, dites-vous que cela fonctionne maintenant, mais vous voulez savoir pourquoi il n'a pas? –

+0

@ user3739842, j'ai édité ma question. Excusez-moi de ne pas avoir été clair. Je veux savoir pourquoi je reçois l'exception quand j'ai commencé à référencer les DLL à partir d'un emplacement différent plutôt que par défaut "packages" emplacement. – Siva

Répondre

0

Je voudrais essayer de changer la liaison rediriger vers < bindingRedirect ancienneversion = « 0.0.0.0-9.0.1.0 » newVersion = « 9.0.1.0 »/>

Si cela ne fonctionne pas essayer de vérifier par cet outil le nouvel emplacement où vous exécutez vos exécutables afin de voir ce qui est réellement manqué: https://stackoverflow.com/a/44251000/2819746