抓住你的枪!我确实检查了所有项目输出是否都设置为相同的处理器架构(在本例中为x64)。他们是。那么我想做什么呢?
RegisterRevit2011Addin
)创建了一个自定义操作(RevitAddInUtility.dll
),用于向Revit注册插件
这是我收到的错误消息:
错误1001.初始化安装时发生异常: System.BadImageFormatException:无法加载文件或程序集 'RegisterRevit2011,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或者一个 它的依赖关系。试图加载格式不正确的程序。
为了确保,我创建了一个简单的控制台测试应用程序:
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 - voilà,它的工作原理!所以我现在可以假设错误位于安装项目的某个地方。我在设置项目属性中设置了目标平台,并将启动条件设置为3.5。
有趣:当我使用setup.exe
检查生成的dumpbin /headers
时,它会通知我它是x86进程!
我很确定这一切都在前天工作,所以我有点担心我以某种方式搞砸了我的系统。有什么想法吗?
答案 0 :(得分:0)
基本上,Visual Studio(至少在2005版本中)使用32位垫片运行自定义操作。在构建msi之后手动将其更改为64位可以解决问题。我现在正在研究它。