Release模式下编译/归档MAUI项目失败(针对iPhone真机)
解决MAUI iOS Release模式编译资产文件目标缺失问题
问题本质
MAUI iOS项目在Release模式下编译时,会严格校验所有引用项目的目标框架兼容性,但你的API类库无需也无法添加net6.0-ios目标,导致资产文件检查失败。以下是针对性的解决步骤:
解决方案步骤
统一类库目标框架为net6.0
将所有被引用的API类库项目的目标框架改为net6.0(而非netstandard),MAUI基于.NET 6+构建,统一目标框架能避免跨框架的资产文件匹配问题。修改类库的.csproj文件:<PropertyGroup> <TargetFramework>net6.0</TargetFramework> </PropertyGroup>在MAUI项目中添加传递性引用标记
打开MAUI项目的.csproj文件,对每个引用的API类库添加<IsTransitivePackage>true</IsTransitivePackage>属性,告诉MSBuild忽略该引用的平台目标强制匹配:<ItemGroup> <ProjectReference Include="..\project.Domain.Shared\project.Domain.Shared.csproj"> <IsTransitivePackage>true</IsTransitivePackage> </ProjectReference> <!-- 其他类库引用同理添加 --> </ItemGroup>彻底清理重建解决方案
- 右键解决方案,选择「清理解决方案」
- 手动删除所有项目的
obj和bin文件夹(避免缓存残留) - 重启开发工具(Visual Studio/Rider)
- 重新选择iPhone物理设备为目标,切换到Release模式编译
检查MAUI项目的目标框架配置
确认MAUI项目的.csproj中正确配置了多平台目标,无额外限制:<PropertyGroup> <TargetFrameworks>net6.0-ios;net6.0-android</TargetFrameworks> <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net6.0-windows10.0.19041.0</TargetFrameworks> <UseMaui>true</UseMaui> </PropertyGroup>禁用类库的包生成(可选)
如果类库无需生成NuGet包,可在其.csproj中添加以下配置,避免目标框架冲突:<PropertyGroup> <GeneratePackageOnBuild>false</GeneratePackageOnBuild> </PropertyGroup>
内容的提问来源于stack exchange,提问作者David Rutter
相关产品推荐
相关产品推荐

