Visual Studio中“首选32位”设置的目的是什么?它实际上是如何工作的?

时间:2012-08-22 05:13:48

标签: c# .net visual-studio compilation cpu-architecture

Enter image description here

我不清楚编译器在需要时如何自动知道编译为64位。它如何知道什么时候可以自信地定位32位?

我很好奇编译器在编译时如何知道要定位的架构。它是否分析代码并根据它找到的内容做出决定?

3 个答案:

答案 0 :(得分:207)

Microsoft有一个博客条目 What AnyCPU Really Means As Of .NET 4.5 and Visual Studio 11

  

在.NET 4.5和Visual Studio 11中,奶酪已被移动。该   大多数.NET项目的默认值都是AnyCPU,但还有更多   现在对AnyCPU来说意味着一个。 AnyCPU还有一个子类型,   “任何32位首选的CPU”,这是新的默认值(总体而言,那里   现在是/ platform C#编译器开关的五个选项:x86,   Itanium,x64,anycpu和anycpu32bitpreferred)。使用“首选32位”时   AnyCPU的味道,语义如下:

     
      
  • 如果进程在32位Windows系统上运行,则它将以32位进程运行。 IL被编译为x86机器代码。
  •   
  • 如果进程在64位Windows系统上运行,则它将以32位进程运行。 IL被编译为x86机器代码。
  •   
  • 如果进程在ARM Windows系统上运行,则它将以32位进程运行。 IL编译为ARM机器代码。
  •   
     

“任何CPU 32位首选”和“x86”之间的区别是   只有这样:编译为x86的.NET应用程序将无法运行   ARM Windows系统,但“任何CPU 32位首选”应用程序将   成功运行。

答案 1 :(得分:2)

一个简单的答案:

Application arch.

注意: AnyCPU-32bitPreferred仅在.Net 4.5和更高版本中可用。

答案 2 :(得分:0)

原因是:如果您不想在64位应用程序中使用更多内存。这意味着,如果您的应用程序是 AnyCPU ,您希望以32位运行。

要添加更多内容,Visual Studio中的设置将针对特定的CLR:

  

Visual Studio在x86计算机上安装32位版本的CLR,在64位Windows计算机上安装32位版本和相应的64位版本的CLR。 (因为Visual Studio是一个32位应用程序,当它安装在64位系统上时,它在WOW64下运行。)

请参阅文章 64-bit Applications MSDN)。