如果C#代码是JIT编译的,为什么在构建时必须在Visual Studio中选择目标平台?

如果C#代码是JIT编译的,为什么在构建时必须在Visual Studio中选择目标平台?,c#,jit,C#,Jit,我的假设可能是错误的,但我认为JIT编译的主要优点是允许JIT编译器为特定硬件的目标机器编译一个可分发的文件 如果这是真的,那么为什么在编译C#时可以指定目标平台 谢谢。很多时候你不需要这样做,默认设置也可以。但是,在某些情况下,默认的任何CPU都可能导致问题。一个例子是,如果您对32位非托管dll有依赖关系。如果将其保留在任何CPU上,并尝试在64位系统上运行,抖动会将.Net代码构建为64位可执行文件,然后无法成功加载32位依赖项。在其他情况下,能够指定平台也是有利的。另一个例子是,当您构建

我的假设可能是错误的,但我认为JIT编译的主要优点是允许JIT编译器为特定硬件的目标机器编译一个可分发的文件

如果这是真的,那么为什么在编译C#时可以指定目标平台


谢谢。

很多时候你不需要这样做,默认设置也可以。但是,在某些情况下,默认的
任何CPU
都可能导致问题。一个例子是,如果您对32位非托管dll有依赖关系。如果将其保留在任何CPU上,并尝试在64位系统上运行,抖动会将.Net代码构建为64位可执行文件,然后无法成功加载32位依赖项。在其他情况下,能够指定平台也是有利的。另一个例子是,当您构建一个应用程序时,您知道该应用程序将用于将非常大的数据集加载到内存中。如果这些数据集可能超过32位程序可用的虚拟地址空间,则可能需要指定您正在构建64位应用程序。

另一个原因:32位程序有时使用更少的内存,因此在某些情况下,这可能是一个因素。