none
error con log4net version 1.2.10.0 RRS feed

  • Pregunta

  • Estoy trabajando con VB.Net 2015 Windows Forms y en la aplicacion me da el siguiente warning:

    Referenced assembly 'C:\WINDOWS\assembly\GAC_64\log4net\1.2.10.0__692fbea5521e1304\log4net.dll' targets a different processor than the application.

    Ahora la aplicacion compilada en algunas maquinas funciona y en otras no. La verdad que no encuentro la forma de solucionar este problema. Las que tienen Windows 10 si funciona y una con Windows 7 me da el sigueinte error:

    The application requires that assembly log4net version 1.2.10.0 be instaled in the Global Assembly Cache (GAC) first. y ni siquiera puedo instalar la aplicacion.

    La verdad estoy desorientado no encuentro como solucionar el problema.

    jueves, 28 de septiembre de 2017 2:26

Respuestas

  • "eduepa" escribió:

    > Estoy trabajando con VB.Net 2015 Windows Forms y en la aplicacion me da el siguiente warning:
    >
    > Referenced assembly 'C:\WINDOWS\assembly\GAC_64\log4net\1.2.10.0__692fbea5521e1304\log4net.dll'
    > targets a different processor than the application.
    >

    Hola:

    Traduciendo al español el mensaje de error que obtienes, el mismo te está diciendo que "El ensamblado referenciado 'C:\WINDOWS\assembly\GAC_64\log4net\1.2.10.0__692fbea5521e1304\log4net.dll' tiene un procesador de destino diferente al de la aplicación", por lo que lo único que puedo pensar es que tu aplicación la hayas compilado para una CPU de destino de 32 bits y el ensamblado que estás queriendo referenciar es de 64 bits, por tanto, tendrás que compilar tu aplicación para CPUs de destino de 64 bits.

    Nota que escribo que "es de 64 bits" por la ruta del archivo 'log4net.dll' que aparece en el mensaje de error, ya que se está haciendo referencia a la Caché de Ensamblados Global (GAC) de 64 bits.

    > Ahora la aplicacion compilada en algunas maquinas funciona y en otras no. La verdad que no
    > encuentro la forma de solucionar este problema. Las que tienen Windows 10 si funciona y una
    > con Windows 7 me da el sigueinte error:
    >
    > The application requires that assembly log4net version 1.2.10.0 be instaled in the Global
    > Assembly Cache (GAC) first. y ni siquiera puedo instalar la aplicacion.

    El propio mensaje de error te está diciendo lo que tienes que hacer, que es instalar primero el ensamblado log4net.dll en la correspondiente GAC.

    Busca información en Internet sobre cómo instalar ensamblados en la GAC, como por ejemplo:

    Cómo instalar a un ensamblado en la caché de ensamblados Global en Visual Basic .NET o Visual Basic 2005

    Tan solo tienes que abrir una ventana de la consola de Windows con permisos de Administrador, y ejecutar la siguiente instrucción:

    gacutil -i "C:\Temporal\log4net.dll"

    Modifica 'Temporal' por la ruta que contiene el ensamblado log4net.dll.

    Nunca he trabajado con el ensamblado log4net.dll, pero por otros programas que tengo instalados en mi equipo y que sí lo utilizan, observo que dicho ensamblado se encuentra localizado en la misma carpeta que contiene el ejecutable de la aplicación. Para ello, una vez que hayas referenciado en tu proyecto el ensamblado log4net.dll, abre las Propiedades del proyecto, y te diriges a la pestaña Referencias. Selecciona el ensamblado log4net.dll y pulsa F4, y en la propiedad Copia local, establece el valor True, tal y como muestra la siguiente captura de pantalla:


    Esto hará que cuando compiles tu proyecto, el ensamblado log4net.dll se copiará a la carpeta de resultados del proyecto (bin/debug o bin/release, dependiendo de la configuración que tengas seleccionada). Ya solo queda que procures redistribuir el archivo log4net.dll (siempre y cuando tengas los permisos necesarios para ello) junto con los demás archivos que requiera tu aplicación para que se ejecute satisfactoriamente en los equipos cliente, de ésta manera, aunque el ensamblado no se encuentre instalado en la GAC, tu aplicación lo podrá utilizar porque se encuentra localizado en la misma carpeta que contiene el ejecutable de la aplicación.

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    viernes, 29 de septiembre de 2017 8:41
    Moderador
  • "eduepa" escribió:

    > al intentar grabar la dll en el ensamblado me da el siguiente error:
    >
    > 'gacutil' is not recognized as an internal or external command,
    > operable program or batch file.
    >
    > no entiendo porque.

    Querrás decir que obtienes ese error cuando intentas INSTALAR la dll en la Caché de Ensamblados Global (GAC), y el mismo se produce porque en una ventana del símbolo del sistema normal y corriente, no se incluye en la variable PATH la ruta donde se encuentra la utilidad gacutil.exe. Tienes que abrir una ventana del Símbolo del sistema para desarrolladores de VS 2015, si es ésta la versión de Visual Studio que tienes instalada en tu equipo, ya que dicha ventana añadirá automáticamente a la variable PATH la ruta donde se encuentra instalada la utilidad gacutil.exe.

    Gacutil.exe (Global Assembly Cache Tool)

    Símbolo del sistema para desarrolladores de Visual Studio

    En éste último enlace te indica cómo tienes que buscar el símbolo del sistema para desarrolladores dependiendo de la versión del sistema operativo Microsoft Windows que tengas instalado en tu PC.

    Pero te advierto que en los equipos cliente no tienen por qué tener instalada la utilidad gacutil.exe, por lo que nunca vas a poder instalar el ensamblado log4net.dll en la GAC. Lo que tienes que hacer ya te lo indiqué en mi respuesta anterior: procurar que el archivo log4net.dll se encuentre en la MISMA CARPETA QUE CONTIENE EL EJECUTABLE DE TU APLICACIÓN.

    > Ahora el que no funcionaba en una de las maquinas, descubri que la misma
    > correo sobre 32 bits por lo que estoy actualizando el sistema operativo a 64.
    > El resto de las maquinas todo funciona bien.

    Insisto en que nunca he utilizado el ensamblado log4net.dll e ignoro por completo si existen versiones de 32 y 64 bits independientes, o si una única versión sirve tanto para 32 como para 64 bits. Si existen versiones independientes, tendrás que instalar la de 32 bits en los sistemas operativos de 32 bits, y la de 64 bits en aquellos de 64 bits, pero en ningún caso es aceptable, al menos para mí, que tengas que actualizar un sistema operativo para poder ejecutar dicha biblioteca, salvo que sea la cosa más importante del mundo, cuestión que dudo mucho que lo sea. ;-)


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    viernes, 29 de septiembre de 2017 14:35
    Moderador

Todas las respuestas

  • "eduepa" escribió:

    > Estoy trabajando con VB.Net 2015 Windows Forms y en la aplicacion me da el siguiente warning:
    >
    > Referenced assembly 'C:\WINDOWS\assembly\GAC_64\log4net\1.2.10.0__692fbea5521e1304\log4net.dll'
    > targets a different processor than the application.
    >

    Hola:

    Traduciendo al español el mensaje de error que obtienes, el mismo te está diciendo que "El ensamblado referenciado 'C:\WINDOWS\assembly\GAC_64\log4net\1.2.10.0__692fbea5521e1304\log4net.dll' tiene un procesador de destino diferente al de la aplicación", por lo que lo único que puedo pensar es que tu aplicación la hayas compilado para una CPU de destino de 32 bits y el ensamblado que estás queriendo referenciar es de 64 bits, por tanto, tendrás que compilar tu aplicación para CPUs de destino de 64 bits.

    Nota que escribo que "es de 64 bits" por la ruta del archivo 'log4net.dll' que aparece en el mensaje de error, ya que se está haciendo referencia a la Caché de Ensamblados Global (GAC) de 64 bits.

    > Ahora la aplicacion compilada en algunas maquinas funciona y en otras no. La verdad que no
    > encuentro la forma de solucionar este problema. Las que tienen Windows 10 si funciona y una
    > con Windows 7 me da el sigueinte error:
    >
    > The application requires that assembly log4net version 1.2.10.0 be instaled in the Global
    > Assembly Cache (GAC) first. y ni siquiera puedo instalar la aplicacion.

    El propio mensaje de error te está diciendo lo que tienes que hacer, que es instalar primero el ensamblado log4net.dll en la correspondiente GAC.

    Busca información en Internet sobre cómo instalar ensamblados en la GAC, como por ejemplo:

    Cómo instalar a un ensamblado en la caché de ensamblados Global en Visual Basic .NET o Visual Basic 2005

    Tan solo tienes que abrir una ventana de la consola de Windows con permisos de Administrador, y ejecutar la siguiente instrucción:

    gacutil -i "C:\Temporal\log4net.dll"

    Modifica 'Temporal' por la ruta que contiene el ensamblado log4net.dll.

    Nunca he trabajado con el ensamblado log4net.dll, pero por otros programas que tengo instalados en mi equipo y que sí lo utilizan, observo que dicho ensamblado se encuentra localizado en la misma carpeta que contiene el ejecutable de la aplicación. Para ello, una vez que hayas referenciado en tu proyecto el ensamblado log4net.dll, abre las Propiedades del proyecto, y te diriges a la pestaña Referencias. Selecciona el ensamblado log4net.dll y pulsa F4, y en la propiedad Copia local, establece el valor True, tal y como muestra la siguiente captura de pantalla:


    Esto hará que cuando compiles tu proyecto, el ensamblado log4net.dll se copiará a la carpeta de resultados del proyecto (bin/debug o bin/release, dependiendo de la configuración que tengas seleccionada). Ya solo queda que procures redistribuir el archivo log4net.dll (siempre y cuando tengas los permisos necesarios para ello) junto con los demás archivos que requiera tu aplicación para que se ejecute satisfactoriamente en los equipos cliente, de ésta manera, aunque el ensamblado no se encuentre instalado en la GAC, tu aplicación lo podrá utilizar porque se encuentra localizado en la misma carpeta que contiene el ejecutable de la aplicación.

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    viernes, 29 de septiembre de 2017 8:41
    Moderador
  • al intentar grabar la dll en el ensamblado me da el siguiente error:

    'gacutil' is not recognized as an internal or external command,
    operable program or batch file.

    no entiendo porque.

    Ahora el que no funcionaba en una de las maquinas, descubri que la misma correo sobre 32 bits por lo que estoy actualizando el sistema operativo a 64. El resto de las maquinas todo funciona bien.

    • Marcado como respuesta eduepa viernes, 29 de septiembre de 2017 16:00
    • Desmarcado como respuesta Enrique M. MontejoModerator viernes, 29 de septiembre de 2017 16:35
    viernes, 29 de septiembre de 2017 13:46
  • "eduepa" escribió:

    > al intentar grabar la dll en el ensamblado me da el siguiente error:
    >
    > 'gacutil' is not recognized as an internal or external command,
    > operable program or batch file.
    >
    > no entiendo porque.

    Querrás decir que obtienes ese error cuando intentas INSTALAR la dll en la Caché de Ensamblados Global (GAC), y el mismo se produce porque en una ventana del símbolo del sistema normal y corriente, no se incluye en la variable PATH la ruta donde se encuentra la utilidad gacutil.exe. Tienes que abrir una ventana del Símbolo del sistema para desarrolladores de VS 2015, si es ésta la versión de Visual Studio que tienes instalada en tu equipo, ya que dicha ventana añadirá automáticamente a la variable PATH la ruta donde se encuentra instalada la utilidad gacutil.exe.

    Gacutil.exe (Global Assembly Cache Tool)

    Símbolo del sistema para desarrolladores de Visual Studio

    En éste último enlace te indica cómo tienes que buscar el símbolo del sistema para desarrolladores dependiendo de la versión del sistema operativo Microsoft Windows que tengas instalado en tu PC.

    Pero te advierto que en los equipos cliente no tienen por qué tener instalada la utilidad gacutil.exe, por lo que nunca vas a poder instalar el ensamblado log4net.dll en la GAC. Lo que tienes que hacer ya te lo indiqué en mi respuesta anterior: procurar que el archivo log4net.dll se encuentre en la MISMA CARPETA QUE CONTIENE EL EJECUTABLE DE TU APLICACIÓN.

    > Ahora el que no funcionaba en una de las maquinas, descubri que la misma
    > correo sobre 32 bits por lo que estoy actualizando el sistema operativo a 64.
    > El resto de las maquinas todo funciona bien.

    Insisto en que nunca he utilizado el ensamblado log4net.dll e ignoro por completo si existen versiones de 32 y 64 bits independientes, o si una única versión sirve tanto para 32 como para 64 bits. Si existen versiones independientes, tendrás que instalar la de 32 bits en los sistemas operativos de 32 bits, y la de 64 bits en aquellos de 64 bits, pero en ningún caso es aceptable, al menos para mí, que tengas que actualizar un sistema operativo para poder ejecutar dicha biblioteca, salvo que sea la cosa más importante del mundo, cuestión que dudo mucho que lo sea. ;-)


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    viernes, 29 de septiembre de 2017 14:35
    Moderador
  • Ya pude Instalar la dll en el GAC. Ahora la misma dll esta en las referencias, se incluye en los archivox como pre-requisitos de la publicacion y se encuentra en la carpeta donde esta el ejectable. Pero recien ahora que la instale en el GAC "aparentemente" dejo de dar el Warning.

    Comprendo que quizas la solucion de actualizar el sistema operativo no es la ideal, pero dentro de todas las horas en que me ha tenido esta situacion, es lo que encontre para salir del paso.

    De hecho el Visual en la pestaña de Compile tiene "Any CPU" "Prefer 32-bit" pero no funcionaba.

    Y por otro lado, para quienes contratan nuestros servicios, desean productividad y cuento con un tiempo limitado para lograr los objetivos, o sea, que aunque sea transitorio, espero sea esa la solucion.

    Mil gracias por vuestro aporte.

    • Marcado como respuesta eduepa viernes, 29 de septiembre de 2017 16:00
    • Desmarcado como respuesta Enrique M. MontejoModerator viernes, 29 de septiembre de 2017 16:35
    viernes, 29 de septiembre de 2017 15:59