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

构建MAUI Windows应用触发APPX1101错误:存在重复README.md文件

解决MAUI Windows平台APPX1101重复README.md文件错误

问题分析

  • 在Windows环境的MAUI项目中引用两个自带README.md的自定义NuGet包(Foo.Bar 1.2.3、Ping.Pong 4.5.6)时,构建触发APPX1101错误,提示Payload目录下存在重复路径的README.md。
  • 该问题仅针对Windows平台,Android、iOS、Mac Catalyst无此异常,且net7、net8 SDK(含8.0.101)均存在此现象。
  • 核心原因是Windows平台打包APPX时,默认会将NuGet包中的非程序集资源(如README.md)复制到Payload根目录,若多个包包含同名文件且未指定唯一输出路径,就会引发文件冲突。

解决方案

方案1:修改NuGet包的打包配置

在自定义NuGet包的项目文件(.csproj)中,为README.md指定带包ID的唯一输出路径,避免根目录冲突:

<ItemGroup>
  <None Include="README.md" Pack="true" PackagePath="contentFiles\any\any\$(PackageId)\README.md" />
</ItemGroup>

打包后,每个包的README.md会被放到以自身包ID命名的子目录下,彻底避免重复。

方案2:在MAUI项目中排除重复文件

如果无法修改NuGet包,可在MAUI项目的Windows平台配置中,排除其中一个包的README.md:

<ItemGroup Condition="'$(TargetFramework)' == 'net8.0-windows10.0.19041.0'">
  <Content Remove="@(Content)" Condition="%(Filename) == 'README.md' and %(SourcePath) Contains 'Foo.Bar'" />
</ItemGroup>

根据实际情况替换Foo.Bar为需要排除的包名称,确保Payload目录下仅保留一个README.md。

方案3:禁用NuGet包资源自动复制

在MAUI项目文件中,配置禁止自动复制NuGet包中的非必要资源到Payload目录:

<PropertyGroup Condition="'$(TargetFramework)' == 'net8.0-windows10.0.19041.0'">
  <EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>

注意:此方法会禁用所有默认内容项的自动复制,需手动添加项目自身需要的资源文件。

验证步骤

  1. 清理MAUI项目的bin和obj目录
  2. 执行dotnet build -f net8.0-windows10.0.19041.0命令重新构建
  3. 确认APPX1101错误消失,Windows平台打包成功

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:02:37