web-dev-qa-db-fra.com

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

Je porte une dll Net Framework 4 sur Net Core . Lors du portage de mon projet de tests unitaires, je reçois une exception lors de l'exécution de tests spécifiques (pas tous).

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

C'est le project.json pour 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 ceci est 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>
27
Jawen

Corrigé en mettant à jour System.Net.Http en 4.3.1

31
Jawen

J'ai eu le problème et je me suis rendu compte que c’est parce que j’avais deux références différentes. Les étapes à résoudre sont les suivantes:

  • Supprimez la référence à System.Net.Http (projet => add reference => supprimez la référence).
  • Conservez les packages System.Net et System.Net.Http Nuget 
  • Exécutez Update-Package –reinstall System.Net.Http pour ramener la référence.

Maintenant cela fonctionne à nouveau. :) 

16
Jean

Mon problème était que mon service avait un assembly référencé qui faisait 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.

3
Grigory Bushuev

J'ai eu ce problème alors que j'avais 10 projets dépendants les uns des autres ..__ J'ai corrigé ce problème en ajoutant la version demandée dans l'un des projets dépendant de . il semble que l'ajouter, corrige la version dans d'autres projets lors de la restauration de . C'était donc:

Impossible de charger le fichier ou l'assembly 'System.Net.Http, Version = 4.1.1.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a 'ou l'un de ses dépendances. Le système ne peut pas trouver le fichier spécifié.

Ensuite:

Impossible de charger le fichier ou l'assembly 'System.Net.Http, Version = 4.1.1.1, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a 'ou l'un de ses dépendances. Le système ne peut pas trouver le fichier spécifié.

Alors j'ai ajouté "System.Net.Http": "4.1.1", Dans un projet ..

Cela a en fait corrigé le problème pendant la restauration de 8 projets.

1
Assil

Le moyen le plus simple et le plus simple de résoudre ce problème consiste à utiliser une redirection de liaison.

Spécifiez simplement oldVersion comme 0.0.0.0-5.0.0.0 et newVersion comme 4.1.1.0.

Où 4.1.1.0 est votre version, par exemple.

1
Jacob Gaiski

Je suis d'accord avec Jean. Supprimez la référence à Assembly, puis ajoutez une nouvelle référence via Nuget! La version actuelle de System.Net.Http n'a pas d'importance . Après avoir supprimé la référence à Assembly, tout fonctionne correctement, version 4.3.2

Et maintenant, la solution de programmeur junior ... vérifiez que vous apportez les mises à jour suggérées par Jawen et Jean dans Nuget Package Manager aux endroits appropriés. N'oubliez pas que vous pouvez avoir une solution avec votre projet et un projet de test. Vérifiez donc deux fois de mettre à jour les deux ensembles de références.

0
Brian H

Peut-être offtop, mais mon problème était que Azure ne supportait pas le dernier .NET Framework.

0
Jerry Smith