System.BadImageFormatException试图加载格式不正确的程序

我正在为另一个基于公共.NET API的程序编写插件。通常,这些插件是通过创建引用API程序集的类库DLL来创建的。然后,通过继承API程序集中的基本命令类来创建命令类。然后将应用程序设置为引用插件DLL文件,然后还负责在用户请求时实际启动自定义命令类。 但是,现在我正在尝试通过
System.CodeDOM
自动生成一些代码,并且想要创建一个简单的控制台应用程序,该应用程序根据API程序集中的类型自动生成新的类类型。 然而,当我尝试运行我的应用程序时,我得到以下异常。   System.BadImageFormatException是   未处理的消息:无法加载文件   或装配'RevitAPI,   版本= 2011.0.0.0,文化=中立,   PublicKeyToken = null'或其中一个   依赖。试图做到   加载程序不正确   格式。 通常我需要将插件程序集的目标框架设置为3.5。但是现在我发现如果我将控制台应用程序的目标框架设置为2.0,上面的错误就会消失。但是,我的控制台应用程序已经引用了我的目标框架设置为3.5的其他类库。而且我真的不想围绕2.0框架重写它们。     
已邀请:
它可能是32 - 64位不匹配。 如果您在64位操作系统上运行,则可以将Assembly RevitAPI编译为32位,将您的进程编译为64位或“任何CPU”。 或者,RevitAPI编译为64位,您的进程编译为32位或“任何CPU”并在32位操作系统上运行。     
如果您使用IIS, 转到应用程序池 选择您网站使用的那个,然后点击高级设置 确保启用32位应用程序设置为True     
对于使用x64项目的VS的新安装,我遇到了问题 - 对于Visual Studio 2013和Visual Studio 2015:
Tools
  -> Options
   -> Projects and Solutions
    -> Web Projects
     -> Check "Use the 64 bit version of IIS Express for web sites and projects"
    
这些建议是准确的,但我想添加一个注释。我被困住只是因为我有多个发布配置。我正在编辑“Debug - Any CPU”,然后部署“Debug - x64”配置。确保您正在编辑和部署相同的配置。在开始发布后单击“设置”选项卡进行验证,弹出“发布Web”对话框。确保它与您编辑的配置相匹配。 (那是我生命中的4个小时,我永远不会回来!)     
当我的软件在另一台机器上运行时,我遇到了同样的问题。在我的开发者电脑(Windows 7)上,我安装了Visual Studio 2015,目标电脑是Windows 10的全新安装(.Net已安装)。我还在另一个干净的Windows 7电脑上测试了它,包括.Net Framework。但是,在两台目标PC上我都需要为x86或x64安装Visual C ++ Redistributable for Visual Studio 2015包(取决于你的应用程序的构建版本)。那已经安装在我的开发者电脑上了。 我的应用程序使用的是一个C库,它已经使用visual studio中的/ clr和/ TP选项编译为C ++应用程序。该应用程序还通过使用dllexport方法签名为C#提供了功能。不确定C#集成是否导致我出错,或者C ++应用程序是否会给我相同的信息。 希望它可以帮助任何人。     
我有同样的问题我做了什么,我刚刚下载32位DLL并将其添加到我的bin文件夹这解决了我的问题     

要回复问题请先登录注册