试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

两种原因:

第一种为程序的运行以平台系统位数不匹配,第二种则是该死的VS整出来的...

一般在下面三种情景下会发生.

1.64位系统上C#调用32位的C++ *.dll

2.64位系统上IIS发布含有32位的 *.dll应用程序时

3.64位系统上编写C++ *.dll,在64位系统上通过 C#调用 ,可能成功,也可能失败,失败就报BadImageFormatException 异常,也是最二的一种情况.是由该死的VS整出来的

解决方法如下:

1.VS在64位系统下面,编译调试某个C++的API的时候,报错:未处理BadImageFormatException 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

详见下图:

其原因是该API是在32位系统下面开发的,在64位系统上面开发编译的时候需要将生成的目标平台设为X86。

方法是:

在右边的“解决方案资源管理器”里,右键该项目点击属性。在属性窗口里选择“生成”——“目标平台”下拉里选中“X86"即可。见下图:

然后保存重新编译

原因:程序集之间的通讯要么全是64位环境下的,要么全是32位环境下的。不能混编访问。不然会出现“试图加载格式不正确的程序”的错误;

解决办法是把发布网站的程序池开通32位兼容性即可,如下图:

3.如果上面的没有解决,那就是VS中C#工程的问题,打开对应的工程文件(*.csproj),如下图<Prefer32Bit>false</Prefer32Bit>节点

下面是MSDN的解释:

CSharpProjectConfigurationProperties6.Prefer32Bit 属性

获取或设置一个标志,指示是否首选的 32 位平台。

命名空间:  VSLangProj110

程序集:  VSLangProj110(在 VSLangProj110.dll 中)

语法

C#

bool Prefer32Bit { get; set; }

属性值

类型:System.Boolean

返回表示 32 位首选项的标志。 返回true如果 32 位是首选。 否则,返回false。

时间: 2024-10-12 12:17:06

试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)的相关文章

未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。

上一篇文章说到了DLL引用问题,主要是说的程序中如果使用过了反射,则反射创建对象的dll必须放在web应用程序的bin目录里.今天又遇到了一个类似的问题,mvc3的应用程序,发布到iis上时,报:”未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项.试图加载格式不正确的程序.“.原因很简单,因为我发的时候,我项目中的oracle提供的asp.net访问oralcle数据库的这个 Oracle.DataAccess.dll的本地复制没有设置为true(在项目引用里找到该引

引用64位dll时候出现 未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。试图加载格式不正确的程序。

引用64位dll时候出现 未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项.试图加载格式不正确的程序. 需要在web.config增加配置 <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0"/> </startup>

.NET 未能加载文件或程序集&ldquo;xxx&rdquo;或它的某一个依赖项。试图加载格式不正确的程序。

症状: 未能加载文件或程序集"xxx"或它的某一个依赖项.试图加载格式不正确的程序.说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息.异常详细信息: System.BadImageFormatException: 未能加载文件或程序集"xxx"或它的某一个依赖项.试图加载格式不正确的程序.源错误:执行当前 Web 请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪信息确定有关异常原因和发

未能加载文件或程序集“Common”或它的某一个依赖项。试图加载格式不正确的程序

原因:操作系统是64位的,但发布的程序引用了一些32位的ddl,所以出现了兼容性的问题解决方案一:如果是64位机器,IIS--应用程序池--高级设置--启用32位应用程序 :true.解决方案二:修改项目属性--生成--目标平台(比如,X86\X64)未能加载文件或程序集"Common"或它的某一个依赖项.试图加载格式不正确的程序

未能加载文件或程序集.....或它的某一个依赖项。试图加载格式不正确的程序。

错误提示:未能加载文件或程序集.....或它的某一个依赖项.试图加载格式不正确的程序.原因:操作系统是64位的,但发布的程序引用了一些32位的ddl,所以出现了兼容性的问题.解决方案一: 修改项目属性,将目标平台修改为X86.解决方案二: IIS中,将应用程序池的高级设置中的"启用32位应用程序"设置为true.未能加载文件或程序集.....或它的某一个依赖项.试图加载格式不正确的程序.

“未能加载文件或程序集file:///E:/MoneySet.dll或它的某一个依赖项,试图加载格式不正确的程序,行203,位置5. 文件:MReportSet.resx”,

http://bbs.csdn.net/topics/390334265 "未能加载文件或程序集file:///E:/MoneySet.dll或它的某一个依赖项,试图加载格式不正确的程序,行203,位置5. 文件:MReportSet.resx",

未能加载文件或程序集“XXXXX”或它的某一个依赖项。试图加载格式不正确的程序。

未能加载文件或程序集“FastColoredTextBox, Version=2.10.5.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项.试图加载格式不正确的程序. 昨晚引用一个程序集,出现了这个问题,我本来想的是引用的程序集内部初始化时有问题.因为以前遇到的问题,也是这样. 但今天我引用了一个新的程序集,依然出现这个问题,我心里突然有一个念头,也许是生成的设置问题. 将平台设置成Any CPU

CS0009:未能打开元数据文件System.ComponentModel.DataAnnotations.dll 试图加载格式不正确的程序。

问题描述: CS0009: 未能打开元数据文件“c:\Windows\Microsoft.NET\assembly\GAC_MSIL \System.ComponentModel.DataAnnotations\v4.0_4.0.0.0__31bf3856ad364e35 \System.ComponentModel.DataAnnotations.dll”--“试图加载格式不正确的程序. 网上搜索出来的资源比较少,修复VS也没有用,特地写这小文章. 试了网上方法: 把"C:\Windows\M

未能加载文件或程序集“file:///D:/Program Files (x86)/ArcGIS/DeveloperKit10.0/DotNet/ESRI.ArcGIS.3DAnalyst.dll”或它的某一个依赖项。试图加载格式不正确的程序。 行 129,位置 5。

能加载文件或程序集“file:///C:/Program Files (x86)/ArcGIS/DeveloperKit10.0/DotNet/ESRI.ArcGIS.ADF.Local.dll”或它的某一个依赖项.试图加载格式不正确的程序. 我们经常会遇到这样的错误,这是由于.NET版本引起的,改正方案就是在“解决方案管理”选择“项目”,然后右键选择“属性”,选择“应用程序”页,将”目标框架“改为正确的.NET平台即可.VS2010中改为.NETFrameWork 4.0 Client Pro