gpt4 book ai didi

.net - 何时在 Visual Studio 中面向 x64

转载 作者:行者123 更新时间:2023-12-04 11:13:31 25 4
gpt4 key购买 nike

我最近开始了一份新工作,我注意到每个人都在谈论的第一件事就是将我们所有的 .NET 应用程序“更新”到 x64。我最初认为这很奇怪,因为我们都知道 .NET 编译为与平台无关的 IL,并且特定的 CLR 运行代码。

再往前看,我发现 this helpful articlethis SO post这有助于解释事情。

所以现在我明白 IL 没有改变,只有元数据基本上说在 WOW64 或不在 x64 系统上运行(简而言之)。

因此,如果我在 x64 系统上,我可以指定“任何 CPU”来本地运行,但不支持 32 位 dll;我可以指定支持 32 位 dll 的“x86”(因为它们都将在 WOW64 下运行); 但是我什么时候会指定“x64” ?在 x64 系统上的“任何 CPU”方案中似乎支持 64 位 dll。这是如果我想阻止某人在 32 位系统上运行我的应用程序或确保在尝试加载 32 位 dll 时失败?

在我看来,你也会只有如果您的项目中有一些 3rd 方 dll 需要担心,则需要将其设置为“Any CPU”以外的其他内容。对于不处理其他 dll 的每个其他项目,最好将其保留为“任何 CPU”吗?

如果我碰巧将目标设置为“x86”,因为我有一个 32 位的 3rd 方 dll,那么如果在 WOW64 下的 64 位系统上,我的应用程序实际上是否被认为是在 64 位上运行的?

最佳答案

是的,如果您正在调用本身为 64 位的 DLL(或者因为它是 native 的,或者是一个本身调用 64 位 native DLL 的托管 DLL,等等),您将指定项目应该编译为 x64。

同样,如果您正在处理 32 位 3rd 方 DLL,则指定它应该是 x86;如果在 64 位版本的 Windows 上运行,则不会将其视为 64 位应用程序。

如果您只是处理纯托管代码,那么我会将其保留为“任何”。我通常也将 DLL 保留为“任何”,即使可执行文件将被指定为 x86 或 x64。

即使您正在处理 native dll,如果您使用 PInvoke,您仍然可以将其保留为“any”;您可以有两个版本的类环绕它,一个用于 x86,一个用于 x64,然后通过检查 IntPtr.Size 属性选择在运行时使用哪个版本。

当然,如果您的应用程序需要超过 4 GB 的 RAM 并且您想强制它必须在 64 位操作系统上运行,那么您还需要以 x64 为目标。

关于.net - 何时在 Visual Studio 中面向 x64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8436363/

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