You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP项目Create App Package打包报错:Payload存在相同目标路径文件

问题根因

该报错是由于打包时MSBuild同时解析到了同架构下AOT编译版本和非AOT编译版本的UWP运行时库,两者存在大量同名dll文件,导致Payload路径冲突。

可落地解决方案

  • 统一所有Release架构的.NET Native编译配置
    打开项目属性页,依次切换到所有Release目标架构(x86/x64/ARM/ARM64)的配置项,进入「生成」选项卡,确认「使用.NET Native工具链编译」的勾选状态完全一致:
    • 若为提交到应用商店的正式包,建议所有架构都勾选该选项,同时同步勾选「优化代码」选项
    • 配置修改完成后清理解决方案、删除obj/bin目录后重新生成再打包
  • 手动配置排除重复Payload引用
    若上述方案无效,右键项目选择「卸载项目」,再右键选择「编辑.csproj项目文件」,在文件末尾的</Project>标签前添加如下配置:
<PropertyGroup>
  <!-- 禁用构建时自动生成Appx包 -->
  <GenerateAppxPackageOnBuild>False</GenerateAppxPackageOnBuild>
  <!-- 允许跳过重复的Payload文件 -->
  <SkipDuplicatePayloadFiles>True</SkipDuplicatePayloadFiles>
</PropertyGroup>
<Target Name="RemoveDuplicateRuntimeDlls" AfterTargets="ResolveAssemblyReferences" BeforeTargets="GetPackagingOutputs">
  <ItemGroup>
    <!-- 移除重复的AOT版本系统库引用,保留非AOT版本(如果全架构开启.NET Native则改为过滤非AOT版本即可) -->
    <ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)" Condition="
      ($([System.String]::Copy('%(ReferenceCopyLocalPaths.Filename)').StartsWith('System.')
      Or $([System.String]::Copy('%(ReferenceCopyLocalPaths.Filename)').StartsWith('Microsoft.')))
      And $([System.String]::Copy('%(ReferenceCopyLocalPaths.NuGetPackageId)').Contains('-aot'))
    " />
  </ItemGroup>
</Target>

保存后重新加载项目,再尝试执行打包操作即可。

  • 临时验证方案
    可先在「Create App Package」向导中仅选择单架构生成包,确认单架构打包正常后再逐步添加其他架构,排查是否存在特定架构的配置异常。

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:15:03