2016-08-04 103 views
1

後我有一個iOS/Android Xamarin項目共享一個PCL項目。「System.Runtime.Serialization」。您是否缺少程序集引用?「添加web參考

我已按照Xamarin's Tutorial通過ASMX向PCL添加了Web引用。本教程未說明如何進入「添加Web引用」窗口,但我們通過右鍵單擊我們的PCL項目並轉至Add->Web Reference找到它。

在添加Web引用時,我得到一個大約500行的添加到PCL的Reference.cs文件。

然而,編譯,無論是iOS或Android,我給出了幾個這樣的錯誤:

Reference.cs(74,74):錯誤CS0234:類型或命名空間名稱IExtensibleDataObject' does not exist in the namespace System.Runtime。序列化」。您是否缺少裝配參考? (CS0234)(MyProject)

很明顯,我需要添加System.Runtime.Serialization程序集引用。然而,我無法弄清楚如何做到這一點,我花了數小時尋找文檔或任何相關的解決方案。大多數帖子問題看起來都是正切的。

forum post這個問題引用了這個問題,但沒有給出任何解決方案,除了它被認爲是在三年前「固定」。

現在上述教程引用了「添加引用...」對話框,用於添加System.Web.Services.dll如果您使用「添加文件」添加代理。但是,我無法在IDE中的任何位置找到此對話框。

右鍵點擊引用時,我找到了「編輯引用」。這產生這些標籤的窗口:

enter image description here

猜測,大會需要在這裏添加我搜索,但一無所獲。顯然,沒有辦法添加與IDE一起打包的程序集,因此您應該「知道」在哪裏找到它們。搜索文件證明毫無結果。

通過一個示例項目,我能夠找到.dll文件,位於/Library/Frameworks/Mono.framework/Versions/4.4.2/lib/mono/xbuild-frameworks/.NETPortable/v4.5/Profile/Profile78/System.Runtime.Serialization.dll處,並通過.NET Assembly選項卡手動添加它。

一位同事也嘗試通過NuGet添加參考。

不幸的是編譯錯誤在嘗試兩種方法後仍然存在。

此外,值得注意的是,似乎ToDoASMX示例項目和包含System.Runtime.Serialization.dll的文件夾都沒有任何對本教程提到的System.Web.Services.dll的引用。

+0

你正在運行什麼版本的C#? –

+0

@AlexKrupka所有三個項目都說C#版本爲「默認」。我使用Xamarin Studio Community 6.0.2(build 73)我不確定IDE的默認設置是什麼,但看起來像版本6是支持的。 – BergQuester

+0

你如何添加服務引用?你正在創建一個代理嗎?你只需點擊右鍵並選擇「添加Web服務」?你可以把再生產步驟納入你的問題,以便我們可以進一步調查? –

回答

2

我相信這些文檔指的是在Xamarin.iOSXamarin.Android(至少對於.asmx文檔)中使用它們。您可以通過在Xamarin.iOS/Xamarin.Android項目中點擊References右鍵點擊System.Runtime.Serialization,進入Edit References,然後進入All選項卡,它應該在BCL (Base Class LIbrary)下列出。您可能需要在PCL範圍內使用基於Interface的模式來調用各自的本地Web服務。您也可以嘗試將.asmx換成REST service並使用HttpClient

查看此示例項目(https://developer.xamarin.com/samples/xamarin-forms/WebServices/TodoASMX/)顯示基於Interface的上述模式使用ISoapServicePCL中並在本機項目中實現。您會看到每個項目(Droid/iOS)中都有Web Reference。 PCL純粹是調用代碼。

鑑於圍繞它們構建的框架,它更多的是使用.asmx的限制。使用WCFREST有更好的選擇從PCL直接使用。但請注意,PCL將被NetStandard圖書館版本取代。

相關問題