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

bpl*_*lus 3 c# jit

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

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

谢谢.

Joe*_*orn 9

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