在运行时检查 Windows 商店应用 AppxManifest

Examining the Windows Store apps AppxManifest at Runtime

我尝试在运行时加载 AppxManifest 以读出应用程序的版本。我喜欢这篇文章: http://tonychampion.net/blog/index.php/2013/01/examining-the-windows-store-apps-appxmanifest-at-runtime/#comments

我尝试了 post 中的行:

var doc = XDocument.Load("AppxManifest.xml", LoadOptions.None);

但这会抛出以下异常:

{System.Xml.XmlException: An internal error has occurred.
   at System.Xml.XmlXapResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
   at System.Xml.XmlTextReaderImpl.FinishInitUriString()
   at System.Xml.XmlTextReaderImpl..ctor(String uriStr, XmlReaderSettings settings, XmlParserContext context, XmlResolver uriResolver)
   at System.Xml.XmlReaderSettings.CreateReader(String inputUri, XmlParserContext inputContext)
   at System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings, XmlParserContext inputContext)
   at System.Xml.Linq.XDocument.Load(String uri, LoadOptions options)
   at MyMedi.Src.Utilities.GetVersion()
   at MyMedi.WindowsPhone.Test.Src.UtilitiesTest.Utilities_GetVersionTest()}

谁能告诉我我做错了什么?

谢谢 NPadrutt

我不确定您为什么要这样做,但您可以尝试使用文件引用中的 ms-appx:// uri schema 加载文档。

不过,还有一种更简单的方法可以实现您的目标。

Package package = Package.Current;
PackageId packageId = package.Id;
PackageVersion version = packageId.Version;

var versionString = string.Format(
               CultureInfo.InvariantCulture,
               "{0}.{1}.{2}.{3}",
               version.Major,
               version.Minor,
               version.Build,
               version.Revision);