.NET MAUI iOS构建报错:clang++ exited with code 1,ld:framework not found System
.NET iOS构建报错:ld:framework not found System(Xcode 14.3 + 最新版macOS)
问题现象
更新到最新版macOS和Xcode 14.3后,原.NET iOS项目构建失败,报错信息如下:
clang++ exited with code 1: ld:framework not found System clang: error: linker command failed with exit code 1
已尝试的排查操作
- 已在Visual Studio偏好设置>SDK位置>Apple中配置SDK路径,且通过终端命令
xcode-select -p确认路径正确 - 切换过多个不同的Xcode版本
- 通过
global.json指定过不同.NET版本(包括最新的7.0.203) - 尝试调整iOS目标版本时,无法设置高于16.4(提示“SupportedOSPlatformVersion 16.4不能高于TargetPlatformVersion 16.1”)
- 卸载并重装iOS workload:执行
dotnet workload uninstall ios和dotnet workload install ios命令 - 删除过项目的bin和obj目录
- 新建MAUI项目可正常构建,逐步添加故障项目所用的所有库后仍能正常运行,但原项目始终报错
可行解决建议
检查项目文件的框架引用
打开原项目的.csproj或.fsproj文件,排查是否存在错误的<FrameworkReference>或<PackageReference>,尤其是和System相关的引用,确认版本和当前.NET iOS workload兼容。另外看看有没有手动加过-framework System的链接器参数,这类参数在Xcode 14.3环境下可能引发冲突,直接删掉试试。清理全局缓存
- 执行命令清理.NET全局缓存:
dotnet nuget locals all --clear - 清理Xcode派生数据:打开Xcode,点击
Xcode>Settings>Locations,找到Derived Data对应的路径,删除该文件夹。
- 执行命令清理.NET全局缓存:
调整链接器配置
在项目属性的iOS构建选项里,切换链接器行为为Link Framework SDKs Only或Don't Link(仅用来排查问题,发布时记得调回合适选项)。同时检查有没有自定义的链接器参数,比如<MtouchExtraArgs>里的内容,暂时移除后再构建试试。重置项目MSBuild配置
先备份原项目,然后删除项目根目录下的.vs、bin、obj文件夹,再删掉用户目录~/.nuget/packages里和项目相关的包。重新打开项目,还原NuGet包后再尝试构建。统一TargetPlatformVersion配置
打开项目文件,把<TargetPlatformVersion>设置为16.4,确保和<SupportedOSPlatformVersion>版本匹配——Xcode 14.3对应的是iOS 16.4,这样就能解决版本不匹配的提示问题。
内容的提问来源于stack exchange,提问作者Jimmy
相关产品推荐
相关产品推荐

