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

UWP MSTest项目引用主应用编译报错:Payload含重复目标路径文件

解决UWP MSTest项目构建时的Payload文件冲突问题

我来帮你搞定这个UWP MSTest项目的构建冲突问题,针对你遇到的两种不同冲突场景,分别给出具体的解决步骤:

一、Newtonsoft.Json.dll 版本冲突

这个问题的根源是TestPlatform.Universal SDK自带了旧版本的Newtonsoft.Json,而你的项目又通过NuGet引入了另一个版本,打包时两个DLL撞车了。你可以试试这两种方法:

  • 方法1:强制使用NuGet版本:在测试项目(App.Test)的NuGet包管理器中,安装和主应用完全相同版本的Newtonsoft.Json(也就是你这里的11.0.1-beta1)。这样MSBuild会自动优先使用NuGet拉取的版本,把SDK自带的旧版本排除出打包列表。
  • 方法2:手动排除冲突DLL:如果NuGet的方式没生效,直接编辑测试项目的.csproj文件,添加以下代码,明确指定使用NuGet的DLL,并排除SDK里的版本:
<ItemGroup>
  <ExcludeAssetsFromDeployment Include="Newtonsoft.Json.dll" />
  <Reference Include="Newtonsoft.Json">
    <HintPath>$(NuGetPackageRoot)newtonsoft.json\11.0.1-beta1\lib\netstandard2.0\Newtonsoft.Json.dll</HintPath>
    <Private>True</Private>
  </Reference>
</ItemGroup>

二、Assets目录下的图片文件冲突

这种情况是因为测试项目引用主应用后,主应用的Assets资源会被自动纳入测试项目的打包Payload,而测试项目自己也有同名的图片,哪怕你设置了“复制到本地”为“Do not copy”也没用——UWP的打包机制会自动包含引用项目的资源。解决办法选一个就行:

  • 方法1:删除重复文件:直接删掉测试项目里和主应用同名的Assets图片(比如Wide310x150Logo.scale-200.png),测试项目可以直接复用主应用的资源,没必要重复存一份。
  • 方法2:排除主应用的资源:如果你需要保留测试项目自己的图片,编辑测试项目的.csproj文件,添加以下规则,把主应用的同名图片排除出打包范围:
<ItemGroup>
  <!-- 排除主应用传来的同名图片 -->
  <Content Remove="Assets\Wide310x150Logo.scale-200.png" />
  <!-- 确保测试项目自己的图片不会被误处理 -->
  <None Include="Assets\Wide310x150Logo.scale-200.png">
    <CopyToOutputDirectory>Never</CopyToOutputDirectory>
  </None>
</ItemGroup>

另外,右键测试项目里的主应用引用,查看“属性”,把“复制本地”设为False,进一步避免资源被重复复制。

最后再试个兜底操作

如果上面的方法都没解决问题,试试清理构建缓存:删掉测试项目和主应用的bin、obj目录,然后重新构建整个解决方案——有时候缓存里的旧文件也会搞出这种冲突。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:44:43