static bool PlatformEnsureDeclared(PermissionType permission, bool throwIfMissing) { var uwpCapabilities = permission.ToUWPCapabilities(); // If no actual UWP capabilities are required here, just return if (uwpCapabilities == null || !uwpCapabilities.Any()) { return(true); } var doc = XDocument.Load(appManifestFilename, LoadOptions.None); var reader = doc.CreateReader(); var namespaceManager = new XmlNamespaceManager(reader.NameTable); namespaceManager.AddNamespace("x", appManifestXmlns); foreach (var cap in uwpCapabilities) { // If the manifest doesn't contain a capability we need, throw if ((!doc.Root.XPathSelectElements($"//x:DeviceCapability[@Name='{cap}']", namespaceManager)?.Any() ?? false) && (!doc.Root.XPathSelectElements($"//x:Capability[@Name='{cap}']", namespaceManager)?.Any() ?? false)) { if (throwIfMissing) { throw new PermissionException($"You need to declare the capability `{cap}` in your AppxManifest.xml file"); } else { return(false); } } } return(true); }
static void PlatformEnsureDeclared(PermissionType permission) { var uwpCapabilities = permission.ToUWPCapabilities(); // If no actual UWP capabilities are required here, just return if (uwpCapabilities == null || !uwpCapabilities.Any()) { return; } var doc = XDocument.Load(appManifestFilename, LoadOptions.None); var xname = XNamespace.Get(appManifestXmlns); foreach (var cap in uwpCapabilities) { // If the manifest doesn't contain a capability we need, throw if (!doc.Root.XPathSelectElements($"//{xname}Capabilities[@Name='{cap}'")?.Any() ?? false) { throw new PermissionException($"You need to declare the capability `{cap}` in your AppxManifest.xml file"); } } }