UWP项目:如何从本地化resw资源文件获取字符串?加载报错求助
UWP本地化resw字符串加载错误排查方案
检查资源文件构建操作
确认Strings目录下所有resw文件的构建操作设置为PRIResource,这是UWP识别资源文件的核心配置。如果误设为Content或其他类型,资源不会被打包进PRI文件,必然加载失败。验证ResourceLoader调用语法
拆分资源文件时,调用参数要和文件路径严格对应:- 若
About.resw直接放在Strings/en-GB目录下,项目根命名空间为YourAppName,正确调用代码应为:var loader = ResourceLoader.GetForViewIndependentUse("About"); string eulaText = loader.GetString("EULA"); - 注意:只有资源文件在子文件夹(如
Strings/en-GB/Assets/About.resw)时,才需要用Assets/About作为参数;直接在语言文件夹下时,仅需传入文件名。
- 若
确认资源项命名格式
检查About.resw中的EULA项:- 确保名称列准确填写
EULA,不要添加前缀(如About.EULA) - 值列必须填入对应字符串内容,不要误填到注释列或其他列
- 确保名称列准确填写
检查语言文件夹命名规范
语言文件夹名称必须符合BCP 47标准,比如en-GB是正确格式,避免写成en_GB或enGB。命名错误会导致UWP无法匹配系统语言对应的资源文件夹。清理并重建项目
缓存的PRI文件可能引发异常,执行以下操作:- 删除项目目录下的
bin和obj文件夹 - 在Visual Studio中依次执行「生成」→「清理解决方案」→「生成解决方案」
- 重启Visual Studio后重新运行项目
- 删除项目目录下的
验证资源打包情况
用makepri.exe工具检查PRI文件内容,确认EULA项是否存在:- 找到项目输出文件夹中的
resources.pri文件 - 运行命令:
makepri dump /pr . /if resources.pri - 在输出内容中搜索
EULA,确认是否存在对应条目和值
- 找到项目输出文件夹中的
内容的提问来源于stack exchange,提问作者damichab
相关产品推荐
相关产品推荐

