Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

376
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

0

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

over 4 years ago · Santiago Trujillo Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda