8

モバイル (産業用) デバイスと通信できる Web サービスを提供する通常の PC アプリケーションとデータを通信/同期する WinCE 5.0 用のアプリケーションを開発する必要があります。

モバイル端末側の保守が困難なコードになることは明らかなので(接続チェック→完了時:Webサービスの利用可否チェック→完了時:モバイル端末が同期可能かチェック→完了時データ交換開始) sを使用したプログラミングの同期方法を使用するawait

Daniel Grunwald によるコード スニペットを見つけました。これは、async/await 機能のためにコンパイラが必要とするものの最小限の実装です。たとえば、Task タイプを実装する.Net 3.5 用の Task Parallel Library (必要なシグネチャを持ついくつかのメソッドが存在しないため、少しだけ変更する必要がありました) と共に、有望に見えます。

の実装が不足しているため、これまでのところソリューションは構築されていませんTaskCompletionSource。最近の mscorlib を ILSpy で逆コンパイルしましたが、コードが使用できません。CF に存在しないタイプが多すぎます。

この時点で、VS 2008 (スマート デバイスをターゲットにするために使用する必要がある) に C# 5 コンパイラを使用するよう説得することはできないため (回避策があるのではないでしょうか?)、このプロジェクトが失敗する可能性があるかどうか疑問に思っています。 CF には、TaskCompletionSource (イベントを待機可能にしたいのでおそらく必要になる) の重要な型が欠けているか、TPL3.5 + Grunwald のスニペット + TCS 実装はビルドされますが、実際には機能しません。

より経験豊富な人が私の意図を評価してもらえますか? コメント、アイデア、代替アプローチをぜひお聞かせください。ありがとう。

更新 Aaron Stainback の投稿は、VS2012 で CF 3.5 をビルドできるはずであることを示しています。それは少なくともコンパイラの問題に取り組むべきです。

4

2 に答える 2

3

次の手順に従って、Visual Studio 2015 を使用して Compact Framework 3.5 にコンパイルできます。

  • 「.NET Compact Framework 3.5 再頒布可能パッケージ」をインストールします。
  • 「 C:\Program Files (x86)\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE」からファイルをコピーします。
  • ' C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v3.5\Profile\CompactFramework ' ディレクトリにファイルを貼り付けます。
  • 「 RedistList」という名前のディレクトリを作成します。
  • 「 RedistList」ディレクトリに「 FrameworkList.xml」という名前のファイルを作成します。
  • 作成したファイルに次の内容を設定します。

    <?xml version="1.0" encoding="utf-8"?>
    <FileList Redist="Net35-CF" Name=".NET Compact Framework 3.5">
    </FileList>
    

これで、Visual Studio 2015 で.NET Core クラス ライブラリプロジェクトを作成し、 ' net35-cf ' フレームワークをターゲットにすることができます。

async/await を使用するには、NETStandard.WindowsCEパッケージを使用できます。

サンプル プロジェクトは、https ://github.com/WindowsCE/System.Collections.Immutable にあります。

免責事項: 私は上記のパッケージとプロジェクトの作成者です。

于 2017-06-27T15:36:19.120 に答える
2

Microsoft.Bcl.Async が .Net 4.0 に対して行うこととまったく同じであるため、ネイティブでサポートしていないプラットフォームにasync-のサポートを追加することは可能であると思います。await

しかし、async-を使用awaitするには、それをサポートするコンパイラが必要です。それを回避する方法はありません。つまり、VS 2012 または Async CTP を使用した VS 2010 を意味します (ただし、それはお勧めしません。製品品質ではありません)。私の知る限り、これを VS 2008 で機能させる方法はありません。

もう 1 つの可能性は Mono を使用することですが、それが WinCE をサポートしているかどうかはわかりません。

于 2013-06-24T08:28:29.290 に答える