Estoy portando un dll de Net Framework 4 a Net Core. Al portar mi proyecto de pruebas unitarias, obtengo una excepción al ejecutar algunas pruebas específicas (no todas).
System.IO.FileLoadException: no se pudo cargar el archivo o ensamblado 'System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' o una de sus dependencias. La definición del manifiesto del ensamblado ubicado no coincide con la referencia del ensamblado. (Excepción de HRESULT: 0x80131040)
Este es el proyecto.json para mi 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" } } }Y este es Packages.config para el proyecto de pruebas unitarias.
<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>Se solucionó actualizando System.Net.Http a 4.3.1
Obtuve el problema y me di cuenta de que era porque tenía dos referencias diferentes. una referencia era de la biblioteca de mi proyecto y la segunda era una dependencia de una biblioteca .Net Standard y, por lo tanto, un paquete Nuget. Los pasos para resolver fueron los siguientes:
System.Net.Http (proyecto => agregar referencia => eliminar la referencia).Update-Package –reinstall System.Net.Http para recuperar la referencia.Ahora funciona de nuevo. :)
Vaya a app.config y elimine todas las líneas que hacen referencia a System.Net.Http.