Версия приложения WP7

#windows-phone-7 #manifest

Вопрос:

Приложение для Windows Phone 7, похоже, имеет два места с номером версии — одно в AssemblyInfo.cs (через AssemblyVersion / AssemblyFileVersion атрибуты), другое — WMAppManifest.xml. Эти два кажутся некоррелированными — изменение одного не влияет на другое. Рынок, похоже, использует тот, что указан в манифесте — может кто-нибудь, пожалуйста, подтвердить это?

Реальный вопрос заключается в том, как мне получить его из манифеста программно для отображения на экране «О программе»?

Ответ №1:

В WmAppManifest.xml номер используется. Первые две цифры относятся к Marketplace (это проверяется при обновлении) , следующие две-для вашего внутреннего использования.

Это обычный XML-файл, откройте его как XDocument и проанализируйте его. Вот вам пример.

ИЗМЕНИТЬ: пример является посторонним. Только для этой версии используйте:

 string Version = XDocument.Load("WMAppManifest.xml")
    .Root.Element("App").Attribute("Version").Value;
 

Комментарии:

1. Спасибо. «Первые два «и» следующие два » — что вы имеете в виду? В манифесте есть только Version , AppPlatformVersion есть что-то совершенно другое.

2. Версия=»1.3.0.0″ 1.3 действительна для торговой площадки 0.0 предназначена только для вас

3. Соответствующая информация заключается в том, что манифест отправляется на устройство как есть (необработанный) и легко доступен в виде XML-файла во время выполнения. Это не сразу очевидный дизайн.

4. Эта строка кода могла бы сэкономить мне несколько часов! Он работает с Unity, на всякий случай, если кому-то это понадобится.

Ответ №2:

Чтобы получить версию приложения от «WMappManifest.xml», это решение может быть немного более эффективным, чем решение Лукаса:

Для WP7:

 var xmlReaderSettings = new XmlReaderSettings
{
    XmlResolver = new XmlXapResolver()
};
using (var xmlReader = XmlReader.Create("WMAppManifest.xml", xmlReaderSettings))
{
    xmlReader.ReadToDescendant("App");
    return xmlReader.GetAttribute("Version");
}
 

Для WP8:

 using (var stream = new FileStream("WMAppManifest.xml", FileMode.Open, FileAccess.Read))
{
    string appVersion = XElement.Load(stream).Element("App").Attribute("Version").Value;
}
 

Комментарии:

1. Я не думаю, что эффективность имеет большое значение для экрана «О программе».

2. Я не думаю, что ответ был специфичен для экрана «О программе», но специфичен для того, как получить номер версии.