Скопировано из обманутого вопроса:
Приложения Windows Phone 8.1 Silverlight могут использовать API версии .NET. В приложениях Universal 8.1 нет поддерживаемого механизма для получения номера версии, но вы можете попробовать использовать отражение, чтобы получить класс Windows 10 AnalyticsInfo
, который, по крайней мере, сообщит вам номер версии, если вы работаете в Windows 10.
Примечание. Проверять версию ОС почти всегда неправильно, если только вы не показываете ее пользователю (например, в окне "О программе") или отправив его на ваш сервер внутренней аналитики для обработки чисел. Его не следует использовать для принятия каких-либо решений во время выполнения, потому что в целом это плохой прокси для всего, что вы на самом деле пытаетесь сделать.
Вот пример:
var analyticsInfoType = Type.GetType(
"Windows.System.Profile.AnalyticsInfo, Windows, ContentType=WindowsRuntime");
var versionInfoType = Type.GetType(
"Windows.System.Profile.AnalyticsVersionInfo, Windows, ContentType=WindowsRuntime");
if (analyticsInfoType == null || versionInfoType == null)
{
Debug.WriteLine("Apparently you are not on Windows 10");
return;
}
var versionInfoProperty = analyticsInfoType.GetRuntimeProperty("VersionInfo");
object versionInfo = versionInfoProperty.GetValue(null);
var versionProperty = versionInfoType.GetRuntimeProperty("DeviceFamilyVersion");
object familyVersion = versionProperty.GetValue(versionInfo);
long versionBytes;
if (!long.TryParse(familyVersion.ToString(), out versionBytes))
{
Debug.WriteLine("Can't parse version number");
return;
}
Version uapVersion = new Version((ushort)(versionBytes >> 48),
(ushort)(versionBytes >> 32),
(ushort)(versionBytes >> 16),
(ushort)(versionBytes));
Debug.WriteLine("UAP Version is " + uapVersion);
Очевидно, вы можете обновить это, чтобы вернуть версию и т. д., а не печатать ее в консоли отладки.
person
Peter Torr - MSFT
schedule
02.12.2015