FAQ TBarCode .NET
Исключение Bad Image Format после развёртывания веб-приложения
Исключение Bad Image Format после развёртывания веб-приложения
Следующее относится к версиям TBarCode .NET до 11.15.
Вы получаете System.BadImageFormatException (была предпринята попытка загрузить программу в неверном формате) после развёртывания вашего проекта ASP.NET на веб-сервере IIS. Во время разработки такой проблемы не было.
Причина: Visual Studio — это 32-битное приложение, и сервер разработки обычно работает как 32-битный процесс. Поэтому в ваш проект была встроена 32-битная версия TECIT.TBarCode.DLL, и теперь она находится в папке ./bin. Но ваш IIS выполняет рабочий поток как 64-битный процесс и теперь загружает неверный формат.
Вариант №1: развернуть 64-битную версию сборки
Используйте версию из папки C:\Program Files\Common Files\TEC-IT\TBarCode\[version] (это x64-версия). Замените файл ../bin/TECIT.TBarCode.dll на целевой системе на эту версию.
Вариант №2: пусть работу сделает GAC
Полностью удалите TECIT.TBarCode.dll из папки bin. В этом случае будет загружена TECIT.TBarCode.dll из глобального кэша сборок (GAC). Общеязыковая среда выполнения автоматически загрузит правильную версию, поскольку GAC содержит обе версии — 32 и 64 бит. Предварительное условие: установка TBarCode SDK должна быть выполнена на целевом сервере, установка устанавливает DLL в GAC за вас.