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>
Corrigé en mettant à jour System.Net.Http en 4.3.1
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:
System.Net.Http
(projet => add reference => supprimez la référence).Update-Package –reinstall System.Net.Http
pour ramener la référence.Maintenant cela fonctionne à nouveau. :)
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.
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.
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.
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.
Peut-être offtop, mais mon problème était que Azure ne supportait pas le dernier .NET Framework.