更新到最新的 Xamarin Android 库后出现链接器错误
Linker error nach update auf neueste Xamarin Android libraries
自从我将我的 Xamarin Forms 项目更新到最新的 Android 库 25.1.1 由于这个链接器错误,我不能再构建一个版本
>>1>The "LinkAssemblies" task failed unexpectedly.
1>Java.Interop.Tools.Diagnostics.XamarinAndroidException: error XA2006: Could not resolve reference to 'System.Void Android.Support.CustomTabs.CustomTabsIntent::LaunchUrl(Android.App.Activity,Android.Net.Uri)' (defined in assembly 'Plugin.Share, Version=5.0.0.3, Culture=neutral, PublicKeyToken=null') with scope 'Xamarin.Android.Support.CustomTabs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. When the scope is different from the defining assembly, it usually means that the type is forwarded. ---> Mono.Cecil.ResolutionException: Failed to resolve System.Void Android.Support.CustomTabs.CustomTabsIntent::LaunchUrl(Android.App.Activity,Android.Net.Uri)
1> at Mono.Linker.Steps.MarkStep.MarkMethod(MethodReference reference)
1> at Mono.Linker.Steps.MarkStep.MarkInstruction(Instruction instruction)
1> at Mono.Linker.Steps.MarkStep.MarkMethodBody(MethodBody body)
1> at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method)
1> at Mono.Linker.Steps.MarkStep.ProcessQueue()
1> at Mono.Linker.Steps.MarkStep.Process()
1> at Mono.Linker.Steps.MarkStep.Process(LinkContext context)
1> at MonoDroid.Tuner.MonoDroidMarkStep.Process(LinkContext context)
1> at Mono.Linker.Pipeline.Process(LinkContext context)
1> at MonoDroid.Tuner.Linker.Process(LinkerOptions options, LinkContext& context)
1> at Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res)
1> --- End of inner exception stack trace ---
1> at Java.Interop.Tools.Diagnostics.Diagnostic.Error(Int32 code, Exception innerException, String message, Object[] args)
我认为这是因为您的库引用不匹配:
在您的申请中,您指的是 Xamarin.Android.Support.CustomTabs
25.1.1
但是链接器抱怨的程序集是旧版本:
https://github.com/jguertl/SharePlugin/blob/master/Share/Share.Plugin.Android/packages.config#L4
您需要使用版本 6.X - 我在自述文件中指出的预发行版本,因为它是针对 25.1.1
构建的
正如 James Montemagno 指出的那样,新的 6.X reelease 是针对 25.x 构建的,这解决了链接器问题
自从我将我的 Xamarin Forms 项目更新到最新的 Android 库 25.1.1 由于这个链接器错误,我不能再构建一个版本
>>1>The "LinkAssemblies" task failed unexpectedly.
1>Java.Interop.Tools.Diagnostics.XamarinAndroidException: error XA2006: Could not resolve reference to 'System.Void Android.Support.CustomTabs.CustomTabsIntent::LaunchUrl(Android.App.Activity,Android.Net.Uri)' (defined in assembly 'Plugin.Share, Version=5.0.0.3, Culture=neutral, PublicKeyToken=null') with scope 'Xamarin.Android.Support.CustomTabs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. When the scope is different from the defining assembly, it usually means that the type is forwarded. ---> Mono.Cecil.ResolutionException: Failed to resolve System.Void Android.Support.CustomTabs.CustomTabsIntent::LaunchUrl(Android.App.Activity,Android.Net.Uri)
1> at Mono.Linker.Steps.MarkStep.MarkMethod(MethodReference reference)
1> at Mono.Linker.Steps.MarkStep.MarkInstruction(Instruction instruction)
1> at Mono.Linker.Steps.MarkStep.MarkMethodBody(MethodBody body)
1> at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method)
1> at Mono.Linker.Steps.MarkStep.ProcessQueue()
1> at Mono.Linker.Steps.MarkStep.Process()
1> at Mono.Linker.Steps.MarkStep.Process(LinkContext context)
1> at MonoDroid.Tuner.MonoDroidMarkStep.Process(LinkContext context)
1> at Mono.Linker.Pipeline.Process(LinkContext context)
1> at MonoDroid.Tuner.Linker.Process(LinkerOptions options, LinkContext& context)
1> at Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res)
1> --- End of inner exception stack trace ---
1> at Java.Interop.Tools.Diagnostics.Diagnostic.Error(Int32 code, Exception innerException, String message, Object[] args)
我认为这是因为您的库引用不匹配:
在您的申请中,您指的是 Xamarin.Android.Support.CustomTabs
25.1.1
但是链接器抱怨的程序集是旧版本:
https://github.com/jguertl/SharePlugin/blob/master/Share/Share.Plugin.Android/packages.config#L4
您需要使用版本 6.X - 我在自述文件中指出的预发行版本,因为它是针对 25.1.1
构建的正如 James Montemagno 指出的那样,新的 6.X reelease 是针对 25.x 构建的,这解决了链接器问题