Visual Studio Mac中MAUI iOS应用归档失败,三类错误求助
iOS应用归档问题解决方案
针对你执行sudo dotnet publish -f:net6.0-ios -c:Release -r ios-arm64 --self-contained时遇到的三类错误,逐个给出解决方法:
错误1:NETSDK1032 RuntimeIdentifier平台'ios-arm64'与PlatformTarget 'x64'不兼容
不用手动修改csproj.user,直接在主项目的.csproj文件里添加条件性配置,同时兼容真机归档和模拟器调试:
<PropertyGroup Condition=" '$(Configuration)|$(TargetFramework)|$(RuntimeIdentifier)' == 'Release|net6.0-ios|ios-arm64' "> <PlatformTarget>arm64</PlatformTarget> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(TargetFramework)' == 'Debug|net6.0-ios' "> <PlatformTarget>x64</PlatformTarget> </PropertyGroup>
这样Release归档时自动用arm64,Debug模拟器调试用x64,不用来回改配置。
错误2:/project.assets.json无'net6.0-ios'目标
针对子项目middleware.data,按以下步骤排查:
- 打开子项目的
.csproj文件,若为类库,直接用<TargetFramework>net6.0</TargetFramework>即可(.NET 6类库可被iOS项目引用),无需单独设置net6.0-ios;若子项目是特定iOS项目,必须添加<TargetFramework>net6.0-ios</TargetFramework>。 - 清理整个解决方案的
obj和bin文件夹,终端执行dotnet restore --force强制还原依赖,或在Visual Studio Mac右键解决方案选择"Restore NuGet Packages"。 - 确认子项目被主iOS项目正确引用,未被排除在构建之外。
错误3:已设置ApplicationId仍提示需提供bundle标识符
按以下顺序排查:
- 检查
ApplicationId是否放在针对net6.0-ios的PropertyGroup里,避免全局设置被覆盖:
<PropertyGroup Condition=" '$(TargetFramework)' == 'net6.0-ios' "> <ApplicationId>com.skillbased.skillbasedapp</ApplicationId> </PropertyGroup>
- 直接在
Info.plist里添加CFBundleIdentifier字段(优先级高于csproj配置):
<key>CFBundleIdentifier</key> <string>com.skillbased.skillbasedapp</string>
- 确认
Info.plist的"Build Action"设置为"BundleResource",未被标记为"Do Not Copy"或排除在构建外。
内容的提问来源于stack exchange,提问作者inno
相关产品推荐
相关产品推荐

