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

实体iPhone调试Xamarin iOS遇'resource fork...'错误(模拟器正常)

解决Xamarin.iOS在iOS 17+设备上的codesign资源叉错误

问题场景

在MacBook Pro M3(Visual Studio 2022 for Mac)上,通过USB部署Xamarin.Forms 5.0.0.2244应用到iPhone 12 mini(iOS 17.1.2)时,出现以下签名错误:

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/Xamarin.Shared.targets(3,3): Error: /usr/bin/codesign exited with code 1:
/Users/joshbula/Documents/Xamarin/FMEAMobile4/FMEAMobile4/FMEAMobile4.iOS/bin/iPhone/Debug/device-builds/iphone13.1-17.1.2/FMEAMobile4.iOS.app: resource fork, Finder information, or similar detritus not allowed (FMEAMobile4.iOS)
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/Xamarin.Shared.targets(3,3): Error: Failed to codesign '/Users/joshbula/Documents/Xamarin/FMEAMobile4/FMEAMobile4/FMEAMobile4.iOS/bin/iPhone/Debug/device-builds/iphone13.1-17.1.2/FMEAMobile4.iOS.app': /Users/joshbula/Documents/Xamarin/FMEAMobile4/FMEAMobile4/FMEAMobile4.iOS/bin/iPhone/Debug/device-builds/iphone13.1-17.1.2/FMEAMobile4.iOS.app: resource fork, Finder information, or similar detritus not allowed (FMEAMobile4.iOS)

已尝试常规方案:xattr -cr清理属性、cleanDetritus工具、删除bin/obj重建,均无效,模拟器运行正常。

针对iOS 17+的新解决方案

  • 针对性清理构建产物的扩展属性
    常规的xattr -cr可能没覆盖到Xamarin构建时生成的隐藏临时文件,执行以下命令:

    # 清理整个iOS项目目录的扩展属性
    xattr -cr /Users/joshbula/Documents/Xamarin/FMEAMobile4/FMEAMobile4/FMEAMobile4.iOS
    # 额外清理Xamarin的临时构建缓存
    xattr -cr ~/Library/Caches/Xamarin/mtbs
    
  • 修改Xamarin.iOS构建配置,禁止生成资源叉
    在iOS项目的.csproj文件中添加以下配置,强制构建过程中清除扩展属性:

    <PropertyGroup>
      <CodesignExtraArgs>--remove-signature</CodesignExtraArgs>
      <AfterCodesign>
        xattr -cr "$(AppBundleDir)"
      </AfterCodesign>
    </PropertyGroup>
    

    添加后保存,重新清理并构建项目。

  • 检查Mac系统的“隐私与安全性”设置
    iOS 17+对签名权限要求更严格:

    • 打开系统设置→隐私与安全性→完全磁盘访问,确保Visual Studio和codesign(路径/usr/bin/codesign)已被授权。
    • 重启Visual Studio和Mac,重新连接设备。
  • 更新Xamarin相关组件
    打开Visual Studio for Mac→检查更新,确保Xamarin.iOS、Mono等组件是最新稳定版,旧版本可能对iOS 17的签名逻辑兼容不足。

  • 手动重新签名.app包
    如果以上方法无效,尝试手动签名:

    1. 先构建项目到bin目录(不要部署到设备)
    2. 执行以下命令(替换为你的开发团队ID和Provisioning Profile相关信息):
    # 先清除属性
    xattr -cr /Users/joshbula/Documents/Xamarin/FMEAMobile4/FMEAMobile4/FMEAMobile4.iOS/bin/iPhone/Debug/device-builds/iphone13.1-17.1.2/FMEAMobile4.iOS.app
    # 重新签名
    codesign -f -s "你的开发团队ID" --entitlements "/Users/joshbula/Documents/Xamarin/FMEAMobile4/FMEAMobile4/FMEAMobile4.iOS/Entitlements.plist" /Users/joshbula/Documents/Xamarin/FMEAMobile4/FMEAMobile4/FMEAMobile4.iOS/bin/iPhone/Debug/device-builds/iphone13.1-17.1.2/FMEAMobile4.iOS.app
    

    完成后再尝试部署到设备。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:00:07