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

如何解决.NET Core WinUI3应用中发布输出文件路径重复问题

WinUI3项目打包时WebView2 DLL重复冲突的解决办法

问题场景

用Visual Studio 2022开发WinUI3的.NET项目(对接Microsoft Graph拉取Azure报告),打包部署到其他机器时触发重复文件错误:

error NETSDK1152: Found multiple publish output files with the same relative path: C:\Users\McTwitch\source\repos\Heimdall\obj\x64\Release\net6.0-windows10.0.19041.0\win10-x64\MsixContent\Microsoft.Web.WebView2.Core.dll, obj\x64\Release\net6.0-windows10.0.19041.0\win10-x64\R2R\Microsoft.Web.WebView2.Core.dll.

尝试在.csproj里加<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>后,又出现APPX打包错误:

Severity    Code    Description Project Path    File    Line    Source  Suppression State
Error   APPX1101    Payload contains two or more files with the same destination path 'Microsoft.Web.WebView2.Core.dll'. Source files: 
C:\Users\McTwitch\source\repos\Heimdall\obj\x64\Release\net6.0-windows10.0.19041.0\win10-x64\MsixContent\Microsoft.Web.WebView2.Core.dll
C:\Users\McTwitch\source\repos\Heimdall\obj\x64\Release\net6.0-windows10.0.19041.0\win10-x64\R2R\Microsoft.Web.WebView2.Core.dll    SIEMGUI C:\Users\McTwitch\.nuget\packages\microsoft.windowsappsdk\1.2.221109.1\buildTransitive  C:\Users\McTwitch\.nuget\packages\microsoft.windowsappsdk\1.2.221109.1\buildTransitive\Microsoft.Build.Msix.Packaging.targets   1504    Build   

已检查NuGet包管理器的合并选项,无相关条目,也找不到common.props文件。

可行解决方法

1. 手动排除重复DLL

在项目的.csproj文件中添加配置,明确排除其中一份重复的DLL,保留另一份:

<ItemGroup>
  <!-- 移除两份重复的文件引用 -->
  <Content Remove="obj\x64\Release\net6.0-windows10.0.19041.0\win10-x64\R2R\Microsoft.Web.WebView2.Core.dll" />
  <Content Remove="obj\x64\Release\net6.0-windows10.0.19041.0\win10-x64\MsixContent\Microsoft.Web.WebView2.Core.dll" />
  <!-- 保留MsixContent下的版本,确保发布时复制 -->
  <Content Include="obj\x64\Release\net6.0-windows10.0.19041.0\win10-x64\MsixContent\Microsoft.Web.WebView2.Core.dll">
    <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
  </Content>
</ItemGroup>

2. 关闭ReadyToRun编译

冲突根源可能是R2R(ReadyToRun)编译生成了重复的DLL,在.csproj的PropertyGroup中添加配置禁用R2R:

<PropertyGroup>
  <PublishReadyToRun>false</PublishReadyToRun>
</PropertyGroup>

注意:关闭R2R会略微降低应用启动速度,但能彻底解决这类重复文件问题。

3. 升级Windows App SDK版本

当前使用的Microsoft.WindowsAppSDK 1.2.221109.1可能存在WebView2打包的已知bug,尝试升级到最新稳定版:

  • 打开NuGet包管理器,找到Microsoft.WindowsAppSDK
  • 选择更新到最新稳定版本
  • 清理解决方案(菜单:生成>清理解决方案),重新生成后再打包

4. 清理缓存目录

手动删除项目根目录下的obj和bin文件夹,清理编译缓存后,重新生成项目再尝试打包。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:57:06