none
La definición del manifiesto del ensamblado no coincide con la referencia al ensamblado RRS feed

  • Pregunta

  • Contexto:

    Al iniciar mi proyecto principal arrojó el error al intentar cargar una dll de otro proyecto (llamémosle componentes), esto ocurrió sin razón aparente, el proyecto componentes no ha sido modificado solo fue recompilado, cosa que ya he hecho antes sin problemas; ante alguna modificación en el proyecto componente, recompilar el proyecto componentes y luego el principal.

    Esta vez volví a recompilar los proyectos, compilan sin problema, pero arroja este error al momento de intentar iniciar la aplicación, luego de verificar los detalles del error pude encontrar en el archivo de configuración de la aplicación un bindingredirect (del cual no me había percatado de su existencia) que causa que se busque una versión diferente a la versión actual, si elimino esto del app.config el proyecto inicia sin problemas.

    Problema:

    Revise versiones anteriores del sistema y este archivo de configuración siempre ha tenido este bindingredirect específico para el ensamblado del proyecto componentes, pero nunca había funcionado, pues nunca había enviado error sobre que no concuerda la versión del manifiesto con el ensamblado, en otras palabras nunca había funcionado, pero de repente hoy si se ejecuta, alguien ha pasado por esto?, hay algo que se me escapa que pudo cambiar para que ahora el bindingredirect se ejecute? todos los proyectos son compilados para la versión 3.5 de .net

    Adjunto sección con bindingredirect del app.config

     <!-- Habilita el debug just-in-time. -->
      <system.windows.forms jitDebugging="true" />
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="Componentes" publicKeyToken="BB48DC83EB7CD949" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-1.0.1.17726" newVersion="1.0.1.17261" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>

    Me di cuenta del bindingredirect, al revisar el FusionLog del InnerException:

    === Información de estado anterior al enlace ===
    LOG: Usuario = ymora
    LOG: DisplayName = Componentes, Version=1.0.1.17265, Culture=neutral, PublicKeyToken=bb48dc83eb7cd949
     (Fully-specified)
    LOG: Appbase = file:///E:/Yerald Mora/Documents/SISTEMAS/Principal/bin/
    LOG: PrivatePath inicial = NULL
    Ensamblado de llamada : Principal, Version=1.0.1.27092, Culture=neutral, PublicKeyToken=c078d737fbb55d54.
    ===
    LOG: Este enlace empieza en el contexto de carga default.
    LOG: Utilización del archivo de configuración de la aplicación: E:\Yerald Mora\Documents\SISTEMAS\Principal\bin\Principal.vshost.exe.config
    LOG: Utilizando el archivo de configuración del equipo en C:\Windows\Microsoft.NET\Framework64\v2.0.50727\config\machine.config.
    LOG: Redirección detectada en el archivo de configuración de aplicaciones: 1.0.1.17265 se redirigió a 1.0.1.17261.
    LOG: Referencia posterior a la directiva: Componentes, Version=1.0.1.17261, Culture=neutral, PublicKeyToken=bb48dc83eb7cd949
    LOG: Ya se detectó el mismo enlace, que generó un error hr = 0x80131040.
    




    • Editado Yerald Mora miércoles, 31 de marzo de 2021 17:45
    miércoles, 31 de marzo de 2021 17:36

Respuestas

  • Tras realizar mas pruebas con versiones anteriores del sistema pude darme cuenta de que las versiones del ensamblado en el número de revisión comenzaban con un número mayor a 17 por ejemplo 1.0.1.18463, y ese era el problema cuando recompilé el proyecto, visual studio generó la versión  1.0.1.17265 (el número de revisión está establecido para generarse automáticamente, esto se puede verificar en el archivo AssemblyInfo.vb del proyecto), en el archivo de configuración se establecía que si la versión que se desea cargar está en el rango de versiones 0.0.0.0 a 1.0.1.17726 entonces se intente cargar la versión 1.0.1.17261

     <bindingRedirect oldVersion="0.0.0.0-1.0.1.17726" newVersion="1.0.1.17261" />

    Por eso antes funcionaba bien porque la versión del ensamblado nunca estuvo en el rango, por casualidad la que generó visual studio ahora si se encontraba en el rango, haciendo que se redirigiera a la 1.0.1.17261 y generando el error de que el manifiesto del ensamblado no coincidía con la referencia.

    • Marcado como respuesta Yerald Mora miércoles, 31 de marzo de 2021 22:14
    • Desmarcado como respuesta Yerald Mora miércoles, 31 de marzo de 2021 22:22
    • Marcado como respuesta EricRRModerator jueves, 1 de abril de 2021 14:30
    miércoles, 31 de marzo de 2021 22:14

Todas las respuestas

  • Tras realizar mas pruebas con versiones anteriores del sistema pude darme cuenta de que las versiones del ensamblado en el número de revisión comenzaban con un número mayor a 17 por ejemplo 1.0.1.18463, y ese era el problema cuando recompilé el proyecto, visual studio generó la versión  1.0.1.17265 (el número de revisión está establecido para generarse automáticamente, esto se puede verificar en el archivo AssemblyInfo.vb del proyecto), en el archivo de configuración se establecía que si la versión que se desea cargar está en el rango de versiones 0.0.0.0 a 1.0.1.17726 entonces se intente cargar la versión 1.0.1.17261

     <bindingRedirect oldVersion="0.0.0.0-1.0.1.17726" newVersion="1.0.1.17261" />

    Por eso antes funcionaba bien porque la versión del ensamblado nunca estuvo en el rango, por casualidad la que generó visual studio ahora si se encontraba en el rango, haciendo que se redirigiera a la 1.0.1.17261 y generando el error de que el manifiesto del ensamblado no coincidía con la referencia.

    • Marcado como respuesta Yerald Mora miércoles, 31 de marzo de 2021 22:14
    • Desmarcado como respuesta Yerald Mora miércoles, 31 de marzo de 2021 22:22
    • Marcado como respuesta EricRRModerator jueves, 1 de abril de 2021 14:30
    miércoles, 31 de marzo de 2021 22:14
  • Hola,

    Gracias por confirmar que se ha encontrado una solución a la consulta realizada.

    Gracias por usar los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    jueves, 1 de abril de 2021 14:30
    Moderador