0

オフライン時にロードできる必要があるアプリを作成しています。このために、Azure と Sqlite を使用しています。このプロジェクトでは、NuGet から Microsoft.WindowsAzure.MobileServices.SQLiteStore パッケージをその依存パッケージ SQLitePCL と共にダウンロードしました。これらのパッケージは、PCL、android、ios、および win phone プロジェクトに追加されます。iOSとAndroidではすべてが魅力的に機能しますが、Windows Phoneでは、SQLitePCLによって追加された参照「Windows Phone用SQLite(SQLite.WP80、バージョン3.8.7.2)」が壊れ、プロジェクトをビルドしようとするとエラーがスローされます」 SDK SQLite.WP80、バージョン = 3.8.7.2 が見つかりませんでした". NuGet から古いバージョンをダウンロードして、動作するバージョンがあるかどうかを確認しようとしましたが、うまくいきませんでした。また、この参照を削除してプロジェクトに追加し、Visual Studio拡張機能を介して外部からダウンロードしてから、ダウンロードした拡張機能をプロジェクトに追加して、参照が壊れているという問題を解決しようとしました。同じバージョンが見つからなかったため、追加されたバージョンは NuGets よりも新しいものです。外部参照バージョンは「SQLite for Windows Phone (SQLite.WP80, version=3.10.2)」です。正しくコンパイルされるようになりましたが、コードがこの参照を必要とする実行ポイントに到達すると、次のエラーがスローされます。「この機能は、このアセンブリのポータブル バージョンに実装されていません。プラットフォーム固有の実装を参照してください。". 具体的には、次のコードを実行すると、このエラーがスローされます。

if (!CrossConnectivity.Current.IsConnected)

NuGetで壊れているようで、外部から追加できないため、この参照を機能させる方法を知っている人はいますか?

アップデート

NuGet にあるパッケージとそれらが含まれるプロジェクトのスクリーン キャプチャをいくつか追加しました (common および api プロジェクトを除くすべてのプロジェクト)。また、スクリーン キャプチャには、PCL および WinPhone プロジェクトのすべての参照の画像を入れました。PCL に含まれていない唯一の参照は、Windows 専用のものです。これらの 1 つは、提供したリンクに記載されている「Windows 用 SQLite (SQLite.WP80、バージョン = 3.10.2)」への参照です。

現在すべてのプロジェクトに追加されている Azure NuGet パッケージ

現在すべてのプロジェクトに追加されている SQLitePCL NuGet パッケージ

PCL リファレンス

WinPhone のリファレンス

4

2 に答える 2

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();
于 2016-02-16T16:45:09.190 に答える