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

发布MAUI iOS应用报错:需启用代码签名以创建Xcode归档

解决远程Mac发布iOS应用时的「需启用代码签名才能创建Xcode归档」错误

问题描述

使用远程Mac发布.NET MAUI iOS应用,执行dotnet publish -f:net6.0-ios -c:Release时触发以下错误:

C:\Users\salazar\source\repos\OcrSolution\OcrSolution>dotnet publish -f:net6.0-ios -c:Release
MSBuild version 17.4.0+18d5aef85 for .NET
  Determining projects to restore...
  All projects are up-to-date for restore.
  OcrSolution -> C:\Users\salazar\source\repos\OcrSolution\OcrSolution\bin\Release\net6.0-ios\ios-arm64\OcrSolution.dll
C:\Program Files\dotnet\packs\Microsoft.iOS.Sdk\16.1.228\tools\msbuild\iOS\Xamarin.Shared.targets(2684,3): error : Code
 signing must be enabled to create an Xcode archive. [C:\Users\salazar\source\repos\OcrSolution\OcrSolution\OcrSolution
.csproj::TargetFramework=net6.0-ios]

已配置远程主机信息,且删除了csproj.user文件,仍无法解决。

解决方案

以下是针对该问题的排查和修复步骤:

1. 修正项目配置中的拼写错误

查看你的.csproj配置,发现ServerAddres存在拼写错误,正确属性名为ServerAddress,错误会导致远程连接时无法正确读取主机地址,进而影响签名资产验证:

<!-- 原错误配置 -->
<ServerAddres>xxx</ServerAddres>
<!-- 修改为 -->
<ServerAddress>xxx</ServerAddress>

2. 显式启用代码签名开关

在iOS Release配置的PropertyGroup中添加EnableCodeSigning属性,强制开启代码签名:

<PropertyGroup Condition="$(TargetFramework.Contains('-ios')) and '$(Configuration)' == 'Release'">
    <RuntimeIdentifier>ios-arm64</RuntimeIdentifier>
    <CodesignKey>iPhone Distribution: xxxx (xxx)</CodesignKey>
    <CodesignProvision>LingkailOcrApp</CodesignProvision>
    <ArchiveOnBuild>true</ArchiveOnBuild>
    <EnableCodeSigning>true</EnableCodeSigning> <!-- 添加该行 -->
    <TcpPort>58181</TcpPort>
    <ServerAddress>xxx</ServerAddress> <!-- 已修正拼写 -->
    <ServerUser>xxxx</ServerUser>
    <ServerPassword>xxx</ServerPassword>
    <_DotNetRootRemoteDirectory>/Users/{macOS username}/Library/Caches/Xamarin/XMA/SDKs/dotnet/</_DotNetRootRemoteDirectory>
</PropertyGroup>

3. 验证远程Mac上的签名资产有效性

  • 远程Mac必须已安装配置的分发证书(iPhone Distribution: xxxx (xxx)),且证书未过期、未被吊销
  • 确认**描述文件LingkailOcrApp**已正确安装,且其App ID与项目中ApplicationId(com.lingkail.ocrapp)完全匹配
  • 登录远程Mac的Xcode,进入Xcode > 设置 > 账户,检查Apple ID下的证书和描述文件是否正常,无警告提示

4. 清理并重建项目

  • 执行本地清理命令:dotnet clean -f:net6.0-ios -c:Release
  • 远程Mac上清理缓存:删除~/Library/Caches/Xamarin/XMA目录下的旧SDK缓存,确保使用最新的.NET iOS SDK
  • 重新执行发布命令:dotnet publish -f:net6.0-ios -c:Release

5. 确认远程连接权限

确保远程Mac的用户(ServerUser配置的账号)拥有足够权限:

  • 在远程Mac的「钥匙串访问」中检查证书的访问权限,确保当前用户能读取该证书
  • 确认远程Mac防火墙允许TcpPort(58181)的通信

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:01:03