2016-08-04 3 views
1

У меня есть проект iOS/Android Xamarin, который совместно использует проект PCL.«System.Runtime.Serialization». Вам не хватает ссылки на сборку? » после добавления веб-ссылки

Я добавил веб-ссылку на PCL через ASMX согласно Xamarin's Tutorial. В учебнике не говорится, как попасть в окно «Добавить веб-ссылку», но мы нашли его, щелкнув правой кнопкой мыши наш проект PCL и перейдя на Add->Web Reference.

При добавлении веб-ссылки я получаю примерно 500 строк файла Reference.cs, который добавляется в PCL.

Однако на компиляции, либо IOS или Android, я дал некоторые из этих ошибок:

Reference.cs (74,74): CS0234 Ошибка: тип или пространство имен имя IExtensibleDataObject' does not exist in the namespace System.Runtime. Сериализация. Вам не хватает ссылки на сборку? (CS0234) (MyProject)

Понятно, что мне нужно добавить ссылку на сборку . Однако я не могу понять, как это сделать, и я потратил часы на поиск документации или любого соответствующего решения. В большинстве случаев вопросы с сообщениями кажутся тангенциальными.

Этот 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 Все три проекта говорят «default» для версии C#. Я использую Xamarin Studio Community 6.0.2 (сборка 73). Я не уверен, что такое IDE по умолчанию, но выглядит как версия 6 поддерживается. – BergQuester

+0

Как вы добавляете ссылку на службу? Вы создаете прокси? Вы просто щелкаете правой кнопкой мыши и «Добавить веб-сервис»? Можете ли вы поместить шаги воспроизведения в свой вопрос, чтобы мы могли исследовать дальше? –

ответ

2

Я считаю, что эти документы относятся к их использованию в Xamarin.iOS и Xamarin.Android (по крайней мере, для документов .asmx). Вы можете добраться до System.Runtime.Serialization, щелкнув правой кнопкой мыши References в своем проекте Xamarin.iOS/Xamarin.Android, выбрав Edit References, а затем перейдите на вкладку All, которую она должна быть указана под номером BCL (Base Class LIbrary). Возможно, вам придется пройти маршрут с использованием шаблона, основанного на Interface, в вашем PCL, чтобы вместо этого вызвать соответствующую собственную веб-службу.Вы также можете попробовать обернуть ваш .asmx в REST service и использовать HttpClient.

Видя этот образец проект (https://developer.xamarin.com/samples/xamarin-forms/WebServices/TodoASMX/) показывает шаблон на основе Interface, описанный выше, используя ISoapService в PCL и реализации в родных проектах. Вы увидите, что в каждом проекте (Droid/iOS) есть Web Reference. PCL просто вызывает код.

Это скорее ограничение использования .asmx с учетом структуры, построенной вокруг них. Использование WCF или REST имеет лучшие варианты для использования непосредственно с PCL. Однако обратите внимание на то, что PCL будут заменены библиотечным вкусом NetStandard.

Смежные вопросы