【发布时间】:2012-01-16 04:57:39
【问题描述】:
我最近开始了一份新工作,我注意到每个人都在谈论的第一件事是将我们的 所有 .NET 应用程序“更新”到 x64。我最初认为这很奇怪,因为我们都知道 .NET 编译为与平台无关的 IL 并且特定的 CLR 运行代码。
进一步看,我发现 this helpful article 和 this SO post 有助于解释事情。
所以现在我知道 IL 没有改变,只有元数据基本上说在 WOW64 中运行或不在 x64 系统上运行(简而言之)。
因此,如果我在 x64 系统上,我可以指定“任何 CPU”以本地运行,但不支持 32 位 dll;我可以指定支持 32 位 dll 的“x86”(因为它们都将在 WOW64 下运行); 但我什么时候可以指定“x64”?在 x64 系统上的“任何 CPU”方案中似乎支持 64 位 dll。如果我想阻止某人在 32 位系统上运行我的应用程序或确保在尝试加载 32 位 dll 时失败?
在我看来,如果您在项目中需要担心一些第 3 方 dll,您只需需要将其设置为“任何 CPU”以外的其他值。对于不处理其他 dll 的所有其他项目,是否最好将其保留为“任何 CPU”?
如果我碰巧将目标设置为“x86”,因为我有一个 32 位 3rd 方 dll,如果在 WOW64 下的 64 位系统上,我的应用程序实际上是否被认为是在 64 位上运行的?
【问题讨论】:
-
您不能在安装程序中忽略它。如果您有 x64 要求,则必须将安装程序的 TargetPlatform 设置设置为 x64。如果您不这样做,它将无法正确安装。由于安装程序现在已经确保 64 位操作系统可用,现在您为 EXE 项目选择什么不再重要。还不如使用 AnyCPU。
标签: .net visual-studio-2010 build 64-bit