.NET MAUI iOS Release版本构建失败,报错"clang++ exited with code 1"
太懂这种突然卡壳的痛苦了——明明之前Release构建iOS IPA一切顺畅,只是改了点无关紧要的代码,结果就栽在这个clang报错上,而且试了一堆常规方案都没效果。结合你给出的报错细节(空的libmono-component-hot_reload-static.a静态库文件),我整理了几个可能还没尝试过的方向,你可以逐个试试:
彻底清理Mac端的.NET运行时与NuGet缓存
你之前清理了Xamarin的缓存,但可能没覆盖到.NET MAUI专属的运行时包缓存。打开Mac终端,执行以下命令清空所有NuGet缓存并删除出问题的iOS运行时包:dotnet nuget locals all --clear rm -rf ~/.nuget/packages/microsoft.netcore.app.runtime.mono.ios-arm64完成后重启Visual Studio,让它重新下载所有依赖包,再尝试构建。
在Release模式下强制禁用热重载组件
报错里提到的静态库是热重载相关的,而Release构建完全不需要这个功能。你可以在项目的.csproj文件中添加以下配置,彻底排除热重载相关的引用:<PropertyGroup Condition="'$(Configuration)' == 'Release'"> <EnableHotReload>false</EnableHotReload> <DisableHotReload>true</DisableHotReload> <MonoLinkerAdditionalArgs>--exclude-feature hot_reload</MonoLinkerAdditionalArgs> </PropertyGroup>保存后清理解决方案的
bin和obj目录,再重新构建。修复Mac端缓存目录的权限问题
那个空文件所在的缓存目录可能存在权限异常,导致VS在复制文件时未能正确写入。先手动删除整个构建缓存目录:rm -rf ~/Library/Caches/Xamarin/mtbs/builds然后给父目录设置正确的权限,避免后续写入失败:
sudo chown -R $(whoami) ~/Library/Caches/Xamarin sudo chmod -R 755 ~/Library/Caches/Xamarin完成后重启Mac上的Xamarin Build Agent,再重新配对Mac和Visual Studio,尝试构建。
回退到之前可用的.NET 8 SDK版本
既然之前构建正常,大概率是最近.NET MAUI SDK更新带来的兼容性问题。你可以在项目根目录创建或修改global.json文件,指定一个之前能正常构建的.NET 8 SDK版本(比如8.0.16,比你当前用的8.0.17旧一个版本):{ "sdk": { "version": "8.0.16", "rollForward": "disable" } }之后再次清空NuGet缓存,恢复依赖后重新构建。
检查Mac端Xcode命令行工具的配置
Xcode更新后,命令行工具的路径可能会出现异常。在Mac终端执行以下命令,确保命令行工具指向正确的Xcode安装路径:sudo xcode-select -s /Applications/Xcode.app/Contents/Developer完成后重启Mac,再尝试构建。
另外,你提到Mac缓存目录里有个"损坏的App",除了删除该目录,也可以尝试在Visual Studio中取消与Mac的配对,然后重新配对一次,确保所有构建相关的文件都是全新生成的。
希望这些方法能帮你解决这个头疼的问题,毕竟这类突发的构建故障大多和缓存、权限或版本兼容性脱不了干系。
内容来源于stack exchange

