是否有可能在运行时询问是否在ARM设备上执行了Windows应用商店应用(针对ARM和x86 / 64编译),或者在c#中的Microsoft Surface平板电脑上执行更具体的操作,或者是否需要编译两个版本的同一个应用程序在不同的平台上表现不同?
答案 0 :(得分:3)
这可以通过以下代码完成(根据此SO post): -
[DllImport("kernel32.dll")]
internal static extern void GetNativeSystemInfo(ref SystemInfo lpSystemInfo);
internal static bool IsArmBased()
{
var sysInfo = new SystemInfo();
GetNativeSystemInfo(ref sysInfo);
return sysInfo.wProcessorArchitecture == ProcessorArchitectureArm; //ushort 5
}
这确实通过了WACK测试,测试我不会指望它永远存在。想一想你为什么需要这些信息(仅用于统计数据,或者你是否正在改变应用程序的行为,如果是这样的话为什么!?)
答案 1 :(得分:1)
using Windows.ApplicationModel;
Package package = Package.Current;
PackageId packageId = package.Id;
String arch = String.Format("{0}", packageId.Architecture);
这将返回“X86”或“ARM”,具体取决于底层硬件。