[英]Programmatically read target platform during run time
我想知道(出于记录目的)存储应用程序是否已针对x86 / x64 / AnyCPU / Win32进行了编译。
我什么都找不到,但是似乎该信息在运行时应该可用。
转到项目属性,然后为每个平台添加“ 条件编译”符号 (在“ 构建”选项卡中)。 假设PLATFORM_X86
, PLATFORM_X64
和PLATFORM_ANYCPU
(您也可以从命令行使用/D
选项)。
您可以在代码中使用以下符号:
#if PLATFORM_X86
// Code specific for X86 builds
#endif
如果您需要记录日志,则可以简单地声明一个常量,例如:
#if PLATFORM_X86
private const string Platform = "X86";
#elif PLATFORM_X64
private const string Platform = "X64";
#elif PLATFORM_ANYCPU
private const string Platform = "AnyCPU";
#endif
当然,在为AnyCPU
进行编译时,您可以使用Environment.Is64BitProcess
来知道您在哪里运行。
使用IntPtr.Size
以这种方式尝试
var result="";
if (IntPtr.Size == 8)
result= "x64";
else
result="x86";
下一个方法在Windows-store-apps中不起作用,因为@Adriano Repetti标记了我。
我不会仅出于社区原因将其删除。
另一种方法是使用\\[Module.GetPEKind Method\\]
Assembly assembly = Assembly.GetExecutingAssembly();
PortableExecutableKinds p;
ImageFileMachine machineInfo;
assembly .ManifestModule.GetPEKind(out p, out machineInfo);
在这行代码之后, machineInfo
变量应为以下之一:
AMD64
ARM
为ARM处理器 I386
IA64
用于64位Intel处理器)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.