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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:02:03