2016-05-20 110 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()方法之一可能很好地工作。

相關問題