WP7应用程序版本

12

一款 Windows Phone 7 应用似乎有两个版本号,一个在 AssemblyInfo.cs 中(通过 AssemblyVersion/AssemblyFileVersion 属性),另一个在 WMAppManifest.xml 中。这两个似乎无关 - 改变一个不会影响另一个。似乎 Marketplace 使用来自清单的版本号 - 请有人确认一下?

真正的问题是 - 我如何编程检索清单中的版本号以在“关于”屏幕上显示?

2个回答

28

WmAppManifest.xml中的版本号正在使用,前两位数字是Marketplace相关的(当您进行更新时进行检查),下两位数字用于您的内部使用。

这是一个普通的XML文件,将其作为XDocument打开并解析即可。这里有一个示例

编辑:示例是多余的。如果只需要版本号,请使用:

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

“First two”和“next two” - 你指的是什么?在清单中只有“Version”,而“AppPlatformVersion”则完全不同。谢谢。 - Seva Alekseyev
2
版本="1.3.0.0" 1.3适用于市场,0.0仅针对您自己。 - Lukasz Madon
1
相关信息是清单以原样(未经处理)发送到设备,并且在运行时作为XML文件轻松可用。这不是一个显而易见的设计。 - Seva Alekseyev
这行代码可能刚好为我节省了几个小时!它适用于Unity,以防有人需要。 - kshitijgandhi

1
从 "WMappManifest.xml" 获取应用程序版本,这个解决方案可能比 lukas 的解决方案更有效:
对于 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;
}

我认为关于屏幕的效率并不是很重要。 - Seva Alekseyev
我认为答案不是特定于“关于”屏幕,而是特定于如何获取版本号。 - Cœur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接