2016-05-20 68 views
0

我正在尝试使用REST API发布数据。该应用程序用来完美运行,但现在我已经添加了代码来执行POST,我得到一个新的错误。任何人都可以帮助解释发生了什么问题,并建议一个替代方案,让我成功完成POST请求?“LinkAssemblies”任务在Xamarin Android中意外失败

这是我得到的错误,当我尝试建立与发布配置使连接器应用:

Error  The "LinkAssemblies" task failed unexpectedly. 
Xamarin.Android.XamarinAndroidException: error XA2006: Reference to metadata item 'System.Runtime.InteropServices.StandardOleMarshalObject' (defined in 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089') from 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' could not be resolved. ---> Mono.Cecil.ResolutionException: Failed to resolve System.Runtime.InteropServices.StandardOleMarshalObject 
    at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference) 
    at MonoDroid.Tuner.MonoDroidMarkStep.MarkType(TypeReference reference) 
    at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference) 
    at MonoDroid.Tuner.MonoDroidMarkStep.MarkType(TypeReference reference) 
    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 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__26.MoveNext() GimcoIOT.Andriod 
+0

我的邮编code.when没有错误在发布模式下,我得到这个错误 –

回答

1

它看起来就像你可能在你的Xamarin已经添加到桌面.NET程序集的引用.Android应用Xamarin.Android配置文件中不提供System.Windows.Forms命名空间。 (即使该应用程序建立成功如果禁用链接,它会在理论上仍然无法在运行时尝试运行代码引用System.Windows.Forms命名空间的任何时间。)

为了解决这个问题,你会要从Xamarin.Android项目中删除对桌面.NET程序集的引用,并确保所有其他引用的程序集都是针对Xamarin.Android配置文件或支持的PCL配置文件进行编译的。

documentation提到:

Xamarin.Android是 ABI编译为不同的轮廓的现有组件兼容。您需要必须重新编译您的源代码以生成针对Xamarin.Android配置文件的程序集(就像您需要重新编译源代码以单独针对Silverlight和.NET 3.5一样)。

(便携式类库是特殊的例外。)


如果您正在使用一种从System.Windows.Forms命名空间进行POST请求,则需要切换到一个不同的类型。例如,从System.Net.Http.HttpClientPostAsync()方法之一可能很好地工作。

相关问题