Как использовать google-api-dotnet-client в моно

Если я создаю новый проект .NET (.NET 4.5), добавляю пакет nuget Google.Apis.Discovery.v1 и вставляю пример кода из Клиентская библиотека API Google для .NET — Начало работы. Оно работает.

Затем я пытаюсь запустить эту программу под новейшим моно (3.4.1 из исходников) на Ubuntu 14.04. мне стало противно

[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type
'Google.Apis.Discovery.v1.DiscoveryService' from assembly 'Google.Apis.Discovery.v1, 
Version=1.8.1.43, Culture=neutral, PublicKeyToken=null'.

В моем более сложном серверном приложении, где я использую Analytics API, исключение такое же.

Мне действительно нужно получить доступ к Google API из моно. Также я не знаю, как получить исходный код для конкретного сгенерированного API.

Пожалуйста


person bosko    schedule 22.05.2014    source источник


Ответы (1)


Библиотека не поддерживает Mono. В прошлый раз, когда я пытался заставить его работать, у нас была проблема с dll System.Net. Как вы можете найти здесь: Использование System.Net.HttpRequest::EndGetRequestStream. Я не уверен, была ли эта проблема уже исправлена ​​или нет.

Относительно источников:

  1. Исходный код основной библиотеки доступен здесь: https://code.google.com/p/google-api-dotnet-client/source/browse/
  2. Сгенерированный код (для определенного API) можно загрузить по адресу: https://google-api-client-libraries.appspot.com/download/library/calendar/v3/csharp?lv=1.8.1. Вы можете заменить "календарь" на конкретный API, скажем, youtube, драйв и т. д. И вы должны изменить v3 на версию API.

Удачи.

person peleyal    schedule 22.05.2014
comment
Хорошо, спасибо за ссылку на конкретные источники API, с этим я смог скомпилировать все необходимые источники (GoogleApis, GoogleApis.Core, OAuth и Google.Apis.Analytics) с обычным .NET 4.5.1 (без переносимого/совместимого ада ), никаких других зависимостей, только JSON.NET 6.0.3, так что он чист и работает хорошо, даже быстрее, и под моно без проблем :) Я просто надеюсь, что 1.8.1 достаточно стабилен, чтобы придерживаться его какое-то время, так как обновление не очень просто таким образом :). Возможно, вам стоит подумать о поддержке моно, когда у вас будет время. Действительно со всеми вашими источниками все в порядке!!. - person bosko; 23.05.2014
comment
Может быть, просто обновить зависимости ..., отказаться от поддержки некоторых мертвых платформ (WP7, Silverlight) в никогда не выпускаемых выпусках. Mono действительно делает успехи в последнее время. - person bosko; 23.05.2014
comment
Спасибо за ответ. Можете ли вы предоставить дополнительную информацию о вашей моно среде. Я скоро начну расследование. - person peleyal; 23.05.2014
comment
Да, если вы устанавливаете очень свежую Ubuntu 14.04, то приличная версия моно присутствует в репозиториях (3.2.8, apt-get install mono-complete), либо вы можете скомпилировать из исходников, лучшие инструкции здесь - person bosko; 24.05.2014