Установщик, созданный проектом развертывания VS 2008, завершается с ошибкой «System.BadImageFormatException» - PullRequest
0 голосов
/ 16 октября 2018

Я создал установщик с Visual Studio 2008. Тип проекта VS - проект развертывания.Этот установщик не работает в некоторых средах, но также отлично работает в некоторых других средах.

Например, установщик компилируется на виртуальной машине, работающей под управлением Windows Server 2012 R2 Standard.Конечно, установка там удалась.Однако происходит сбой в другой виртуальной машине с той же версией Windows.

Сообщение об ошибке: «Ошибка 1001. Исключительная ситуация при инициализации установки: System.BadImageFormatException: Не удалось загрузить файл или сборку». Файл: Пользовательскийactions.dll 'или одной из его зависимостей. Эта сборка построена средой выполнения, более новой, чем текущая загруженная среда, и не может быть загружена. "

Целевая платформа равна 3,5 во всех приложениях в решении для установщика.Также ссылки в библиотеке пользовательских действий имеют .NET версии 2.0 или 3.5.

Чего не хватает в отказавшей среде?С чего начать поиск?

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

На самом деле есть только две причины этой ошибки:

  1. У вас есть 32-битный (или 64-битный) код, пытающийся вызвать сборку противоположной архитектуры.В вызовах настраиваемых действий вам нужно будет выследить последовательность вызовов и быть осторожным с типами сборок AnyCpu, которые могут быть JIT-скомпилированы для архитектуры системы, а не для сборок, которые вы будете вызывать.

  2. Несовместимые архитектуры NET.В вашем случае все упомянутые вами сборки основаны на NET 2.0 CLR.Если они в конечном итоге работают в NET 4.0 CLR, они потерпят неудачу.Это может помочь посмотреть на условия запуска, чтобы увидеть, что происходит.

Я также считаю, что Visual Studio 2008 не является хорошей основой для проекта установки.VS Community Edition является бесплатным, и будет размещать надстройку Projects.Конечно, VS 2008 не знает о NET 4.0 CLR.

0 голосов
/ 16 октября 2018

Блог : Возможно проверить этот блог быстро .По существу: 1) bitness 32/64, 2) corrupted binary file или 3) configuration issues (app.config).

InstallUtilLib.dll : Вот аналогичный ответ: System.BadImageFormatException: Не удалось загрузить файл или сборку (из installutil.exe) .Он ссылается на это объяснение MSDN: 64-разрядные управляемые настраиваемые действия генерируют исключение System.BadImageFormatException .Кажется вероятным.


Альтернативы : Реальный ответ - ИМХО - будет избегать проектов установщика Visual Studio из-за ряда известных проблем с этим типом проекта. Инструментарий WiX является хорошей альтернативой с открытым исходным кодом.И есть другие, коммерческие варианты .И есть альтернативная версия с более сложными деталями .


Некоторые ссылки :

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...