我的假设可能是错误的,但我认为 JIT 编译的主要优点是允许 JIT 编译器为目标机器特定硬件编译的单个可分发文件。
如果是这样,那为什么编译C#的时候可以指定目标平台呢?
谢谢。
最佳答案
很多时候你不需要,默认就可以了。但是,在某些情况下,默认的 Any CPU
可能会导致问题。一个示例是,如果您依赖于 32 位非托管 dll。如果您将其保留在 Any CPU
并尝试在 64 位系统上运行它,JITter 会将您的 .Net 代码构建为 64 位可执行文件,然后将无法成功加载 32 位-位依赖。在其他情况下,能够指定平台也是有利的。另一个例子是,当您构建一个应用程序时,您知道将用于将非常大的数据集加载到内存中。如果这些数据集可能超过 32 位程序可用的虚拟地址空间,您可能需要指定您正在构建 64 位应用程序。
关于c# - 如果 C# 代码是 JIT 编译的,为什么我在构建时必须在 Visual Studio 中选择一个目标平台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19138907/