如何解决Apple Silicon Mac上Xamarin安卓构建的XAPRAS7000错误?
解决Apple Silicon Mac上Visual Studio预览版构建Xamarin Android项目的XAPRAS7000错误
在搭载Apple Silicon芯片的Mac设备上,使用Visual Studio 17.1.6 Preview版本构建Xamarin Android项目时,出现以下错误:
/usr/local/share/dotnet/packs/Microsoft.Android.Sdk.Darwin/32.0.509/targets/Microsoft.Android.Sdk.AssemblyResolution.targets(5,5): Error XAPRAS7000: System.BadImageFormatException: Image is too small. at System.Reflection.Throw.ImageTooSmall() at System.Reflection.PortableExecutable.PEHeaders.SkipDosHeader(PEBinaryReader& reader, Boolean& isCOFFOnly) at System.Reflection.PortableExecutable.PEHeaders..ctor(Stream peStream, Int32 size, Boolean isLoadedImage) at System.Reflection.PortableExecutable.PEReader.InitializePEHeaders() at System.Reflection.PortableExecutable.PEReader.GetMetadataBlock() at System.Reflection.Metadata.PEReaderExtensions.GetMetadataReader(PEReader peReader, MetadataReaderOptions options, MetadataStringDecoder utf8Decoder) at Xamarin.Android.Tasks.ProcessAssemblies.DeduplicateAssemblies(List`1 output, Dictionary`2 symbols) at Xamarin.Android.Tasks.ProcessAssemblies.RunTask() at Microsoft.Android.Build.Tasks.AndroidTask.Execute() in /Users/runner/work/1/s/xamarin-android/external/xamarin-android-tools/src/Microsoft.Android.Build.BaseTasks/AndroidTask.cs:line 17 (XAPRAS7000)
已尝试删除bin/obj目录、清理项目、设置正确架构、调整快速部署与剥离选项、重新安装Visual Studio,但问题依旧,且同配置设备可正常构建。以下是针对性解决方案:
- 验证.NET SDK架构:执行
dotnet --info查看Runtime Architecture,确保是arm64。若为x64,卸载后重新安装arm64版本的.NET SDK。 - 清除全局NuGet缓存:运行
nuget locals all -clear命令,彻底清除缓存后重新还原项目依赖,排除缓存程序集损坏的可能。 - 排查第三方依赖:逐一移除项目中的第三方NuGet包或本地程序集,每次移除后重新构建,定位是否存在损坏或架构不兼容的组件。
- 替换Android SDK包:从正常设备复制
/usr/local/share/dotnet/packs/Microsoft.Android.Sdk.Darwin/32.0.509目录下的所有内容,覆盖当前设备对应路径,解决SDK包损坏问题。 - 重置Visual Studio用户配置:删除
~/Library/Application Support/VisualStudio/17.0(对应17.x版本)目录,重启Visual Studio后会自动生成新配置,排除配置异常。
内容的提问来源于stack exchange,提问作者Acco
相关产品推荐
相关产品推荐

