我想知道获取和处理WMAppManifest版本的正确方法是针对Windows Phone 8应用程序。
基本上,我的情况是这样的:我想实现一个检查,如果它不是最新版本,将不允许用户使用该应用程序。在这种情况下,我想检查用户的版本号。目前我这样做:
var docRoot = XDocument.Load("WMAppManifest.xml").Root;
string versionString = docRoot.Element("App").Attribute("Version").Value;
string clientString = docRoot.Element("App").Attribute("Title").Value;
但是,当我上传清单以存储时,会在升级XAP时询问版本号。所以我的问题是,我如何获得存储在基础中的版本和/或商店是否会自动更新WMAppManifest,因此当我上传我的包时,我可以假设我的应用清单(由XDocument.Load检索)包含版本我在上传到商店时输入了吗?
答案 0 :(得分:2)
项目的版本存储在AssemblyInfo.cs
中。
这一个:[assembly: AssemblyVersion("1.0.0.0")]
您可以通过反射获取汇编信息:System.Reflection.Assembly.GetExecutingAssembly()
(搜索FullName
属性)。
所以你不必查询WMAppManifest(并且真的不应该)。 WMAppManifest和AssemblyInfo中的版本号始终必须保持同步!
您必须在仪表板中输入的版本号用于商店,而不是从清单中自动获取。
总而言之,您必须在3个地方维护版本号。但是你应该总是从AssemblyInfo中查询它!
答案 1 :(得分:0)
在MSDN中没有关于Windows Phone app版本控制的指导,也没有更新AssemblyInfo.cs 或WMAppmanifest.xml文件。
对于WMAppmanifest.xml,MSDN仅声明具有最新功能等http://msdn.microsoft.com/library/windows/apps/ff769509(v=vs.105).aspx
我认为AssemblyInfo.cs在版本化DLL库和保持对正确版本的lib的引用方面还有一段历史意义。
对我来说,WMAppmanifest.xml感觉更多"自然的地方" (在清单/单独文本文件中也指定了Android / IOS版本)将版本号放在其他信息(功能等)中。我还在Windows 8 / 8.1 Store Apps中使用清单文件(package.appxmanifest)。
在Windows 8应用程序中,您可以通过Windows.ApplicationModel.Package.Current类访问清单文件,对我而言,这表示Microsoft已更多考虑在清单文件中放置版本号。
Windows Phone商店不会处理任何这些文件,因此保留它的位置确实不重要。