Tenez vos armes à feu! J'ai vérifié pour voir si toutes les sorties du projet sont définies à la même architecture de processeur (dans ce cas, x64). Elles sont. Alors qu'est-ce que j'essaie de faire?System.BadImageFormatException pour CustomAction dans le projet d'installation de Visual Studio 2010
- A écrit un plugin pour Autodesk Revit Architecture 2011 x64
- cibles .NET 3.5
- x64
- créé un projet d'installation
- créé une action personnalisée (
RegisterRevit2011Addin
) pour l'enregistrement plugin avec Revit en utilisant une DLL fournie (RevitAddInUtility.dll
)- cibles .NET 3.5
- x64
- ajouté action personnalisée au projet d'installation, construire, installer
Ceci est le message d'erreur que je reçois:
Erreur 1001. Une exception s'est produite lors de l'initialisation de l'installation: System.BadImageFormatException: Impossible de charger le fichier ou l'assemblage 'RegisterRevit2 011, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = null 'ou un de ses dépendances. Une tentative de chargement d'un programme avec un format incorrect a été effectuée.
Juste pour être sûr, je créé une application simple test de la console:
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();
}
}
}
Je compilé ce x64 ciblage et .NET 3.5 - voilà, ça marche! Donc je peux maintenant supposer que l'erreur se trouve quelque part dans le projet d'installation. J'ai défini la plate-forme cible dans les propriétés de projets d'installation et également défini la condition de lancement sur 3.5.
Intéressant: Quand je vérifie le résultat setup.exe
avec dumpbin /headers
, il m'informe que c'est un processus x86! Je suis assez sûr que tout cela a fonctionné avant-hier, donc je suis un peu inquiet j'ai dérangé mon système d'une manière ou d'une autre. Des idées?