Preguntas frecuentes sobre TBarCode .NET
Excepción de formato de imagen incorrecto tras implementar una aplicación de escritorio
Excepción de formato de imagen incorrecto tras implementar una aplicación de escritorio
Lo siguiente aplica a las versiones de TBarCode .NET anteriores a la 11.15.
Recibe la siguiente excepción después de implementar su aplicación de escritorio de Windows.
System.BadImageFormatException: Could not load file or assembly 'TECIT.TBarCode, Version=11.10.0.0, Culture=neutral, PublicKeyToken=1b5f4306b234b83d' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Motivo del problema: durante el desarrollo, hizo referencia a la versión de 32 bits de la DLL. Ahora, al implementar, el EXE se ejecuta como proceso de 64 bits y no puede cargar TECIT.TBarCode.dll (que es de 32 bits).
Información de fondo:
Debido a la carga de bibliotecas nativas, TECIT.TBarCode.dll es específica de la plataforma y no está marcada como CPU=Any. En el equipo de desarrollo, normalmente ejecuta el programa como proceso de 32 bits, porque Visual Studio es una aplicación de 32 bits. Pero incluso si el proceso se ejecuta como 64 bits (ya sea con CPU=Any o CPU=x64), aún puede cargar las DLL necesarias desde el GAC y desde la carpeta program files/common files. Nuestro instalador instala ambas versiones (32 y 64 bits) y también amplía la ruta de búsqueda. Así que siempre encontrará las DLL.
Después, al pasar al sistema de destino, debido al código administrado, el ejecutable puede ejecutarse como proceso de 32 o 64 bits. En algunos casos, el proceso no encuentra las DLL correctas porque cambia automáticamente de 32 a 64 bits, o las DLL no están en la ruta de búsqueda ni en el GAC, o simplemente no están instaladas.
Proceda de la siguiente manera; elija una de las opciones a continuación:
Compile su EXE con CPU de destino x86
Haga referencia a TECIT.TBarcode.dll en la carpeta "C:\Program Files (x86)\Common Files\TEC-IT\TBarCode\11*" y copie TECIT.TBarcode.dll + TBarCode11.dll + zlib1.dll en su carpeta de implementación. zlib1.dll solo es necesario si usa compresión gzip con códigos 2D. Instale el VCRedist x86 de Microsoft (2015 U3 RC o la edición 2015-2019 más reciente).
Compile su EXE con CPU de destino x64 (64 bits)
Haga referencia a TECIT.TBarcode.dll en la carpeta "C:\Program Files\Common Files\TEC-IT\TBarCode\11*" y copie TECIT.TBarcode.dll + TBarCode11_x64.dll + zlib1.dll en su carpeta de implementación. zlib1.dll solo es necesario si usa compresión gzip con códigos 2D. Instale el VCRedist x64 de Microsoft (2015 U3 RC o la edición 2017-2026 más reciente).
Compile su EXE con CPU de destino Any
Para la programación, haga referencia a TECIT.TBarcode.dll en la carpeta "C:\Program Files (x86)\Common Files\TEC-IT\TBarCode\11*". Para la implementación, no copie ninguna DLL de TEC-IT junto con su EXE. Elimine TECIT.TBarCode.dll de su carpeta de implementación. En su lugar, instale el instalador del SDK de TBarCode y seleccione solo el componente TBarCode .NET de la lista de funciones; esto instalará las versiones x86 y x64 en paralelo en el GAC y ampliará la variable PATH con la ruta de las DLL. El ensamblado de TBarCode se cargará automáticamente en la versión correcta porque está en el GAC tanto para 32 como para 64 bits. Si no desea ejecutar el instalador de TBarCode manualmente, también se puede automatizar aplicando modificadores de línea de comandos (instalación silenciosa). Instale tanto el VCRedist x86 como el x64 de Microsoft (edición 2017-2026).