2016-10-18 27 views
2

我想发布我的android应用程序。当我尝试构建它,它给了我下面的错误:在Xamarin中构建发行版本的应用程序时,“链接程序集”任务意外发生问题

Severity Code Description Project File Line Suppression State 
Error  The "LinkAssemblies" task failed unexpectedly. 
Java.Interop.Tools.Diagnostics.XamarinAndroidException: error XA2006: Reference to metadata item 'Mono.Security.Interface.MonoTlsProviderFactoryDelegate' (defined in 'Xamarin.iOS, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065') from 'Xamarin.iOS, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065' could not be resolved. ---> Mono.Cecil.ResolutionException: Failed to resolve Mono.Security.Interface.MonoTlsProviderFactoryDelegate 
    at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference) 
    at MonoDroid.Tuner.MonoDroidMarkStep.MarkType(TypeReference reference) 
    at Mono.Linker.Steps.MarkStep.MarkField(FieldReference reference) 
    at Mono.Linker.Steps.MarkStep.InitializeFields(TypeDefinition type) 
    at Mono.Linker.Steps.MarkStep.InitializeType(TypeDefinition type) 
    at Mono.Linker.Steps.MarkStep.InitializeAssembly(AssemblyDefinition assembly) 
    at Mono.Linker.Steps.MarkStep.Initialize() 
    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 Java.Interop.Tools.Diagnostics.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__26.MoveNext() TOPAPP.Droid  

我已经删除了app.droid的xamarin.ios参考,但没有奏效。有什么建议么?我也尝试将Android版本设置为我在互联网上发现的任何版本。我也尝试更新PCL版本,但仍然没有。我错过了什么吗?

编辑: 在我的项目中,我也有一个可移植的库链接到Android项目与ios代码。

+0

我不确定为什么你可能在你的'Xamarin.Android'项目中引用了'Xamarin.iOS'。但问题是,如果不应该这样,那么你有一些参考类型。你的PCL里面不应该有任何Native代码。 –

+0

这是百万美元的问题是什么?为什么它在调试模式下工作? – Yaza

+0

因为'Linker'在'Debug'配置时没有任何工作。当你改变到'释放'时,它会尝试找到你不使用的组件,并将它们取出。出于某种原因,您的Android项目中有一个iOS程序集... –

回答

7

我不确定为什么你的Xamarin.Android项目中引用了Xamarin.iOS。但问题是,如果不应该这样,那么你有一些参考类型。你的PCL里面不应该有任何Native代码。

当配置为Debug时,链接器不执行任何工作。当您更改为Release时,它会尝试找到您不使用的组件并将其取出。出于某种原因,您的Android项目中有一个iOS程序集。

检查您的Xamarin.Android和PCL项目在任何情况下都不会引用Xamarin.iOS。本地项目应该只引用PCL(其中不包含本机代码)

相关问题