强制C#64位应用程序以32位运行?

时间:2010-02-17 20:20:41

标签: c# 64-bit

让我们说当我编译托管程序集时,我强制它是64位(使用配置管理器)。并且假设在编译之后我想将该应用程序作为32位进程运行。我可以再强制它为32位吗? 我试图玩并编辑PEHeader(机器和32BitOnly字段),但应用程序不会在32位平台上启动。
当我强制将其编译为64位时,产生的IL是否存在差异? (与AnyCPU相比)

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

我不相信IL,非托管标头的差异。 64位模式使用PE32+格式标头(即64位)编译EXE。因此,只更改标志不会改变EXE的实际格式。这就是你得到错误的原因,它不是一个有效的32位应用程序,它不是,它是一个64位应用程序,32位窗口无法解析PE32 +标题。

您必须完全将EXE重写为PE32格式,因此可能无法实现。

难道你不能只是为了自己的兴趣而重新编译或者这只是为了自己的利益吗?