#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. Я не думаю, что ответ был специфичен для экрана «О программе», но специфичен для того, как получить номер версии.