WinUI3 C++桌面项目本地化资源修改需全量重建问题咨询
解决WinUI 3 C++非打包应用本地化资源修改后无需全量重建的方法
针对非打包WinUI 3 C++桌面项目,你可以通过配置生成后事件调用MakePri.exe增量更新resource.pri文件,避免每次修改资源后全量重建。以下是具体步骤:
1. 确认MakePri.exe路径
MakePri.exe随Windows SDK安装,在Visual Studio中可通过宏自动匹配项目使用的SDK版本,无需硬编码路径:
$(WindowsSdkDir)bin\$(WindowsSDKVersion)\x64\MakePri.exe
2. 创建PRI配置文件(priconfig.xml)
在项目根目录新建priconfig.xml文件,示例内容如下(可根据你的本地化需求调整语言、缩放等限定符):
<resources targetOsVersion="10.0.17763.0" majorVersion="1"> <index root="\" startIndexAt="\"> <default> <qualifiers> <language>en-US</language> <scale>100</scale> </qualifiers> <add path="\" /> </default> <indexer-config type="folder" foldernameAsQualifier="true" /> </index> </resources>
该文件用于指定资源根目录、默认限定符规则,MakePri会依据它扫描并索引.resw等本地化资源文件。
3. 配置项目生成后事件
- 在Visual Studio中右键项目 → 属性
- 导航到 生成事件 → 生成后事件 → 命令行
- 输入以下命令:
"$(WindowsSdkDir)bin\$(WindowsSDKVersion)\x64\MakePri.exe" new /pr "$(ProjectDir)" /cf "$(ProjectDir)priconfig.xml" /o /in "$(TargetDir)resources.pri" /mf "$(IntermediateOutputPath)resources.map"
命令参数说明:
new:创建新PRI文件或对现有文件进行增量更新/pr:指定项目根目录(资源文件所在的根路径)/cf:指定PRI配置文件的路径/o:覆盖现有的PRI文件(增量更新时保留未修改的资源)/in:指定输出的PRI文件路径(默认放在项目输出目录)/mf:指定资源映射文件路径,用于跟踪增量更新
4. 资源文件属性设置
确保你的.resw等本地化资源文件的生成操作设置为PRIResource:
- 右键资源文件 → 属性
- 在“常规”选项卡中,将“生成操作”改为
PRIResource
注意事项
- 首次执行生成后事件会生成初始的
resources.pri和resources.map;后续修改资源文件时,MakePri会自动增量更新,无需全量重建项目 - 若资源文件存放在项目子目录,需调整
priconfig.xml里的<add path=""/>路径,以及/pr参数指向资源所在目录 - 若遇到路径或权限问题,可手动指定完整SDK版本号(如
10.0.22621.0)替换宏$(WindowsSDKVersion)
内容的提问来源于stack exchange,提问作者sohel14_cse_ju
相关产品推荐
相关产品推荐

