2011-04-15 25 views
12

Windows Phone 7應用似乎有兩個版本號的位置 - 一個位於AssemblyInfo.cs中(通過AssemblyVersion/AssemblyFileVersion屬性),另一個位置是WMAppManifest.xml。這兩個看起來不相關 - 改變一個不會影響另一個。市場似乎使用了清單中的那個 - 有人可以證實這一點嗎?WP7應用版本

真正的問題是 - 如何以編程方式從清單中檢索一個以在「關於」屏幕上顯示?

回答

28

WmAppManifest.xml號碼正在使用中。前兩位數字與市場相關(在您執行更新時會檢查),接下來的兩位數字將用於您的內部使用情況。

這是一個普通的XML文件,將其作爲XDocument打開並解析它。 An example

編輯:這個例子是無關的。對於剛剛版本,使用方法:

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

謝謝。 「前兩個」和「後兩個」 - 你是什麼意思?在清單中只有`Version`,`AppPlatformVersion`是完全不同的東西。 – 2011-04-15 18:22:39

+2

版本=「1.3.0.0」1.3適用於市場0.0僅適用於您 – 2011-04-15 18:25:25

1

從 「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; 
}