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

标签 c# jit

我的假设可能是错误的,但我认为 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/

相关文章:

时间:2019-03-08 标签:c#windowsformTabOrder

C# 代码到 GZip 并将字符串上传到 Amazon S3

c# - C# 编译器的图像调试选项如何影响 .NET JIT 编译性能(包括动态方法)?

java - java程序的编译和执行?

c# - 如何将 C 风格的 printf 格式转换为 C# 字符串格式?

c# - 适用于 .net 的 Foursquare SDK

c# - 正则表达式 'or' 运算符避免重复

c# - Windows 服务中 RuntimeHelpers.PrepareMethod 的缺点

future 框架版本中的 C# 抖动改进

java - jvm +LogCompilation输出中 "callee is too large"的含义