所以我们有一个用于编译为“任何CPU”的应用程序。它将在Windows 7计算机上以64位模式运行,但在尝试调用以32位模式运行的互操作时会出错。
我经历了将编译目标更改为目标x86的项目,编译并在本地运行,并且运行正常。
但是,当提交此更改时,它仍然在生产中的Windows 7计算机中以64位运行。
当我进行更改时,我刚刚在VS2010中打开配置管理器,将其更改为x86,保存并为解决方案中的每个项目提交了更改。
如何让它以32位模式运行?我需要改变别的吗?
答案 0 :(得分:5)
您需要SDK中的corflags工具
corflags MyApp.exe /32bit+
将更改exe以32位进程运行。
相反
corflags MyApp.exe /32bit-
将exe更改为AnyCPU
corflags MyApp.exe
会告诉你exe的标题中有什么,所以你可以真正看到它的目标。
答案 1 :(得分:4)
这是VS2010中的一个不幸的陷阱,Configuration Manager中的“Active solution platform”设置与托管C#和VB.NET项目无关。对于C#,您必须使用Project + Properties,Build选项卡,Platform目标设置。只有启动(EXE)项目的设置才重要。