如何使我的编译针对 Windows 64 位进行优化?
Mister Dev
问问题
4275 次
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 回答