64位操作系统的C#?

时间:2008-10-14 22:24:09

标签: c# .net 64-bit

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

4 个答案:

答案 0 :(得分:6)

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

using System;
using System.Runtime.InteropServices;

class SystemChecker
{
    static bool Is64Bit
    {
        get { return Marshal.SizeOf(typeof(IntPtr)) == 8; }
    }
}

答案 1 :(得分:4)

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

明确设置平台:

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

2转到“Active Solution Platform”,单击“新建”。

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

4单击“确定”。

这是WebLog

答案 2 :(得分:3)

帕特里克·德斯加丁斯(Patrick Desjardins)说道,还有一点点补充。

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

答案 3 :(得分:1)

您可以通过/platform - 标志编译64位。请注意, visual studio Express 没有直接的64位编译设置。

有关详细信息,请参阅here,以及here。取自第二个来源的是以下信息:

在64位Windows操作系统上:

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