0

我想知道对于 Windows Phone 8 应用程序,获取和处理 WMAppManifest 版本的正确方法是什么。

基本上,我的情况是这样的:我想实施一个检查,如果它不是最新版本,则不会让用户使用该应用程序。在这种情况下,我想检查用户的版本号。目前我这样做:

        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 检索)包含版本我是在上传到商店时输入的?

4

2 回答 2

2

项目的版本存储在AssemblyInfo.cs.
这个:[assembly: AssemblyVersion("1.0.0.0")]

您可以通过反射获取程序集信息:(System.Reflection.Assembly.GetExecutingAssembly()搜索FullName属性)。

因此,您不必查询 WMAppManifest(实际上也不应该)。WMAppManifest 和 AssemblyInfo 中的版本号必须始终保持同步!

您必须在仪表板中输入的版本号用于商店,而不是自动从清单中获取。

总结一下,有3个地方需要维护版本号。但是您应该始终从 AssemblyInfo 中查询它!

于 2014-05-18T09:10:40.663 回答
0

MSDN 中没有关于 Windows Phone 应用程序版本控制的指导,也没有更新 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 Store 不处理这些文件中的任何一个,因此将其保存在哪里并不重要。

于 2014-07-28T13:21:40.477 回答