2015-02-10 60 views
26

当我们试图建立在释放模式xamarin形式的项目中,我们遇到了错误:的“LinkAssemblies”任务意外失败

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) 

,我们该如何解决?我们已经尝试清洁和再次建设。即使关闭xamarin工作室并重新启动它。似乎没有任何工作。

我们正在发布xamarin表单和xamarin表单实验室的最新版本。我们使用的是Android的最低API级别为17。我甚至尝试最低SDK版本20.

更多的细节:

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) 

回答

18

显然,this is a known issue:Xamarin形式需要TargetAndroidVersion是21(在这是题为“使用Android编译的版本:”)

+0

那么这个错误再次重演。我有我的TargetAndroidVersion 21. – Kartik 2015-02-25 19:31:11

+1

嗯。在文本编辑器中查看原始项目文件;你在下面的元素中看到了什么:(我的值在下面) v5.0 2015-02-25 21:43:48

+1

这对我没有用。您必须检查两件事情:1)确保SDK 21实际上已安装...因此,请转到您的SDK更新程序并安装21/22(或更高版本)。 2)更改目标版本没有帮助,你(也)不得不将“编译使用”更改为版本21.如果你已经这样做了,它应该可以工作。 – 2015-03-11 22:24:30

-1

我已经解决了将选项> Android构建器>链接器中的Android链接器行为选项从“仅链接sdk程序集”更改为“不链接”。

+8

对不起,但这并没有解决问题。如果选择“不连接”,则关闭链接器,这意味着您要在APK中部署整个BCL,包括您不需要的所有组件。这使得你的APK巨大。 – 2015-03-11 21:07:18

+0

这种方法将解决症状,但不是直接导致问题的原因;相当无效的Android目标是。 – 2016-11-09 01:10:39

0

我修正了将Xamarin.Android.Support.v4降级到NuGet Package Manager中的21.0.0版本的问题。希望对你有所帮助

1

Jus我将链接从“NONE”更改为“sdk和用户程序集”,我运行了解决方案,问题已解决。之后,您可以将“sdk和用户程序集”更改为“NONE”并运行您的项目而不会有任何问题。

但是发布文件的大小可能会改变。

enter image description here

2

在我的情况下,问题是在PCL项目中引用的DLL Xamarin.iOS。链接不适用于此程序集。删除参考可以解决问题。

3

在我的追逐中,我已将链接器属性(链接器 - >链接)更改为“无”。我正在使用visual studio 2017 RC

+2

是的,但关闭链接器并不能解决链接器的问题,是吗?它会显着增加apk大小,而xamarin应用程序已经太大了,所以这不是一个真正的选择。 – Dpedrinha 2017-09-06 01:54:58

+0

这可以解决VS Enterprise 2017的问题,但会增加应用程序的大小 – Nitesh 2017-11-14 12:47:41

2

在我的情况下,因为将Xamarin.ios.dll添加到可移植项目引用中而发生问题。我已删除该参考,现在它的作品

1

我也遇到了同样的问题。经过一系列的试验和错误,我找到了解决方案。

在您的Manifest中,将目标Android版本设置为Android 7.1(API等级25牛轧糖)或更高版本。 将Android版本编译为Android 7.1。

我希望这可以帮助

相关问题