GitHub提交Pull Request时出现Duplicate Entry错误如何解决
PRI175/PRI222 资源构建错误解决方案
你遇到的是WinUI项目构建时生成PRI(Package Resource Index)资源索引文件的典型报错,具体错误信息如下:
GENERATEPROJECTPRIFILE : error : PRI175: 0x80073b0f - Processing Resources failed with error: Duplicate Entry. [C:\workspace\ES\samplebrowser-winui\samplebrowser-winui\calendar\oraganization.calendardemos.winui_lib_net50.csproj] GENERATEPROJECTPRIFILE : error : PRI222: 0x80073b0f - Unspecified error occurred. [C:\workspace\ES\samplebrowser-winui\samplebrowser-winui\calendar\organization.calendardemos.winui_lib_net50.csproj]
可行解决步骤
- 首先检查报错的calendar模块目录下的csproj文件,你提供的报错里出现了两个名称接近的csproj文件:一个是拼写错误的
oraganization.calendardemos.winui_lib_net50.csproj,另一个是拼写正确的organization.calendardemos.winui_lib_net50.csproj,直接删除拼写错误的冗余csproj文件即可解决大部分此类问题。 - 如果删除后仍报错,打开正确的csproj文件,检查所有
<PRIResource>、<Content>、<EmbeddedResource>配置节点,确认没有同一个资源文件被多次引用的情况。 - 清理本地和CI环境的构建缓存:
- 本地删除解决方案所有项目的
bin、obj目录,执行dotnet clean后重新构建,确认本地可正常编译再提交代码。 - 清理GitHub Actions的历史构建缓存,或者在CI工作流的构建步骤前添加
dotnet clean命令,避免缓存的冗余文件导致构建失败。
- 本地删除解决方案所有项目的
- 排查模块下所有
.resw、.resx资源文件,确认没有重复的键名定义,多语言资源文件也不要出现冲突的资源ID。 - 如果你的项目引用了多个第三方类库,检查是否有类库和当前模块的资源ID冲突,给模块内的所有资源ID加上模块专属前缀避免重复。
为什么GitLab重建有效而GitHub无效
你之前在GitLab使用的CI工作流默认没有开启构建缓存,每次重建都会使用全新的干净环境执行构建,自然不会有上次构建残留的冗余文件。而你的GitHub CI大概率开启了构建缓存,冗余的中间文件一直留在缓存里,所以重复构建也会报错,清理CI缓存后即可恢复正常。
内容的提问来源于stack exchange,提问作者Groot
相关产品推荐
相关产品推荐

