Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么';任何CPU';在x64机器上以x86运行的应用程序?_C#_.net_64 Bit_Clr_Anycpu - Fatal编程技术网

C# 为什么';任何CPU';在x64机器上以x86运行的应用程序?

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应用程序。在一台Windows7 x64机器上,它以预期的x64运行,而在另一台Windows7 x64机器上,它以x86运行

这怎么可能?我希望它在两台机器上都能像x64一样运行。原因可能是什么?我可以做些什么使其始终以x64运行


在我的例子中,从哪里运行它与-
程序文件(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。这是我为自己准备的。