Синхронизация Skydrive в переносимой библиотеке классов / mvvmcross

У меня есть решение для переносной библиотеки (mvvmcross), а в основном проекте у меня есть метод Live SDK:

Client.DownloadCompleted += delegate(object o, LiveDownloadCompletedEventArgs e)
        {...}

Client.DownloadAsync(SKYDRIVE_PATH + USER_DEFINED_FILE);

Проблема с LiveDownloadCompletedEventArgs:

Ошибка 1 Тип «System.ComponentModel.AsyncCompletedEventArgs» определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку «Система, версия = 2.0.5.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e».

Где найти эту сборку системы? Я попытался добавить это:

"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll" 

но добавить системную сборку нельзя.


person Mikaèl    schedule 22.11.2013    source источник
comment
Но Live SDK не предоставляет библиотеку PCL, верно? Вы не можете ссылаться, скажем, на чистую библиотеку .NET Framework из PCL. Однако похоже, что есть какая-то вспомогательная библиотека PCL для Live SDK на NuGet, подробнее см. здесь.   -  person Anders Gustafsson    schedule 22.11.2013
comment
Live SDK не работает в mvvmcross (только WinRT+Wp), поэтому я решил это на нативной платформе.   -  person Mikaèl    schedule 23.11.2013


Ответы (1)


К сожалению, если API/библиотека недоступна для переноса, вы не сможете принудительно сделать ее доступной, добавив ссылки на разные сборки System.dll.

Всякий раз, когда API недоступны для переноса, я рекомендую:

  • оборачивая их за интерфейсы и внедряя в переносимый код с нативных платформ. Есть несколько примеров этого в N = 31 в http://mvvmcross.wordpress.com/.
  • решите поместить свой код в непереносимые библиотеки с кодом, совместно используемым через связывание файлов, а не через PCL.

У Дэниела Плейстеда есть дополнительные идеи по этому поводу: http://blogs.msdn.com/b/dsplaisted/archive/2012/08/27/how-to-make-portable-class-libraries-work-for.-you.aspx

person Stuart    schedule 24.11.2013