0

阅读微软对 /platform 不同选项的解释,我发现当我使用 /platform:anycpu 时,它将在 32 位系统上作为 32 位应用程序运行,在 64 位系统上作为 64 位应用程序运行。

那么我为什么要强制它使用例如 x64 呢?

人们是否有理由使用其他选项?

4

3 回答 3

1

必须重要和有用的不同之处在于内存管理。x86 应用程序不能分配超过 4GB 的 RAM。但是 x64 应用程序可以。并且:

它与 CLR 在实现时如何执行您的代码有关。请记住,CLR 即时编译您的代码,而首先请求 IL 代码组装成机器代码,然后缓存(这就是为什么第一次访问在您的应用程序上较慢的原因)。现在,如果您选择 x86,您将标记应用程序将在 x86 处理器上运行的代码,因此 CLR 可以使用专门用于该类型处理器的汇编程序函数(利用性能优势)。如果您选择 x64 也会发生同样的情况,其中寄存器更大,并且有新的 x64 函数可以加速您的应用程序。如果您选择“Any”,CLR 将不使用任何 CPU 特定功能,并且将保留标准指令集。

参考:项目设置 CPU:x86、x64、Any CPU

希望这有助于理解。

于 2014-08-06T15:19:04.690 回答
0

例如,当您尝试加载用 c++ 创建的 dll 时,这一点很重要。我有一个特殊情况,当我在 x64 或任何 CPU 中编译时无法执行我的程序,但它在 32 位中运行良好。

在其他情况下,当您为 ASP.Net 页面制作 dll 时。如果以 32 位编译它,则必须配置 IIS 才能正确加载它们。

于 2014-08-06T14:52:23.620 回答
0

当您编写一个只能在 64 位操作系统上执行的应用程序时。即当它被触发时,出于某种原因,您需要 64 个本机代码。

一个原因是您想加载一个无法加载到 32 位进程中的仅限 64 位的本机 dll。例如,它不是.net dll。

于 2014-08-06T14:55:34.670 回答