Skip to content

XARRA7028 AssemblyResolutionException in Android App Release Build #9629

Closed
@uholeschak

Description

@uholeschak

Android framework version

net9.0-android

Affected platform version

VS2022 17.12.3

Description

When building and publishing an Android app in Release mode the build always fails with the following error message, but the missing System.Private.CoreLib Version=9.0.0.0 is present.
The problem is the MSBuild target _RemoveRegisterAttribute, which is run after AOT. Is seems that in this state the assembly dependencies are not accessible any more.

XARRA7028: Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'

Steps to Reproduce

  1. Create and build an Android NET9 app in release mode with the default settings:
    <AndroidPackageFormat>apk</AndroidPackageFormat>
    <AndroidLinkTool>r8</AndroidLinkTool>
    <AndroidEnableMultiDex>True</AndroidEnableMultiDex>
  1. Publish the app to the target. In this step the error occurs.

Did you find any workaround?

Disable the _RemoveRegisterAttribute target by setting in Directory.Build.Props:

<Project>
  <Target Name="PatchRemoveRegisterAttributeBefore" BeforeTargets="_RemoveRegisterAttribute">
    <PropertyGroup>
      <AndroidIncludeDebugSymbolsStd>$(AndroidIncludeDebugSymbols)</AndroidIncludeDebugSymbolsStd>
      <AndroidIncludeDebugSymbols Condition=" '$(EmbedAssembliesIntoApk)' == 'True' ">True</AndroidIncludeDebugSymbols>
    </PropertyGroup>
  </Target>
  <Target Name="PatchRemoveRegisterAttributeAfter" AfterTargets="_RemoveRegisterAttribute">
    <PropertyGroup>
      <AndroidIncludeDebugSymbols Condition=" '$(EmbedAssembliesIntoApk)' == 'True' ">$(AndroidIncludeDebugSymbolsStd)</AndroidIncludeDebugSymbols>
    </PropertyGroup>
  </Target>
</Project>

Relevant log output

XARRA7028: Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'
   bei Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters)
   bei Mono.Cecil.DefaultAssemblyResolver.Resolve(AssemblyNameReference name)
   bei Mono.Cecil.MetadataResolver.Resolve(TypeReference type)
   bei Mono.Cecil.TypeReference.Resolve()
   bei Mono.Cecil.Mixin.CheckedResolve(TypeReference self)
   bei Mono.Cecil.MetadataBuilder.GetConstantType(TypeReference constant_type, Object constant)
   bei Mono.Cecil.MetadataBuilder.AddConstant(IConstantProvider owner, TypeReference type)
   bei Mono.Cecil.MetadataBuilder.AddField(FieldDefinition field)
   bei Mono.Cecil.MetadataBuilder.AddFields(TypeDefinition type)
   bei Mono.Cecil.MetadataBuilder.AddType(TypeDefinition type)
   bei Mono.Cecil.MetadataBuilder.AddTypes()
   bei Mono.Cecil.MetadataBuilder.BuildTypes()
   bei Mono.Cecil.MetadataBuilder.BuildModule()
   bei Mono.Cecil.MetadataBuilder.BuildMetadata()
   bei Mono.Cecil.ModuleWriter.<>c.<BuildMetadata>b__2_0(MetadataBuilder builder, MetadataReader _)
   bei Mono.Cecil.ModuleDefinition.Read[TItem,TRet](TItem item, Func`3 read)
   bei Mono.Cecil.ModuleWriter.Write(ModuleDefinition module, Disposable`1 stream, WriterParameters parameters)
   bei Mono.Cecil.ModuleWriter.WriteModule(ModuleDefinition module, Disposable`1 stream, WriterParameters parameters)
   bei Mono.Cecil.ModuleDefinition.Write(Stream stream, WriterParameters parameters)
   bei Xamarin.Android.Tasks.RemoveRegisterAttribute.RunTask() in /Users/runner/work/1/s/xamarin-android/src/Xamarin.Android.Build.Tasks/Tasks/RemoveRegisterAttribute.cs:Zeile 33.
   bei 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:Zeile 25.

Metadata

Metadata

Labels

Area: App+Library BuildIssues when building Library projects or Application projects.need-attentionA xamarin-android contributor needs to review

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions