visual studio net from framework convert c# .net .net-core porting .net-framework-version

c# - studio - No se pudo cargar el archivo o el ensamblaje System.Net.Http versión 4.1.1.0



net framework 4.7 visual studio (8)

Estoy portando un Net Framework 4 dll a Net Core. Al transferir 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 el ensamblaje ''System.Net.Http, Version = 4.1.1.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'' o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia del ensamblaje. (Excepción de HRESULT: 0x80131040)

Este es el project.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>


Conseguí el problema y me di cuenta de que era porque tenía dos referencias diferentes. una referencia era de mi biblioteca de proyectos, y la segunda era una dependencia de una biblioteca estándar de .Net, y por lo tanto un paquete de Nuget. Los pasos a resolver fueron los siguientes:

  • Eliminar la referencia a System.Net.Http (proyecto => agregar referencia => eliminar la referencia).
  • Mantener los paquetes System.Net y System.Net.Http Nuget
  • Ejecute Update-Package –reinstall System.Net.Http a Update-Package –reinstall System.Net.Http para recuperar la referencia.

Ahora funciona de nuevo. :)


Estoy de acuerdo con Jean. Elimine la referencia al ensamblaje y luego agregue una nueva referencia a través de Nuget. La versión real de System.Net.Http no importa. Después de eliminar la referencia al ensamblaje, todo funciona bien, versión 4.3.2


La forma mejor y más fácil de solucionar este problema es con un redireccionamiento de enlace.

Simplemente especifique la versión antigua como 0.0.0.0-5.0.0.0, y la versión nueva como 4.1.1.0

Donde 4.1.1.0 es tu versión, por ejemplo.


Mi problema fue que mi servicio tenía un ensamblado referenciado que tenía una referencia a una versión más reciente de System.Net.Http. He resuelto el problema actualizando System.Net.Http en el servicio.


Quizás fuera, pero mi problema era que Azure no era compatible con el último .NET Framework.


Se corrigió al actualizar System.Net.Http a 4.3.1


Tuve este problema, mientras que tenía 10 proyectos dependiendo uno del otro. Lo arreglé agregando la versión que solicitó en uno de los proyectos que dependía. No fue necesario para la compilación, pero parece que al agregarlo, se corrigió la versión en otros proyectos durante la restauración. Y asi fue:

No se pudo cargar el archivo o conjunto ''System.Net.Http, Version = 4.1.1.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'' o una de sus dependencias. El sistema no puede encontrar el archivo especificado.

Entonces:

No se pudo cargar el archivo o conjunto ''System.Net.Http, Version = 4.1.1.1, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'' o una de sus dependencias. El sistema no puede encontrar el archivo especificado.

Así que agregué "System.Net.Http": "4.1.1", en un proyecto ..

Eso solucionó el problema mientras restauraba 8 proyectos.


Y ahora, la solución para programadores junior ... compruebe que está realizando las actualizaciones sugeridas por Jawen y Jean en Nuget Package Manager en los lugares correctos también. Recuerde que puede tener una solución con su proyecto y un proyecto de prueba, y por lo tanto, vuelva a verificar ambos conjuntos de Referencias.