45 votes

Impossible de charger le fichier ou l'assemblage System.Net.Http version 4.1.1.0

Je suis en train de porter une dll Net Framework 4 vers Net Core. Lors du portage de mon projet de tests unitaires, j'obtiens une exception lors de l'exécution de certains tests spécifiques (pas tous).

System.IO.FileLoadException : Impossible de charger le fichier ou l'assemblage 'System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ou l'une de ses dépendances. La définition du manifeste de l'assemblage localisé ne correspond pas à la référence de l'assemblage. (Exception de HRESULT : 0x80131040)

Voici le project.json de ma dll

 {
  "version": "1.0.0-*",

  "dependencies": {
    "log4net": "2.0.7",
    "NETStandard.Library": "1.6.1",
    "Newtonsoft.Json": "9.0.1",
    "StackExchange.Redis": "1.2.1"
  },

  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    }
  }
}

Et voici Packages.config pour le projet de tests unitaires

<packages>
  <package id="Castle.Core" version="4.0.0" targetFramework="net462" />
  <package id="log4net" version="2.0.7" targetFramework="net462" />
  <package id="Microsoft.Win32.Primitives" version="4.0.1" targetFramework="net462" />
  <package id="Moq" version="4.7.1" targetFramework="net462" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net462" />
  <package id="StackExchange.Redis" version="1.2.1" targetFramework="net462" />
  <package id="System.Diagnostics.DiagnosticSource" version="4.0.0" targetFramework="net462" />
  <package id="System.IO" version="4.1.0" targetFramework="net462" />
  <package id="System.IO.FileSystem" version="4.0.1" targetFramework="net462" />
  <package id="System.IO.FileSystem.Primitives" version="4.0.1" targetFramework="net462" />
  <package id="System.IO.FileSystem.Watcher" version="4.0.0" targetFramework="net462" />
  <package id="System.Linq" version="4.1.0" targetFramework="net462" />
  <package id="System.Net.Http" version="4.1.1" targetFramework="net462" />
  <package id="System.Net.NameResolution" version="4.0.0" targetFramework="net462" />
  <package id="System.Runtime" version="4.1.0" targetFramework="net462" />
  <package id="System.Runtime.Extensions" version="4.1.0" targetFramework="net462" />
  <package id="System.Security.Cryptography.Algorithms" version="4.2.0" targetFramework="net462" />
  <package id="System.Security.Cryptography.Encoding" version="4.0.0" targetFramework="net462" />
  <package id="System.Security.Cryptography.Primitives" version="4.0.0" targetFramework="net462" />
  <package id="System.Security.Cryptography.X509Certificates" version="4.1.0" targetFramework="net462" />
  <package id="System.Text.RegularExpressions" version="4.1.0" targetFramework="net462" />
  <package id="System.Threading.Thread" version="4.0.0" targetFramework="net462" />
</packages>

0 votes

Essayez dotnet restore

0 votes

@J.Doe échoue toujours

0 votes

Vérifiez les redirections de liaison ou supprimez les références ajoutées par erreur. vérifiez également la consolidation de nuget.

42voto

Jawen Points 742

Je l'ai corrigé en mettant à jour System.Net.Http en 4.3.1.

2 votes

Retiré d'où ?

1 votes

Je n'ai pas eu à supprimer System.Diagnostics.DiagnosticSource, la simple mise à jour de System.Net.Http a résolu le problème pour moi !

2 votes

Mise à jour via Nuget (recherche de "http")

31voto

Jean Points 1536

J'ai obtenu le problème, et j'ai réalisé que c'était parce que j'avais deux références différentes. Une référence provenait de la bibliothèque de mon projet, et la seconde était une dépendance d'une bibliothèque standard .Net, et donc d'un paquet Nuget. Les étapes à résoudre étaient les suivantes :

  • Supprimez la référence à System.Net.Http (projet => ajouter une référence => supprimer la référence).
  • Conservez les paquets Nuget System.Net et System.Net.Http.
  • Exécuter Update-Package –reinstall System.Net.Http pour ramener la référence.

Maintenant, il fonctionne à nouveau :)

2 votes

J'ai eu ce problème, et ceci l'a résolu pour moi ! J'ai supprimé les références et réinstallé le paquet nuget à partir de la console. Merci !

0 votes

Une résolution parfaite du problème. Merci d'avoir fourni des étapes claires.

5voto

G2. Points 198

Mon problème était que mon service avait une assembly référencée qui avait une référence à une version plus récente de System.Net.Http. J'ai résolu le problème en mettant à jour System.Net.Http dans le service.

1 votes

Comment dois-je m'y prendre ? Le but d'un assemblage n'est-il pas que son contenu ne puisse pas être modifié ?

3voto

Jacob Gaiski Points 144

Le moyen le plus simple et le plus efficace de résoudre ce problème est de procéder à une redirection obligatoire.

Il suffit de spécifier l'ancienne version comme 0.0.0.0-5.0.0.0, et la nouvelle version comme 4.1.1.0.

Où 4.1.1.0 est votre version, par exemple.

2voto

Assil Points 176

J'ai eu ce problème, alors que j'avais 10 projets dépendant les uns des autres. J'ai résolu le problème en ajoutant la version demandée dans l'un des projets dont il était dépendant. Ce n'était pas nécessaire pour la compilation, mais il semble que l'ajouter a fixé la version dans les autres projets lors de la restauration. C'était donc le cas :

Impossible de charger le fichier ou l'assemblage 'System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ou l'une de ses dépendances. dépendances. Le système ne trouve pas le fichier spécifié.

Ensuite :

Impossible de charger le fichier ou l'assemblage 'System.Net.Http, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ou l'une de ses dépendances. dépendances. Le système ne trouve pas le fichier spécifié.

J'ai donc ajouté "System.Net.Http" : "4.1.1", dans un projet..

Cela a réglé le problème tout en restaurant 8 projets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X