迁移Xamarin至.NET MAUI后DevOps CI构建报错APT2113:PNG签名异常
解决方案:.NET MAUI CI构建时APT2113 PNG签名错误
针对你迁移Xamarin到.NET MAUI后,本地Release构建正常但DevOps CI流水线出现PNG签名错误的问题,可尝试以下排查和解决步骤:
1. 清理CI构建缓存
CI环境的obj目录可能残留旧的损坏生成文件,构建前强制清理工作目录:
在Build步骤前添加清理任务:
- task: CmdLine@2 displayName: 'Clean project' inputs: script: | dotnet clean $(app-path-project) -c Release
或者在publish命令中加入清理参数:
dotnet publish $(app-path-project) -c Release -f $(app-target-framework-android) /p:ApplicationId=$(app-id-android) /p:Clean=true
2. 确认图片的构建操作配置
检查项目文件(.csproj)中这些PNG图片的BuildAction是否正确设置为MauiImage,确保配置类似:
<ItemGroup> <MauiImage Include="Resources\Images\logout.png" /> <MauiImage Include="Resources\Images\receiver.png" /> <MauiImage Include="Resources\Images\clear.png" /> </ItemGroup>
迁移过程中可能残留Xamarin时代的AndroidResource配置,导致Resizetizer处理异常。
3. 临时禁用Resizetizer排查问题
在publish命令中添加参数禁用Resizetizer,验证是否为图片处理环节的问题:
dotnet publish $(app-path-project) -c Release -f $(app-target-framework-android) /p:ApplicationId=$(app-id-android) /p:EnableResizetizer=false
如果构建成功,说明是Resizetizer的版本或配置问题,建议升级.NET MAUI SDK到最新稳定版。
4. 对齐本地与CI的.NET MAUI SDK版本
确认CI代理环境的.NET MAUI SDK版本与本地开发环境完全一致。旧版本的Resizetizer存在已知的图片处理bug,可在CI流水线中添加SDK安装步骤指定版本:
- task: UseDotNet@2 displayName: 'Install .NET 7 SDK' inputs: packageType: 'sdk' version: '7.0.400' # 替换为你本地使用的版本
5. 检查Git文件拉取完整性
如果使用Git LFS存储图片,需确保CI流水线正确配置了LFS拉取,避免生成的是LFS占位符文件而非真实PNG。可在CI步骤中添加:
git lfs pull
内容的提问来源于stack exchange,提问作者Taranveer Johal
相关产品推荐
相关产品推荐

