64位系统上设置编译平台为x86的项目编译在特定的情况下比如当一个窗体上放有包含了图像的ImageList之后,ResGen就会产生这种问题

当这个ImageList中没有图像时编译也是正常的,但是一旦编译就会引发这样的异常。

这个错误产生的原因在于,VS2010内部使用的编译器中,无论是32位还是64位的编译组件,都是纯IL的,也就是在64位系统中是以64位模式运行,这与当前项目使用的平台设置无关。当编译的组件引用了一个标记为x86的库(仅32位模式)时,编译组件便会发生错误,无法加载,从而导致编译失败。

这个问题发生在以下的情况中

1,在64位操作系统上使用任何版本的MSBuild编译引用了仅32位组件的.Net 3.5的项目; 
2,使用64位MSBuild编译引用了仅32位组件的项目; 
3,使用32位MSBuild编译引用了仅64位组件的项目。

要解决这个问题,可以在解决方案管理器中,将所有的库的目标平台全部设置为 AnyCPU就可以了。

如果需要最终执行平台是X86只需将最终的执行文件目标平台设置为x86:

这样即可正常编译。

程序最终运行的平台,是根据可执行文件的设置来的,因此库中设置为AnyCPU不会影响到最终程序的运行,运行依然是在x86之下。

但是如果引用的DLL有仅32位的,那这种方法就不行了,解决办法http://support.microsoft.com/kb/2028833,详见MSBuild 4.0 or Visual Studio 2010 may fail to compile a 32-bit application targeted for .Net Framework 3.5, 3.0 or 2.0 on x64 machine。

 详细解决步骤如下:

    1、关闭所有Visual Studio;

    2、以管理员的身份打开VS2010的命令提示窗口;

    3、更改目录至"<system_drive>:\Program Files (x86)\Microsoft SDKs\Windows\v<x.xx>\bin\”下面;

    4、输入该命令corflags /32bit+ ResGen.exe /force,执行;

    5、使用记事本打开<project_name>.csproj文件;

    6、在PropertyGroup下添加<ResGenToolArchitecture>Managed32Bit</ResGenToolArchitecture>,保存,关闭退出。

  现在在VS2010中重新打开原先的项目,编译通过,可以正确运行了!

  步骤做完后就能运行的原因是,此时ResGen就是以32位模式运行了,而不是64位,因此便可以加载标记为仅32位的程序集了。代价是——它就再也无法编译标记为仅64位模式的程序集了。

  对于该问题,还有另一个解决办法,打开项目属性页面,选择应用程序选项卡,设置目标框架为.NET Framework 4 。(由于框架限制,这个没测试)

  有关CorFlags.exe转换工具的详细信息请参见http://msdn.microsoft.com/zh-cn/library/ms164699.aspx

  有关Resgen.exe资源文件生成器的详细信息请参见http://msdn.microsoft.com/zh-cn/library/ccec7sz1.aspx

参考园子文章 http://www.cnblogs.com/nicch/archive/2010/05/25/building_cross_platform_application_on_64bit_msbuild.html

       http://www.cnblogs.com/hans_gis/archive/2011/07/22/2114013.html

转载于:https://www.cnblogs.com/ggcc/archive/2011/11/25/2262960.html

未能加载文件或程序集“****”或它的某一个依赖项。试图加载格式不正确的程序。解决方案总结...相关推荐

  1. 未能加载文件或程序集“XXX”或它的一个依赖项,试图加载格式不正确的程序...

    问题描述: 未能加载文件或程序集"XXX"或它的一个依赖项,试图加载格式不正确的程序 解决方法: 方法一:在vs的配置管理器中,把活动解决方案平台改为Any CPU就可以了 方法二 ...

  2. 未能加载文件或程序集“****”或它的某一个依赖项。试图加载格式不正确的程序。解决方案总结

    未能加载文件或程序集"****"或它的某一个依赖项.试图加载格式不正确的程序.解决方案总结 参考文章: (1)未能加载文件或程序集"****"或它的某一个依赖项 ...

  3. C#(64位系统) 解决MySQLDriverCS未能加载文件或程序集,或它的某一个依赖项

    今天使用MySQLDriverCS,在XP 32bit平台运行一切正常,拷到win2008R2 64bit下运行却报MySQLDriverCS"未能加载文件或程序集,或它的某一个依赖项&qu ...

  4. 关于 未能加载文件或程序集“”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 的解决办法

    这是C#中经常遇到的一个问题'未能加载文件或程序集""或它的某一个依赖项.找到的程序集清单定义与程序集引用不匹配. ',最常见的错误原因是:config配置文件里面声明的dll版本 ...

  5. C# 三层级架构问题之 能加载文件或程序集或它的某一个依赖项。系统找不到指定的文件

    用抽象工厂加反射来确定调用哪一个D层的时候,出现了错误"未能加载文件或程序集或它的某一个依赖项.系统找不到指定的文件" 如下图所示: 出现这种错误有两种情况: 1.      DL ...

  6. Power BI连接MySQL 提示错误......未能加载文件或程序集......或它的某一个依赖项

    Power BI连接MySQL数据库时报错: 提示错误未能加载文件或程序集"MySql.Data, Version=5.1.4.0, Culture=neutral,........&quo ...

  7. 严重性 代码 说明 项目 文件 行 禁止显示状态 警告 CS8032 无法从...创建分析器...的实例: 未能加载文件或程序集...或它的某一个依赖项。系统找不到指定的文件

    错误信息:严重性 代码 说明 项目 文件 行 禁止显示状态 警告 CS8032 无法从 C:\Users\Administrator\Desktop\SVG-master\Generators\bin ...

  8. 未能加载文件或程序集“”或它的某一个依赖项。应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行 sxstrace.

    "/"应用程序中的服务器错误. 未能加载文件或程序集"Seagull.Interop.DLL"或它的某一个依赖项.应用程序无法启动,因为应用程序的并行配置不正确 ...

  9. 未能加载文件或程序集或它的某一个依赖项_手写一个miniwebpack

    前言 之前好友希望能介绍一下 webapck 相关的内容,所以最近花费了两个多月的准备,终于完成了 webapck 系列,它包括一下几部分: webapck 系列一:手写一个 JavaScript 打 ...

  10. 试图运行项目时出错:未能加载文件或程序集 或它的某一个依赖项。该模块应包含一个程序集清单 .

    控制台应用程序无法调试. 解决方法:  1.在"解决方案资源管理器"里,右击项目名->属性->调试,勾掉"启用Visual Studio 宿主进程" ...

最新文章

  1. seo日常工作表_专业SEOer的日常工作状态
  2. MySQL安装、基本账户安全(5.0以后版本)
  3. 使用Nginx+Lua(OpenResty)开发高性能Web应用
  4. preparedStatement问号的深入理解
  5. C++PrimerCH2
  6. virtual多态 你不知道的事情
  7. 为什么手机最后 10% 的电量很不耐,最后1%的电量最耐用?
  8. LeetCode 1000. 合并石头的最低成本(区间DP)
  9. 计算机网络-信道复用技术
  10. SQLAlchemy ORM教程之二:Query
  11. 语音交互有哪些优势与劣势?
  12. vue+webapi 实现WebSocket 推送
  13. python中流程图的基本元素_面试干货:成为Python程序员的终极指南!(内附回答)...
  14. linux游戏性能更好,linux游戏,linux游戏性能
  15. 微软桌面虚拟化MED-V系列教程
  16. PHP字符串函数 查找字符位置函数
  17. linux 帝国cms 刷新,帝国cms怎么自动刷新网站首页?(帝国CMS自动刷新首页的方法)...
  18. 文件岛 服务器大陆,重回文件岛《究极数码暴龙》奇遇系统解析
  19. 全国二级计算机c语言试题及答案,全国计算机二级《C语言》预测试题及答案2016...
  20. MATLAB之rand、randn、randi和randperm

热门文章

  1. 扩展ExtJs的编辑器(HtmlEditor):插入图片
  2. Redis通过IO进行序列化+反序列化
  3. oracle出现数据坏块ORA-01578 ORA-01110 ORA-26040解决办法。
  4. Spring 定时器的使用(task)
  5. [CSS3] :nth-child的用法
  6. 判断日期是否是合法的:
  7. 防止重复提交表单的两种方法
  8. shell脚本格式的几点注意:格式严格,空格不能随便出现(一写就记不住)
  9. MySoft.Data入门篇:编写业务逻辑
  10. 2015暑假多校联合---Friends(dfs枚举)