这个错误产生的原因在于,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 。(由于框架限制,这个没测试)
用VS2017打开VS2010创建的工程时出现问题
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、在PropertyGro...
我在VS2010里写的代码能成功运行,但是用VS2017RC打开源代码就有很多错误...
我估计你是编译那个按钮都不能点,是这样的,vs和vc有个很大的区别,vs需要被编译的对象必须形成一个project才行,意思就是,你直接打开一个cpp的文件,绝对是编译不了,只能先建立一个工程,再把文件加进去,然后编译的时候是编译整个工程。具体操作大概就是文件菜单里点新建,然后选择源代码对应的项目...
为什么我的vs2017版执行不了,说是系统找不到指定的文件?
1. 原因很简单,你把VS2010的注册表信息给删除了 2. 你创建了空项目而引起了编译失败。请换用Windows窗体应用程序.3. 可能你的工程配置的是release方式,但你启动的时候又用的是“启动调试”方式,你选“启动(不调试)”看看.4. 最简单的原因就是你没有关掉xxx.exe,也可以全部重建试试.5....
为什么我用VS2010调试程序时出现错误未能在指定文件夹中找到.exe_百度...
该办法仍与FAT32有关:在项目的“属性|配置属性|清单工具|常规”中的“运用FAT32处理方法”选择“是”(默许为“否”),重重生成项目即可处理问题。该办法是独一真正针对问题所在而提出的处理办法,使清单工具能够正确更新。(此办法是官方处理办法,也比拟便当,引荐)你试试这个,不行的话,就只...
visual studio 2017创建窗体应用项目总提示缺少安装组件
1、使用VS2010创建windows窗体应用程序。在右侧的已安装模板中,选择Visual C#,右边会显示出各种项目类型。这里第一项就是Windows窗体应用程序。2、默认状态下,会自动生成一个窗体文件。这个窗体是主启动窗体,当程序运行的时候会先运行这个窗体,如果需要修改,可以在创建项目时默认生成的Program.cs文件中...
VS2010调试时出现问题出现下图情况,请问如何解决?
如果简单的程序也这样,说明软件和系统有冲突,换一个VS或者换一个系统,不同的系统和不同版本的VS之间可能存在兼容性问题,否则 1、很可能是程序逻辑错误,导致进入无限循环。 办法:画出处理的流程图 2、相关函数的头文件没有被包含。 办法:明确每一个函数包含在那个头文件中 3、分配了指针...
vs2017写程序时经常卡死,只能结束进程
我的环境是截至目前2018-05-25最新版VS,OpenCV3 经过尝试发现鼠标停留到Mat上就卡死。原因可能VS的InteliSense预览过多的信息时有BUG,而Mat类上面有192行注释。我的解决方案是右键Mat转到定义,然后把Mat类和上面一大截注释之间加一个空格(直接删除也可以)这样鼠标放在Mat上时就不会有注释预览了。
编译VS2010时出现"this project is out of date",怎么解决
楼主你好!根据你的描述,让我来给你回答!项目过期是指你编译生成的exe文件相对你的代码已经过期了,需要重新编译 。可是你的代码有问题,不能完成重新编译所以你还是要从你的源码入手,不是vs的问题个人理解,有错请见谅 希望能帮到你,如果满意,请记得采纳哦~~~...
VS2010打开一个工程后,没有头文件,源文件和资源文件三个文件夹了。.h...
1 . 先打开vs2010利用win32控制台新建一个工程。这时在最左边会有一打开。右击解决方案资源管理器里面 “头文件” 这个文件夹 选择 添加--新建 本回答被网友采纳 cdidjprj | 推荐于2017-12-16 16:49:13 举报| 评论 4 8 找到解决办法了,直接点击vcproj打开工程,就好了 wghydq | 发布于2012-11-15 ...
电脑中VS2010安装失败了怎么办|电脑中VS2010安装失败了如何处理_百度知 ...
1. 检查系统要求:确保你的电脑满足Visual Studio 2010的最低系统要求,比如操作系统版本、处理器、内存等。2. 关闭防病毒软件:某些防病毒软件可能会干扰安装过程,尝试在安装之前临时关闭防病毒软件,然后重新运行安装程序。3. 清理临时文件:使用磁盘清理工具清理临时文件和垃圾文件,然后重新运行安装程序。