System.BadImageFormatException для CustomAction в проекте установки Visual Studio 2010 - PullRequest
0 голосов
/ 23 июня 2010

Держи оружие! Я проверил, все ли выходы проекта настроены на одну и ту же архитектуру процессора (в данном случае x64). Они есть. Так что я пытаюсь сделать?

  1. Написал плагин для Autodesk Revit Architecture 2011 x64
    • цели .NET 3.5
    • 64
  2. Создан проект установки
  3. Создано пользовательское действие (RegisterRevit2011Addin) для регистрации плагина в Revit с использованием прилагаемой библиотеки DLL (RevitAddInUtility.dll)
    • цели .NET 3.5
    • 64
  4. добавлено настраиваемое действие для настройки проекта, сборки, установки

Это сообщение об ошибке, которое я получаю:

Ошибка 1001. Исключительная ситуация при инициализации установки: System.BadImageFormatException: не удалось загрузить файл или сборку 'RegisterRevit2011, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = ноль' или единица его зависимостей. Была предпринята попытка загрузить программу с неверным форматом.

Просто чтобы быть уверенным, я создал простое консольное тестовое приложение:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var register = new RegisterRevit2011Addin.RegisterAddinCustomAction();
            Console.WriteLine(register);
            register.Context = new System.Configuration.Install.InstallContext();
            register.Context.Parameters.Add("assemblypath",     typeof(Program).Assembly.Location);
            register.Install(new Dictionary<string, string>());
            Console.ReadLine();
        }
    }
}

Я скомпилировал этот таргетинг на x64 и .NET 3.5 - вуаля, все работает! Теперь я могу предположить, что ошибка лежит где-то в проекте установки. Я установил целевую платформу в свойствах программы установки, а также установил условие запуска 3.5.

Интересно: когда я проверяю полученный setup.exe с dumpbin /headers, он сообщает мне, что это процесс x86!

Я почти уверен, что все это работало позавчера, поэтому я немного обеспокоен, что каким-то образом испортил свою систему. Есть идеи?

1 Ответ

0 голосов
/ 23 июня 2010

Похоже, это может быть ответом: http://blogs.msdn.com/b/heaths/archive/2006/02/01/64-bit-managed-custom-actions-with-visual-studio.aspx

По сути, Visual Studio (по крайней мере, в выпуске 2005 года) выполняет настраиваемые действия с 32-разрядной прокладкой. Ручное изменение этого значения на 64-битное после сборки MSI может помочь Я смотрю на это прямо сейчас.

...