0

Я создаю приложение, которое должно быть в состоянии загрузить, когда оно находится в автономном режиме, для этого мы используем Azure и Sqlite. В проекте я загрузил пакет Microsoft.WindowsAzure.MobileServices.SQLiteStore из NuGet вместе с его пакетом зависимостей SQLitePCL. Эти пакеты добавляются в проекты PCL, android, ios и win phone. В iOS и Android все работает как шарм, однако в телефоне Windows упоминается ссылка «SQLite для Windows Phone (SQLite.WP80, версия 3.8.7.2)», добавленная SQLitePCL, и при попытке создания проекта она выдает ошибку " Не удалось найти SDK SQLite.WP80, версия = 3.8.7.2 ". Я попытался загрузить более старые версии из NuGet, чтобы увидеть, есть ли рабочая версия, но мне не повезло. Я также попытался удалить эту ссылку и добавить ее в проект, загружая ее через внешние расширения Visual Studio, а затем добавив загруженное расширение в проект, решив проблему, что ссылка нарушена. Добавленная версия новее, чем NuGets, так как я не смог найти ту же версию. Версия внешних ссылок - «SQLite для Windows Phone (SQLite.WP80, версия = 3.10.2)». Теперь он правильно компилируется, но когда код достигает точки выполнения, требующей этой ссылки, он выдает следующую ошибку: «Эта функциональность не реализована в переносимой версии этой сборки. Вам следует ссылаться на пакет NuGet из основного проекта приложения, чтобы обратитесь к реализации конкретной платформы ». Более конкретно эта ошибка возникает, когда следующий код выполняет:Xamarin Forms: Win Phone 8.1 Режим автономного режима Silverlight с использованием Azure

if (!CrossConnectivity.Current.IsConnected) 

Кто-нибудь знает, как я могу получить эту ссылку работает, так как он, кажется, сломана в NuGet и оно не позволит мне добавить его извне?

UPDATE

Добавлен некоторые снимки экрана из пакетов, которые я имею в NuGet и проектах, которые они находятся в (Все проекты, кроме общего и апи проекта). Также на экранах экрана я помещал изображение всех ссылок в проектах PCL и WinPhone. Единственной ссылкой, которая не является в PCL, является специально для окон, одна из которых является ссылкой на «SQLite для Windows (SQLite.WP80, версия = 3.10.2)», упомянутую в приведенной ссылке.

Azure NuGet package currently added in all projects

SQLitePCL NuGet package currently added in all projects

PCL references

WinPhone references

ответ

2

я не смог найти решение, чтобы исправить саму ссылку, но поскольку код разбился только при проверке подключения телефонов, я решил посмотреть еще один способ проверить это и придумал следующее:

if (!NetworkInterface.GetIsNetworkAvailable()) 

Надежда это полезно, если кто-то еще сталкивается с этой проблемой!

0

Чтобы проверить состояние сети, может быть, вы можете использовать это вместо CrossConnectivity.Current.IsConnected

using Xamarin.Forms; 
using System.Net; 
using System.Threading.Tasks; 
using Plugin.Connectivity; 

namespace XXXXXX 
{ 
    public class NetworkHelper 
    { 
     #region CONSTANTS 
     //2.5f 
     private const float NETWORK_TIMEOUT_LIMIT = 3f; // Seconds 
     private const String testUrl = "https://google.com/"; 
     #endregion 

     public NetworkHelper() 
     { 
     } 

     #region PUBLIC METHODS 
     public static bool CheckNetworkStatus() 
     { 
      bool bSuccess = false; 

      try 
      { 
       var request = HttpWebRequest.Create(testUrl); 
       request.Timeout = (int)TimeSpan.FromSeconds(NETWORK_TIMEOUT_LIMIT).TotalMilliseconds; 
       using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
       { 
        if (response.StatusCode != HttpStatusCode.OK) 
        { 
         Console.WriteLine("Error"); 
         bSuccess = false; 
        } 
        else 
        { 
         bSuccess = true; 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       bSuccess = false; 
      } 

      return bSuccess; 
     } 

     public static async Task<bool> IsRemoteReachable() 
     { 
      return await CrossConnectivity.Current.IsRemoteReachable("https://ccc.seeforge.com"); 
     } 


     #endregion 
    } 
} 

//Example: 
var isNetworkConnected = await CheckNetworkStatus(); 
+0

По-видимому, свойство .Timeout и метод GetResponse не поддерживается Windows Phone 8.1 (я получал сообщение об ошибке, говоря, что эти два метода не существуют и искали почему). В другом упомянутом методе используется CrossConnectivity и, следовательно, имеет ту же проблему, что и мой пост. –

+0

Однако я нашел другое решение, которое я опубликую –