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

Mac M2构建iOS版.NET MAUI Blazor Hybrid应用签名失败问题修复

.NET MAUI iOS构建代码签名错误排查求助

背景

我开发了一款用于ERP的.NET MAUI应用,目前已成功部署到Android和Windows平台,运行正常。该应用从.NET 7起步,现已升级至.NET 8。

环境

  • Apple M2 MacBook(arm64架构)
  • 最新版XCode + dotnet 8
  • 本地构建iOS版本(无法连接Mac与Windows)

构建命令

dotnet publish -f net8.0-ios -c Release

错误信息

/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk/17.2.8078/tools/msbuild/iOS/Xamarin.Shared.targets(2257,3): error : /usr/bin/codesign exited with code 1: [<Project_path>/bluelotus360.com.mauiBlazor.csproj::TargetFramework=net8.0-ios] 

/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk/17.2.8078/tools/msbuild/iOS/Xamarin.Shared.targets(2257,3): error : <Project_path>/bin/Release/net8.0-ios/ios-arm64/bluelotus360.com.mauiBlazor.app: code object is not signed at all [<Project_path>/bluelotus360.com.mauiBlazor.csproj::TargetFramework=net8.0-ios] 

/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk/17.2.8078/tools/msbuild/iOS/Xamarin.Shared.targets(2257,3): error : In subcomponent: <Project_path>/bin/Release/net8.0-ios/ios-arm64/bluelotus360.com.mauiBlazor.app/System.Xml.Linq.dll [<Project_path>/bluelotus360.com.mauiBlazor.csproj::TargetFramework=net8.0-ios] 

/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk/17.2.8078/tools/msbuild/iOS/Xamarin.Shared.targets(2257,3): error : Failed to codesign '<Project_path>/bin/Release/net8.0-ios/ios-arm64/bluelotus360.com.mauiBlazor.app': <Project_path>/bin/Release/net8.0-ios/ios-arm64/bluelotus360.com.mauiBlazor.app: code object is not signed at all [<Project_path>/bluelotus360.com.mauiBlazor.csproj::TargetFramework=net8.0-ios] 

/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk/17.2.8078/tools/msbuild/iOS/Xamarin.Shared.targets(2257,3): error : In subcomponent: <Project_path>/bin/Release/net8.0-ios/ios-arm64/bluelotus360.com.mauiBlazor.app/System.Xml.Linq.dll [<Project_path>/bluelotus360.com.mauiBlazor.csproj::TargetFramework=net8.0-ios] 

/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk/17.2.8078/tools/msbuild/iOS/Xamarin.Shared.targets(2257,3): error :  [<Project_path>/bluelotus360.com.mauiBlazor.csproj::TargetFramework=net8.0-ios] 

/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk/17.2.8078/tools/msbuild/iOS/Xamarin.Shared.targets(2257,3): error :          [<Project_path>/bluelotus360.com.mauiBlazor.csproj::TargetFramework=net8.0-ios] 

已尝试操作

已参考相关指南验证从Apple获取的证书,钥匙串中显示证书已验证。


解决建议
  • 手动指定签名证书与配置文件
    在发布命令中明确指定签名标识和Provisioning Profile,避免自动匹配异常:

    dotnet publish -f net8.0-ios -c Release /p:CodesignKey="iPhone Distribution: 你的团队名称 (团队ID)" /p:CodesignProvision="你的配置文件名称"
    

    可通过security find-identity -v -p codesigning命令查看本地可用的签名证书名称。

  • 清理构建缓存后重试
    旧缓存可能干扰签名流程,执行以下命令清理后重新构建:

    dotnet clean
    rm -rf obj bin
    dotnet publish -f net8.0-ios -c Release
    
  • 检查证书信任设置
    打开钥匙串访问,找到iOS签名证书,右键选择显示简介,在信任选项卡中将使用此证书时设为始终信任,重启终端后再尝试构建。

  • 更新并验证配置文件
    下载包含当前应用Bundle ID和最新证书的Provisioning Profile,双击安装到XCode,确保配置文件中的Bundle ID与项目Info.plist里的CFBundleIdentifier完全一致。

  • 手动测试代码签名
    尝试手动对出错的System.Xml.Linq.dll签名,排查权限或工具问题:

    codesign -s "iPhone Distribution: 你的团队名称 (团队ID)" <Project_path>/bin/Release/net8.0-ios/ios-arm64/bluelotus360.com.mauiBlazor.app/System.Xml.Linq.dll
    

    若手动签名失败,根据提示修复(比如执行chmod +x赋予文件可执行权限)。

  • 检查项目配置文件
    打开项目.csproj文件,确保iOS签名配置正确:

    <PropertyGroup Condition="'$(TargetFramework)' == 'net8.0-ios'">
      <CodesignKey>iPhone Distribution: 你的团队名称 (团队ID)</CodesignKey>
      <CodesignProvision>你的配置文件名称</CodesignProvision>
      <ArchiveOnBuild>true</ArchiveOnBuild>
    </PropertyGroup>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 06:00:18