添加broadFileSystemAccess后XML清单无效,VS报错如何解决?
解决VS 15.7.1 + SDK 17134添加broadFileSystemAccess权限的XML验证错误
我之前也碰到过一模一样的问题,在VS 2017 15.7.1搭配Windows SDK 17134时,直接在应用清单的<Capabilities>里添加<rescap:Capability>会触发XML无效的报错,这是因为旧版本VS的清单验证逻辑还没适配受限能力(restricted capabilities)的命名空间,下面是几个可行的解决办法:
方法1:手动编辑清单文件并绕过VS实时验证
- 右键项目中的
Package.appxmanifest文件,选择打开方式 -> XML(文本)编辑器 - 确保
Package根元素已经正确声明rescap命名空间,并且将其加入IgnorableNamespaces:<Package xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" IgnorableNamespaces="uap mp uap5 rescap"> - 在
<Capabilities>节点内添加权限声明:<Capabilities> <rescap:Capability Name="broadFileSystemAccess" /> </Capabilities> - 保存后,VS可能还会显示波浪线提示错误,但实际打包和运行时这个声明是有效的(SDK 17134对应Windows 10 1803,已经支持
broadFileSystemAccess权限)。如果不想看到错误提示,可以关闭XML验证:依次打开「工具」->「选项」->「文本编辑器」->「XML」->「高级」,取消勾选「验证」选项。
方法2:升级Visual Studio版本(推荐)
VS 15.7.x系列对UWP受限能力的清单支持存在缺陷,升级到VS 2017 15.8及以上版本,或者直接升级到VS 2019/2022,新版本的IDE已经更新了XML验证规则,能正确识别rescap命名空间下的元素,不会再出现这个错误。
额外注意事项
即使清单中添加了权限声明,你还需要在Windows系统设置中手动开启应用的文件系统权限:
- 打开「设置」->「隐私和安全性」->「文件系统」
- 找到你的应用,开启「允许此应用访问你的文件系统」选项
附报错截图:
内容的提问来源于stack exchange,提问作者An Hoa
相关产品推荐
相关产品推荐

