如何解决 Azure 管道构建中未找到键 '__CompressedAssembliesInfo 的程序集压缩信息

Vic*_*aru 7 c# android azure-devops maui

我创建了一个名为TestMauiApp的新 MAUI .NET 8.0 项目(与 Visual Studio 2022 创建的默认值相比没有任何更改) 。然后,我将一个 MAUI 类库添加到名为MauiLibrary的解决方案中,并将该类库链接到我的项目中。当我在 Azure Pipeline 上构建它时,出现以下错误:

"/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]


Run Code Online (Sandbox Code Playgroud)

我无法在任何地方找到有关此问题的信息,因此我不确定从哪里开始解决此问题。

更新1

通过将以下行添加到我的MauiLibrary csproj 文件中,我能够克服此错误(或者可能只是将其替换为其他错误)。

<AndroidEnableAssemblyCompression>false</AndroidEnableAssemblyCompression>
Run Code Online (Sandbox Code Playgroud)

通过这样做,我现在得到一个不同的错误:

 "/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]

Run Code Online (Sandbox Code Playgroud)

我不确定这是否是有效的解决方法/解决方案,但它似乎无法解决问题。

如果我从 .sln 中完全删除 MauiLibrary,那么构建项目时不会出现任何错误。

我该如何解决这个问题?

更新2

这是 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'
Run Code Online (Sandbox Code Playgroud)