2

如何使我的编译针对 Windows 64 位进行优化?

4

4 回答 4

6

您可能还想在运行时进行检查,以确保:

using System;
using System.Runtime.InteropServices;

class SystemChecker
{
    static bool Is64Bit
    {
        get { return Marshal.SizeOf(typeof(IntPtr)) == 8; }
    }
}
于 2008-10-15T08:56:32.017 回答
4

托管项目会根据所选架构自动构建 => 在 AMD64 上创建的默认 C# 项目将是 AMD64,X86 上的 X86。默认情况下,本机始终为 32 位。

要显式设置平台:

1 打开解决方案资源管理器,选择解决方案,右键->配置管理器。

2 转到“活动解决方案平台”,单击新建。

3 在出现的“新解决方案平台”对话框中选择新平台,比如安腾。将“Copy Settings From”设置为“Any CPU”,这是“Active Solution Platform”中的默认设置。

4 单击确定。

这是来自网络日志

于 2008-10-14T22:25:39.793 回答
3

正如 Patrick Desjardins 所说,有一点补充。

如果您有使用 Interop 并使用 32 位编译的第三方 DLL,请注意。在这种情况下,您将特别需要将所有使用它的程序集设置为使用 x86,否则会发生各种奇怪的事情。

于 2008-10-14T22:29:05.747 回答
1

/platform您可以通过-flag编译为 64 位。请注意,Visual Studio Express没有直接的 64 位编译设置。

有关更多信息,请参见此处,以及此处。从第二个来源获取以下信息:

在 64 位 Windows 操作系统上:

  • 编译的程序集/platform:x86将在 WOW64 下运行的 32 位 CLR 上执行。
  • 使用 编译的可执行文件/platform:anycpu将在 64 位 CLR 上执行。
  • 使用 编译的 DLL/platform:anycpu将在与加载它的进程相同的 CLR 上执行。

运行时检查:

您可以通过以下选项之一在运行时检查执行位环境

bool is64BitProcess = IntPtr.Size == 8;
int bitProcess = IntPtr.Size*8;
//C# 4 provides System.Environment.Is64BitProcess
//TimothyP's solution:
bool is64BitProcess = Marshal.SizeOf(typeof(IntPtr)) == 8;
于 2012-09-17T20:54:31.810 回答