gpt4 book ai didi

c# - 了解 .Net 中的 32 位与 64 位

转载 作者:太空狗 更新时间:2023-10-30 00:22:49 25 4
gpt4 key购买 nike

我一直在回避构建 64 位桌面应用程序的问题,因为我以某种方式意识到这不是一件微不足道的事情,而且我想我并没有真正理解解决方案“配置管理器”对话框,平台和配置,要么。

无论如何,我刚刚尝试通过简单地将所有解决方案项目的平台更改为 x64 来转换现有应用程序,并且它奏效了。我遇到的唯一问题是其中一个项目引用的 C++ DLL 需要重建为 x64。

所以我的问题(最后)是:为什么我只有 C++ DLL 有问题,但我的解决方案中的项目引用的许多 .Net 程序集 DLL 没有问题?

究竟是什么决定了我的应用程序是否构建为 64 位?我将所有解决方案的项目更改为“x64”,但如果将它们保留为“任何 CPU”,它仍然有效,而我只将 WPF(启动)项目更改为“x64”?

编辑

所以最后似乎我只能将所有项目平台设置为“任何 CPU”而不是“x64”(TFS 服务器无法使用后者运行单元测试)。甚至引用非托管 64 位 DLL 的项目似乎也对此感到满意(不知道为什么)。

诀窍是取消选中 WPF(启动)项目属性中的 Prefer 32-bit 选项。构建的应用程序现在作为 64 位应用程序运行,并且 TFS/单元测试运行良好。

最佳答案

从正确性的角度来看,32/64 仅在您与 native 代码互操作、使用低级不安全功能或分配大量 (> 4GB) 内存时才重要。如果没有这些考虑,您不妨只使用 AnyCpu。 AnyCpu 代码将默认为您的主机操作系统位数(尽管可以更改该默认值),因此对于如今的大多数人来说,它最终将在 64 位进程中运行。

有时出于性能原因明确更喜欢 32 位或 64 位。 32 位应用程序通常对缓存更友好。当作为 64 位进程运行时,计算绑定(bind)的应用程序应该表现得更好(尽管并非总是如此)。

关于c# - 了解 .Net 中的 32 位与 64 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50619692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com