webentwicklung-frage-antwort-db.com.de

Die Task "LinkAssemblies" ist unerwartet fehlgeschlagen

Wenn wir versuchen, ein Xamarin Forms-Projekt im Freigabemodus zu erstellen, wird der Fehler angezeigt:

C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(5,5): Error MSB4018: The "LinkAssemblies" task failed unexpectedly.
Xamarin.Android.XamarinAndroidException: error XA2006: Reference to metadata item 'System.Void Android.Widget.AbsListView::SetSelectionFromTop(System.Int32,System.Int32)' (defined in 'Xamarin.Forms.Platform.Android, Version=1.3.3.0, Culture=neutral, PublicKeyToken=null') from 'Xamarin.Forms.Platform.Android, Version=1.3.3.0, Culture=neutral, PublicKeyToken=null' could not be resolved. ---> Mono.Cecil.ResolutionException: Failed to resolve System.Void Android.Widget.AbsListView::SetSelectionFromTop(System.Int32,System.Int32)
   at Mono.Linker.Steps.MarkStep.MarkMethod(MethodReference reference)
   at Mono.Linker.Steps.MarkStep.MarkInstruction(Instruction instruction)
   at Mono.Linker.Steps.MarkStep.MarkMethodBody(MethodBody body)
   at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method)
   at Mono.Linker.Steps.MarkStep.ProcessQueue()
   at Mono.Linker.Steps.MarkStep.Process()
   at Mono.Linker.Steps.MarkStep.Process(LinkContext context)
   at Mono.Linker.Pipeline.Process(LinkContext context)
   at MonoDroid.Tuner.Linker.Process(LinkerOptions options, LinkContext& context)
   at Xamarin.Android.Tasks.LinkAssemblies.Execute()
   --- End of inner exception stack trace ---
   at Xamarin.Android.Diagnostic.Error(Int32 code, Exception innerException, String message, Object[] args)
   at Xamarin.Android.Tasks.LinkAssemblies.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__20.MoveNext() (MSB4018) (XXX.Android)

Wie können wir das lösen? Wir haben schon wieder versucht zu reinigen und zu bauen. Sogar Xamarin Studio schließen und neu starten. Nichts scheint zu funktionieren. 

Wir sind auf der neuesten Version von Xamarin Forms und Xamarin Forms Labs. Das minimale Android-API-Level, das wir verwenden, ist 17. Ich habe sogar die minimale SDK-Version 20 ausprobiert.

Einige weitere Details:

Xamarin Studio
Version 5.7 (build 661)
Installation UUID: f97e711d-1fe0-450f-a3bb-2d9b972ab295
Runtime:
    Microsoft .NET 4.0.30319.0
    GTK+ 2.24.22 (MS-Windows theme)
    GTK# 2.12.26

Xamarin.Android
Version: 4.20.0 (Indie Edition)
Android SDK: C:\Users\Kartik\AppData\Local\Android\android-sdk
    Supported Android versions:
        2.1    (API level 7)
        2.2    (API level 8)
        2.3    (API level 10)
        3.1    (API level 12)
        4.0    (API level 14)
        4.0.3  (API level 15)
        4.1    (API level 16)
        4.3    (API level 18)
        4.4    (API level 19)
        4.4.87 (API level 20)
        5.0    (API level 21)
Java SDK: C:\Program Files (x86)\Java\jdk1.6.0_39
Java version "1.6.0_39"
Java(TM) SE Runtime Environment (build 1.6.0_39-b04)
Java HotSpot(TM) Client VM (build 20.14-b01, mixed mode, sharing)

Build Information
Release ID: 507000661
Git revision: b70bab61da996da29045ea8ee8aed1a6faedbe78
Build date: 2015-01-05 11:27:37-05
Xamarin addins: 82f6c71490562d6cd125a09287f441902fdac3d7

Operating System
Windows 6.2.9200.0 (64-bit)
31
Kartik

Offensichtlich ist dies ist ein bekanntes Problem : Xamarin Forms benötigt als TargetAndroidVersion den Wert 21. (In der Konfigurations-GUI heißt dies "Kompilieren mit Android-Version:").

22
Andy Hopper

In meinem Fall trat ein Problem auf, weil Xamarin.ios.dll zu den Referenzen von Portable Project hinzugefügt wurde. Ich habe diese Referenz entfernt und sie funktioniert jetzt

4
Onur

In meinem Fall wurde im pcl-Projekt auf das Problem dll Xamarin.iOS verwiesen. Das Verknüpfen funktioniert für diese Assembly nicht. Durch das Entfernen der Referenz wurde das Problem behoben.

3
koshiMan88

Ich habe auch das gleiche Problem erlebt. Nach einer Reihe von Versuchen und Fehlern habe ich eine Lösung gefunden.

Stellen Sie in Ihrem Manifest die Android-Version von Android 7.1 (API Level 25 Nougat) oder höher ein.

Ich hoffe das hilft

1
Uchenna Nnodim

Ich habe die Linker-Eigenschaften geändert> Linking von Sdk Assemblies Only zu Sdk und User Assemblies für die Release-Konfiguration.

 options

1
James Esh

Ich habe die Verknüpfung von "NONE" in "sdk and users Assembly" geändert und meine Lösung ausgeführt, und das Problem wurde behoben. Danach können Sie "sdk and users Assembly" in "NONE" ändern und Ihr Projekt ohne Probleme ausführen.

Die Größe der Freigabedatei kann jedoch geändert werden.

Bildbeschreibung hier eingeben

0

Ich habe das Downgrading von Xamarin.Android.Support.v4 auf die Version 21.0.0 in NuGet Package Manager behoben. Hoffe das hilft dir

0
Pedro Câmara

Ich hatte eine andere Ursache für den Fehler "LinkAssembliesTask failed".

Ich habe NuGet-Pakete aktualisiert und die Referenzen durcheinander gebracht.

=====

Angenommen, ich hatte zwei Projekte:

  1. NetStandardProject

    • Hat einen Verweis auf Assembly1.

    • Assembly1 verfügt über eine CoolGuy-Klasse mit einer CoolGuy.Flex () -Methode.

  2. AndroidProject, das auf NetStandardProject verweist.

    • Hat einen Verweis auf Assembly2.

    • Assembly2 hat eine Klasse von CoolGuy, aber keine CoolGuy.Flex () -Methode.

Der Linker zog Assembly2 ein, suchte nach CoolGuy.Flex () und blies dann mit "LinkAssembliesTask failed" (LinkAssembliesTask fehlgeschlagen) in die Luft und gab an, dass die Flex () - Methode nicht gefunden werden konnte. Es konnte nicht, weil es nach innen schaute die falsche Versammlung.

Das NetStandard-Projekt wurde kompiliert, weil es auf Assembly1 verwies, und es war egal, auf was AndroidProject verwies. Es ist unabhängig gebaut. Als der Linker Assembly2 lud, verwendete er die "falsche" Assembly.

Am Ende hatte ich ein bisschen Pech und stellte fest, dass eine der Baugruppen nicht verwendet wurde. Also entfernte ich sie und der Build war erfolgreich.

Hoffe, dass jemand auf der ganzen Linie hilft.

=====

Bonus: Wenn Sie sehen möchten, welche Assembly durchsucht werden soll, lassen Sie die Erstellung fehlschlagen. Wechseln Sie dann zum Ordner {project}\obj {profile} {Android_version}\Android\assets und suchen Sie die DLL. Sie werden wahrscheinlich feststellen können, dass es nicht vorhanden ist, und Ihnen einen Ausgangspunkt geben, um zu verstehen, warum es fehlschlägt.

0
NightShovel

In meiner Verfolgung habe ich die Linkereigenschaft (Linker -> Linking) in 'None' geändert. Ich benutze Visual Studio 2017 RC

0

Ich habe diesen Fehler erhalten, nachdem ich die Zielversion von Android auf 9.0 geändert habe. Was mir aufgefallen ist, dass im packages.config des Android -Projekts alle Pakete noch auf monoandroid81 statt monoandroid90 abzielten.

Ich habe es gelöst, indem ich alle NuGet-Pakete neu installiert habe. Dies kann ganz einfach über die Package Manager-Konsole in Visual Studio erfolgen, indem Sie Folgendes eingeben:

Update-Package -Reinstall

Ich empfehle jedoch, zuerst ein Backup zu erstellen.

Danach hatten alle Pakete die richtige Version als Ziel und die Kompilierungsfehler waren verschwunden.

0
Raziel