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

.NET 8 MAUI iOS在Azure Pipeline中代码签名密钥找不到的解决方法

解决Azure Pipeline iOS代码签名问题:密钥找不到及参数传递错误

问题根源分析

  1. 参数传递错误:你的CodesignKey值包含空格、逗号、括号等特殊字符,直接在命令行传递时未正确转义,导致被拆分为多个无效参数,触发Switch: Distribution或Property not valid错误。
  2. 钥匙串无对应密钥:No Valid ios code signing key found in keychain说明构建代理的macOS钥匙串中未导入对应的发布证书。

分步解决方案

1. 正确传递带特殊字符的签名密钥参数

在Azure Pipeline的DotNet发布任务中,针对包含特殊字符的属性值,需根据语法规则转义:

  • YAML配置:用双单引号包裹密钥值(YAML中单引号转义方式):
- task: DotNetCoreCLI@2
  displayName: '发布iOS应用'
  inputs:
    command: 'publish'
    projects: '**/YourApp.csproj'
    arguments: >-
      -c Release
      -r ios-arm64
      -p:CodesignKey=''iPhone Distribution: Companyname, Inc. (USER ID)''
      -p:CodesignProvision=MyAppProvision
      -p:CodesignEntitlements=Entitlements.plist
  • 经典编辑器配置:在"Arguments"输入框中,用单引号包裹密钥值:
-c Release -r ios-arm64 -p:CodesignKey='iPhone Distribution: Companyname, Inc. (USER ID)' -p:CodesignProvision=MyAppProvision -p:CodesignEntitlements=Entitlements.plist

2. 确保证书与描述文件导入构建代理

在DotNet发布任务前,添加两个必备任务:

  • Install Apple Certificate:上传你的iOS发布证书(.p12格式),填写证书密码,设置钥匙串路径为~/Library/Keychains/login.keychain-db
  • Install Apple Provisioning Profile:上传对应的MyAppProvision描述文件

这两个任务会将证书和描述文件导入macOS代理的钥匙串,解决"找不到有效签名密钥"的问题。

3. 验证.csproj配置的触发条件

确保Pipeline中设置的Configuration和Platform与.csproj里的Condition完全匹配:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">

检查Pipeline的构建变量或任务参数中,是否指定了Configuration=Release和Platform=iPhone,避免因条件不匹配导致.csproj中的签名配置未生效。

4. 确认构建代理环境

iOS应用构建必须使用macOS代理池,Windows或Linux代理无法完成iOS代码签名,需在Pipeline设置中选择Azure Pipelines下的macOS-latest代理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:18:26