C# 为什么';任何CPU';在x64机器上以x86运行的应用程序?
我在程序文件(x86)中安装了一个任意CPU应用程序。在一台Windows7 x64机器上,它以预期的x64运行,而在另一台Windows7 x64机器上,它以x86运行 这怎么可能?我希望它在两台机器上都能像x64一样运行。原因可能是什么?我可以做些什么使其始终以x64运行C# 为什么';任何CPU';在x64机器上以x86运行的应用程序?,c#,.net,64-bit,clr,anycpu,C#,.net,64 Bit,Clr,Anycpu,我在程序文件(x86)中安装了一个任意CPU应用程序。在一台Windows7 x64机器上,它以预期的x64运行,而在另一台Windows7 x64机器上,它以x86运行 这怎么可能?我希望它在两台机器上都能像x64一样运行。原因可能是什么?我可以做些什么使其始终以x64运行 在我的例子中,从哪里运行它与-程序文件(x86)有关系吗?很可能是您链接了一些程序集,这些程序集不是任何CPU,但包含本机代码(或编译为x86),这会导致整个进程退回到x86 要了解程序集是如何编译的,一个可能有帮助的相关
在我的例子中,从哪里运行它与-
程序文件(x86)
有关系吗?很可能是您链接了一些程序集,这些程序集不是任何CPU,但包含本机代码(或编译为x86),这会导致整个进程退回到x86
要了解程序集是如何编译的,一个可能有帮助的相关堆栈溢出问题是*
注意:可执行文件在文件系统上的位置根本不重要。两台机器上的“程序文件(x86)”中都有程序吗?@WillA程序所在的位置并不重要。32位程序可以存储在
\program Files
中,而64位程序可以存储在\program Files(x86)
中。它们都将正确加载,因为指令集信息已写入headerBut中。但是,它是如何在不同的机器上以x64的形式运行的呢?猜测:GAC中相同依赖程序集的不同版本。我在TFS程序集上遇到了这个问题,我已经花了好几天的时间来解决这个问题。@GSerg-例如,如果您引用了驱动程序(如数据库驱动程序),并且一个用户只安装了32位版本,它将迫使您的应用程序也以32位的方式运行。我刚刚遇到了类似的问题。在我的例子中,修复很简单——在项目属性的Build选项卡上,首选32位(就在平台目标之下,它调用任何CPU)被打开。Nice one@Viliam。这是我为自己准备的。