Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

375
Views
No se pudo cargar el archivo o ensamblaje 'System.ComponentModel.Annotations, Version=4.1.0.0

Tengo una biblioteca de clases .NET Standard 1.4 que hace referencia al paquete NuGet System.ComponentModel.Annotations (4.3.0).

Luego hago referencia a esta biblioteca de clases de un proyecto de prueba de .NET Framework 4.6.2. Se construye bien, pero en tiempo de ejecución me sale el siguiente error:

System.IO.FileLoadException ocurrió HResult=0x80131040
Mensaje = No se pudo cargar el archivo o ensamblado 'System.ComponentModel.Annotations, Version=4.1.0.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)

Intenté agregar una referencia al paquete NuGet System.ComponentModel.Annotations (4.3.0) del proyecto net462, pero eso no supuso ninguna diferencia.

Intenté agregar una referencia a la biblioteca .NET Standard del proyecto net462, pero aún no tuve suerte.

¿Me estoy perdiendo de algo? ¿Es este un error conocido? Si es así, ¿hay alguna solución?

¡Cualquier ayuda es muy apreciada!

over 4 years ago · Santiago Trujillo
14 answers
Answer question

0

En muchos casos, esto se puede resolver agregando el siguiente código al archivo csproj de su proyecto de prueba:

 <PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup>

Esto obliga al proceso de compilación a crear un archivo .dll.config en el directorio de salida con las redirecciones de enlace necesarias.

La razón es que los proyectos de prueba csproj "clásicos" son verdaderas "bibliotecas" y no se considera que necesiten redireccionamientos vinculantes de forma predeterminada. Pero ejecutar pruebas unitarias requiere esto. Esto solo se convierte en un problema si los proyectos a los que se hace referencia necesitan esos redireccionamientos para funcionar correctamente. Esto suele funcionar cuando se instalan directamente todos los paquetes de NuGet que usa la biblioteca a la que se hace referencia, pero no es así con el nuevo estilo PackageReference de los paquetes de NuGet.

Vea otros casos en los que esta solución ha ayudado:

No se pudo cargar el archivo o ensamblar Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.1.0.0

Cuando se usa .Net Standard 1.4 en una biblioteca y .Net Framework 4.6.1 en una aplicación, no se puede cargar el archivo System.IO.FileSystem, Version=4.0.1.0

over 4 years ago · Santiago Trujillo Report

0

En mi caso, estaba usando 4.0.0, así que lo arreglé agregando

 <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="4.1.0.0" newVersion="4.0.0.0"/> </dependentAssembly>

Adáptese a su versión requerida.

over 4 years ago · Santiago Trujillo Report

0

Tuve un problema similar pero ninguna de las respuestas anteriores me ayudó. Resulta que la solución es muy fácil, acabo de ejecutar el siguiente comando en el Administrador de paquetes:

Install-Package System.ComponentModel.Annotations -Versión 4.1.0

over 4 years ago · Santiago Trujillo Report

0

Lo hice funcionar usando la redirección de ensamblaje como se describe en: simplemente invoque FunctionsAssemblyResolver.RedirectAssembly() al comienzo de su programa. https://stackoverflow.com/a/50776946/2705777

 using System.Reflection; using System.Diagnostics; using System.Linq; public class FunctionsAssemblyResolver { public static void RedirectAssembly() { var list = AppDomain.CurrentDomain.GetAssemblies().OrderByDescending(a => a.FullName).Select(a => a.FullName).ToList(); AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; } private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) { var requestedAssembly = new AssemblyName(args.Name); Assembly assembly = null; AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve; try { assembly = Assembly.Load(requestedAssembly.Name); } catch (Exception ex) { } AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; return assembly; } }
over 4 years ago · Santiago Trujillo Report

0

Para mí, ninguna de las otras soluciones funcionó.

Resolví esto agregando manualmente una referencia a System.ComponentModel.DataAnnotations (a través de proyecto -> Referencias), en lugar de dejar que Visual Studio lo maneje a través del menú de solución rápida de la bombilla.

over 4 years ago · Santiago Trujillo Report

0

En realidad, esto es mucho más fácil que piratear archivos de configuración. Hackear archivos de configuración da un poco de miedo; ¡puede que te pierdas algo! Deje que el IDE lo haga por usted, ¡con suerte lo hará bien!

  1. Solución de clic derecho
  2. Haga clic en Administrar paquetes Nuget para la solución...
  3. Buscar System.ComponentModel.Annotations
  4. Ponga una casilla de verificación en sus proyectos de prueba y haga clic en Instalar

ingrese la descripción de la imagen aquí

¡Ahora se ejecutan mis pruebas unitarias! ¡Increíble!

Todavía es posible que necesite usar la respuesta de @Guillaume si tiene archivos app.config en su proyecto de prueba de unidad.

over 4 years ago · Santiago Trujillo Report

0

Agregue el ensamblaje dependentAssembly a continuación en su archivo web.Config o app.Config

La siguiente configuración se agrega en la configuration --> tiempo de runtime --> nodo de enlace de assemblyBinding en:

 <dependentAssembly> <assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" /> </dependentAssembly>
over 4 years ago · Santiago Trujillo Report

0

Crédito a @MiguelSlv ya que mi caso tenía que ver con el uso de una redirección de enlace adecuada. Sin embargo, asegúrese de que cuando implemente su aplicación en versión beta o producción, la redirección de enlace esté en su web.config implementado (no solo en su entorno de desarrollo). Terminé usando la siguiente redirección de enlace para el paquete NuGet System.ComponentModel.Annotations 5.0.0 que se usa en un proyecto de clase .NET Standard 2.0 que consume mi aplicación web **ASP.NET MVC (.NET Framework 4.7.1 )

 <dependentAssembly> <assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" /> </dependentAssembly>

Tenga en cuenta que 4.2.1.0 es la versión que se muestra en propiedades, mientras que 5.0.0 es la versión del paquete NuGet.

over 4 years ago · Santiago Trujillo Report

0

Se corrigió esto instalando la misma versión de System.ComponentModel.Annotations que quiero usar en todos los proyectos de la solución.

over 4 years ago · Santiago Trujillo Report

0

Usuarios de Linux

Es posible que deba instalar mono si está intentando generar un archivo .exe desde el sistema Linux.

Vea este enlace sobre cómo instalar mono en ubuntu 20.04

over 4 years ago · Santiago Trujillo Report

0

También para el error de la versión 4.2.0.0 , esto se solucionó para mí en web.config :

 <dependentAssembly> <assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.6.0" /> </dependentAssembly> </assemblyBinding>
over 4 years ago · Santiago Trujillo Report

0

Solucioné este error haciendo el comando Limpiar solución en Visual Studio 2019.

over 4 years ago · Santiago Trujillo Report

0

Esto suele suceder cuando Visual Studio no puede averiguar el enlace vinculante Redirect.

Lo más probable es que la causa sea que la versión del nugget no coincide con la versión de la biblioteca producida.

Para arreglar haz esto:

  1. Desde la consola de administración de paquetes, haga lo siguiente:

    Get-Project –All | Add-BindingRedirect

    para regenerar la configuración de assemblyBinding en el archivo de configuración

  2. Si no lo solucionó, agregue manualmente la redirección de enlace:

     <dependentAssembly> <assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-X" newVersion="Y" /> </dependentAssembly>

    donde:

    1. X es la versión que no se puede cargar, del mensaje de error
    2. Y es la versión en las referencias de su proyecto. Para obtenerlo, seleccione la biblioteca del nodo de referencias y busque la versión en el panel de propiedades .
over 4 years ago · Santiago Trujillo Report

0

Tengo este problema al implementar una función auxiliar que redirige el ensamblaje al principio (que se sugirió en esta respuesta ):

 public static class FunctionsAssemblyResolver { #region Public Methods public static void RedirectAssembly() { AppDomain.CurrentDomain.AssemblyResolve += ResolveAssemblyOnCurrentDomain; } #endregion Public Methods #region Private Methods private static Assembly ResolveAssemblyOnCurrentDomain(object sender, ResolveEventArgs args) { var requestedAssembly = new AssemblyName(args.Name); var assembly = default(Assembly); AppDomain.CurrentDomain.AssemblyResolve -= ResolveAssemblyOnCurrentDomain; try { assembly = Assembly.Load(requestedAssembly.Name); } catch { } AppDomain.CurrentDomain.AssemblyResolve += ResolveAssemblyOnCurrentDomain; return assembly; } #endregion Private Methods }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!