#xamarin #azure-mobile-services #portable-class-library
#xamarin #azure-mobile-services #переносимая библиотека классов
Вопрос:
Итак, я создаю решение Forms, в мой проект PCL я добавляю NuGet Microsoft.WindowsAzure.Мобильный.
Когда я запускаю свой проект Android (который, конечно, ссылается на проект PCL), я получаю:
[MonoDroid] НЕОБРАБОТАННОЕ ИСКЛЮЧЕНИЕ: Система.Отражение.TargetInvocationException: Целью вызова было создано исключение. —> Система.Исключение InvalidOperationException: сборка Microsoft Azure Mobile Services для текущей платформы не найдена. Убедитесь, что текущий проект ссылается на оба Microsoft.WindowsAzure.Мобильные устройства и следующую сборку для конкретной платформы: Microsoft.WindowsAzure.Mobile.Ext.
Хорошо, отлично, я добавляю Microsoft.WindowsAzure.Ext (вручную отредактировав ссылки -> Перейдите к ..пакетам..Майкрософт.WindowsAzure.Мобильный.Извлекаю сборку и добавляю ее) в мой проект Android, но затем я получаю:
/Библиотека/Фреймворки/Mono.framework/Внешние /xbuild /Xamarin / Android / Xamarin.Android.Common.targets: Ошибка: найден дубликат управляемого типа! Сопоставления между управляемыми типами и типами Java должны быть уникальными. Первый тип: ‘Xamarin.Auth.AndroidAccountStore / SecretAccount, Xamarin.Auth.Android, версия = 1.2.2.0, Культура = нейтральная, PublicKeyToken=null’; Второй тип: ‘Xamarin.Auth.AndroidAccountStore / SecretAccount, Microsoft.WindowsAzure.Мобильный.Ext, версия = 1.2.0.0, Культура = нейтральная, PublicKeyToken =31bf3856ad364e35’ (MyApp.Android)
/Библиотека/Фреймворки/Mono.framework/Внешние /xbuild /Xamarin / Android / Xamarin.Android.Common.targets: Ошибка: найден дубликат управляемого типа! Сопоставления между управляемыми типами и типами Java должны быть уникальными. Первый тип: ‘Xamarin.Auth.FormAuthenticatorActivity, Xamarin.Auth.Android, версия = 1.2.2.0, Культура = нейтральная, PublicKeyToken=null’; Второй тип: ‘Xamarin.Auth.FormAuthenticatorActivity, Microsoft.WindowsAzure.Мобильный.Ext, версия = 1.2.0.0, Культура = нейтральная, PublicKeyToken =31bf3856ad364e35’ (MyApp.Android)
/Библиотека/Фреймворки/Mono.framework/Внешние /xbuild /Xamarin / Android / Xamarin.Android.Common.targets: Ошибка: найден дубликат управляемого типа! Сопоставления между управляемыми типами и типами Java должны быть уникальными. Первый тип: ‘Xamarin.Auth.FormAuthenticatorActivity / State, Xamarin.Auth.Android, версия = 1.2.2.0, Культура = нейтральная, PublicKeyToken=null’; Второй тип: ‘Xamarin.Auth.FormAuthenticatorActivity / Состояние, Microsoft.WindowsAzure.Мобильный.Ext, версия = 1.2.0.0, Культура = нейтральная, PublicKeyToken =31bf3856ad364e35’ (MyApp.Android)
/Библиотека/Фреймворки/Mono.framework/Внешние /xbuild /Xamarin / Android / Xamarin.Android.Common.targets: Ошибка: найден дубликат управляемого типа! Сопоставления между управляемыми типами и типами Java должны быть уникальными. Первый тип: ‘Xamarin.Auth.WebAuthenticatorActivity, Xamarin.Auth.Android, версия = 1.2.2.0, Культура = нейтральная, PublicKeyToken=null’; Второй тип: ‘Xamarin.Auth.WebAuthenticatorActivity, Microsoft.WindowsAzure.Мобильный.Ext, версия = 1.2.0.0, Культура = нейтральная, PublicKeyToken =31bf3856ad364e35’ (MyApp.Android)
/Библиотека/Фреймворки/Mono.framework/Внешние /xbuild /Xamarin / Android / Xamarin.Android.Common.targets: Ошибка: найден дубликат управляемого типа! Сопоставления между управляемыми типами и типами Java должны быть уникальными. Первый тип: ‘Xamarin.Auth.WebAuthenticatorActivity / состояние, Xamarin.Auth.Android, версия = 1.2.2.0, Культура = нейтральная, PublicKeyToken=null’; Второй тип: ‘Xamarin.Auth.WebAuthenticatorActivity / Состояние, Microsoft.WindowsAzure.Мобильный.Ext, версия = 1.2.0.0, Культура = нейтральная, PublicKeyToken =31bf3856ad364e35’ (MyApp.Android)
/Библиотека/Фреймворки/Mono.framework/Внешние /xbuild /Xamarin / Android / Xamarin.Android.Common.targets: Ошибка: найден дубликат управляемого типа! Сопоставления между управляемыми типами и типами Java должны быть уникальными. Первый тип: ‘Xamarin.Auth.WebAuthenticatorActivity / Client, Xamarin.Auth.Android, версия = 1.2.2.0, Культура = нейтральная, PublicKeyToken=null’; Второй тип: ‘Xamarin.Auth.WebAuthenticatorActivity / Клиент, Microsoft.WindowsAzure.Мобильный.Ext, версия = 1.2.0.0, Культура = нейтральная, PublicKeyToken =31bf3856ad364e35’ (MyApp.Android)
Кажется, есть какой-то конфликт с Xamarin.Аутентификация?
Как мне решить эту проблему?
Комментарии:
1. Я не уверен насчет Xamarin. Аутентификация, но для использования Azure Mobile Services вы должны добавить AMS из NuGet в PCL и из Component store в Android project
2. Да, @xakz, это именно то, что я сделал.
3. я смог воспроизвести эту ошибку. Я думаю, что это серьезная проблема, я ожидал использовать Xamarin. Аутентификация с Azure в не столь отдаленном будущем. Я думаю, вам следует опубликовать отчет об ошибке bugzilla.xamarin.com
4. Привет, я член команды мобильных служб. SDK мобильных служб для Xamarin использует Xamarin Auth внутренне, и, похоже, проблема в том, что Xamarin. Android не допускает два типа с одинаковым пространством имен из двух разных сборок. Я изучу, что можно сделать в SDK, чтобы устранить потенциальный конфликт.
5. Спасибо @PaulBatum, тем временем я действительно создал ошибку с Xamarin: bugzilla.xamarin.com/show_bug.cgi?id=21147
Ответ №1:
Мне удалось найти обходной путь. Создайте переносимую библиотеку классов, в которую вы добавляете самородную версию мобильных служб. Таким образом, вы можете создать оболочку поверх существующих мобильных служб из pcl. Это явно работает, и это лучшее решение, пока ошибка не будет исправлена. Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь задавать.
Комментарии:
1. Я пробовал это, но я все еще получаю то же исключение (на iOS)
Ответ №2:
Эта ошибка устранена начиная с версии 1.2.5 SDK для мобильных служб.