Azure Pipeline构建.NET 8 MAUI项目遇XABBA7009错误的解决咨询
我创建了一个Visual Studio 2022默认的.NET 8.0 MAUI项目TestMauiApp,随后向解决方案添加了MAUI类库MauiLibrary并在项目中引用。在Azure Pipeline构建时出现XABBA7009错误:
"/Users/runner/work/1/s/TestMauiApp/TestMauiApp.sln" (SignAndroidPackage target) (1) - "/Users/runner/work/1/s/TestMauiApp/SkiaGum.Mobile/MauiLibrary.csproj" (SignAndroidPackage target) (3) - (_BuildApkEmbed target) - /Users/runner/hostedtoolcache/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.43/tools/Xamarin.Android.Common.targets(2150,3): error XABBA7009: System.InvalidOperationException: Assembly compression info not found for key '__CompressedAssembliesInfo:/Users/runner/work/1/s/TestMauiApp/SkiaGum.Mobile/MauiLibrary.csproj'. Compression will not be performed. [/Users/runner/work/1/s/TestMauiApp/SkiaGum.Mobile/MauiLibrary.csproj::TargetFramework=net8.0-android] /Users/runner/hostedtoolcache/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.43/tools/Xamarin.Android.Common.targets(2150,3): error XABBA7009: at Xamarin.Android.Tasks.BuildApk.RunTask() [/Users/runner/work/1/s/TestMauiApp/SkiaGum.Mobile/MauiLibrary.csproj::TargetFramework=net8.0-android] /Users/runner/hostedtoolcache/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.43/tools/Xamarin.Android.Common.targets(2150,3): error XABBA7009: 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 25 [/Users/runner/work/1/s/TestMauiApp/SkiaGum.Mobile/MauiLibrary.csproj::TargetFramework=net8.0-android]
我找不到相关问题信息,不知道怎么解决。
更新1
我尝试在MauiLibrary的csproj文件中添加以下配置:
<AndroidEnableAssemblyCompression>false</AndroidEnableAssemblyCompression>
虽然绕过了原错误,但出现了同编号的新错误:
"/Users/runner/work/1/s/TestMauiApp/TestMauiApp.sln" (SignAndroidPackage target) (1) - "/Users/runner/work/1/s/TestMauiApp/SkiaGum.Mobile/MauiLibrary.csproj" (SignAndroidPackage target) (3) - (_BuildApkEmbed target) - /Users/runner/hostedtoolcache/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.43/tools/Xamarin.Android.Common.targets(2150,3): error XABBA7009: System.InvalidOperationException: Assembly store generator did not generate any stores [/Users/runner/work/1/s/TestMauiApp/SkiaGum.Mobile/MauiLibrary.csproj::TargetFramework=net8.0-android] /Users/runner/hostedtoolcache/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.43/tools/Xamarin.Android.Common.targets(2150,3): error XABBA7009: at Xamarin.Android.Tasks.BuildApk.AddAssemblies(ZipArchiveEx apk, Boolean debug, Boolean compress, IDictionary`2 compressedAssembliesInfo, String assemblyStoreApkName) [/Users/runner/work/1/s/TestMauiApp/SkiaGum.Mobile/MauiLibrary.csproj::TargetFramework=net8.0-android] /Users/runner/hostedtoolcache/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.43/tools/Xamarin.Android.Common.targets(2150,3): error XABBA7009: at Xamarin.Android.Tasks.BuildApk.ExecuteWithAbi(String[] supportedAbis, String apkInputPath, String apkOutputPath, Boolean debug, Boolean compress, IDictionary`2 compressedAssembliesInfo, String assemblyStoreApkName) [/Users/runner/work/1/s/TestMauiApp/SkiaGum.Mobile/MauiLibrary.csproj::TargetFramework=net8.0-android] /Users/runner/hostedtoolcache/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.43/tools/Xamarin.Android.Common.targets(2150,3): error XABBA7009: at Xamarin.Android.Tasks.BuildApk.RunTask() [/Users/runner/work/1/s/TestMauiApp/SkiaGum.Mobile/MauiLibrary.csproj::TargetFramework=net8.0-android] /Users/runner/hostedtoolcache/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.43/tools/Xamarin.Android.Common.targets(2150,3): error XABBA7009: 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 25 [/Users/runner/work/1/s/TestMauiApp/SkiaGum.Mobile/MauiLibrary.csproj::TargetFramework=net8.0-android]
我不确定这是不是有效解决方法,而且问题没解决。如果从解决方案中移除MauiLibrary,项目构建完全正常。
更新2:Azure Pipeline YAML配置
trigger: - master stages: - stage: BuildiOS jobs: - job: BuildMAUIApps displayName: Build App pool: vmImage: 'macOS-12' demands: - MSBuild steps: - task: DownloadSecureFile@1 displayName: 'TMA DownloadSecureFile keystore' name: keystore inputs: secureFile: 'platform.keystore' - task: UseDotNet@2 displayName: .NET Version inputs: packageType: 'sdk' version: '8.0.100' - task: Bash@3 displayName: Install MAUI inputs: targetType: 'inline' script: | dotnet nuget locals all --clear dotnet workload install android ios maui --source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json --source https://api.nuget.org/v3/index.json - task: Bash@3 displayName: Restore nuget inputs: targetType: 'inline' script: | cd TestMauiApp/ dotnet restore TestMauiApp.sln --no-cache - task: Bash@3 displayName: TMA Maui Build inputs: targetType: 'inline' script: | cd TestMauiApp/ dotnet build -f net8.0-android -c Release -v d -t:SignAndroidPackage -p:AndroidPackageFormat=aab -p:AndroidKeyStore=True -p:AndroidSigningKeyStore=$(keystore.secureFilePath) -p:AndroidSigningStorePass=storePass -p:AndroidSigningKeyAlias=keyAlias -p:AndroidSigningKeyPass=keyPass - task: Bash@3 displayName: 'build ls' inputs: targetType: 'inline' script: | ls workingDirectory: ${{ format('{0}{1}', variables['System.DefaultWorkingDirectory'], 'TestMauiApp/TestMauiApp/bin/Release/net8.0-android/') }} failOnStderr: true - task: CopyFiles@2 displayName: 'TMA CopyFiles' inputs: SourceFolder: ${{ format('{0}{1}', variables['System.DefaultWorkingDirectory'], 'TestMauiApp/TestMauiApp/bin/Release/net8.0-android/') }} contents: '*Signed.aab' targetFolder: '$(build.artifactStagingDirectory)/AAB' - task: PublishBuildArtifacts@1 displayName: 'TMA PublishBuildArtifacts' inputs: ArtifactName: 'AAB' pathtoPublish: '$(build.artifactStagingDirectory)/AAB'
针对这个XABBA7009错误,有几个可行的解决方向:
1. 调整构建目标,直接构建主项目而非解决方案
问题出在构建解决方案时,MAUI类库被单独执行了SignAndroidPackage目标,而类库本身不需要签名打包操作。修改构建脚本,直接指定主项目(TestMauiApp.csproj)而非解决方案:
dotnet build TestMauiApp/TestMauiApp.csproj -f net8.0-android -c Release -v d -t:SignAndroidPackage -p:AndroidPackageFormat=aab -p:AndroidKeyStore=True -p:AndroidSigningKeyStore=$(keystore.secureFilePath) -p:AndroidSigningStorePass=storePass -p:AndroidSigningKeyAlias=keyAlias -p:AndroidSigningKeyPass=keyPass
这样只会处理主项目,类库作为依赖被正确打包进主项目的AAB,不会触发类库的错误打包流程。
2. 禁用类库的Android打包相关目标
在MauiLibrary.csproj中添加配置,阻止类库执行Android打包相关任务:
<PropertyGroup> <IsPackable>false</IsPackable> <AndroidPackageFormat>None</AndroidPackageFormat> </PropertyGroup>
这会告诉构建系统,这个类库不需要生成独立的Android包,避免触发错误的_BuildApkEmbed任务。
3. 更新.NET MAUI workload到最新版本
你的构建脚本中使用了dotnet7的源来安装workload,这可能导致版本不兼容。修改安装命令,使用dotnet8的官方源:
dotnet workload install android ios maui --source https://api.nuget.org/v3/index.json
同时确保使用的.NET SDK版本是8.0.x的最新稳定版,比如8.0.200或更高,修复已知的构建bug。
4. 清理构建缓存并重新还原
在构建前增加更彻底的清理步骤:
dotnet clean TestMauiApp.sln dotnet nuget locals all --clear dotnet restore TestMauiApp.sln
避免缓存的旧构建文件导致的冲突。
内容的提问来源于stack exchange,提问作者Victor Chelaru

