6

私は、WindowsMo​​bileと「通常の」デスクトップWindowsの両方で実行されるUIを備えたアプリケーションを構築することを目標としています。優先順位は、Windows Mobileで「見栄えがする」ことであり、デスクトップWindowsの場合は、歪んでも問題ありません。何日も試してみる前に、そもそもそれが可能かどうか聞いてみたいと思います。この質問にはいくつかの部分があります。

  1. .NET Compact Frameworkは「通常の」(編集してください).NET Frameworkのサブセットですか?そうでない場合、MSDNには、.NET Compact Frameworkにはあるが、「通常の」(ここでも編集してください)フレームワークにはないクラスに関する情報がありますか?

  2. 共有クラスの動作は両方のフレームワークで同じですか?

  3. 両方のプラットフォームに単一のVisualStudio2005ソリューション/プロジェクトを用意することは可能ですか?はいの場合、どのように設定しますか?

  4. 他にコメントやアドバイスはありますか?関連するリンクはありますか?

4

5 に答える 5

10
  1. CFには完全なフレームワーク (FFx) のサブセットが含まれていますが、純粋なサブセットではありません。実際には、FFx にはない CF で使用できるものがいくつかあるため、少し難しくなっています。最も初歩的な場合を除き、CF アプリも P/Invoke を使用します。これらの呼び出しは、デスクトップからデバイスへ同じになることは決してないため、直接移植することはできません (ただし、少し抽象化することで、プラットフォームに依存しないインターフェイスを持つことができます)。
  2. ほとんどの場合、動作は同じです。ではないケースをいくつか見てきましたが、イベントの順序が常に同じであるとは限らないことを思い出したので、信頼して確認してください。
  3. 構成を注意深くマッサージすることで可能ですが、お勧めしません. 維持するのが難しく、非常に壊れやすいです。代わりに、CF 用と FFx 用の 2 つのプロジェクト ファイルを作成します。とにかく、コードファイルに違いがある可能性があります。コード ファイルをリンクとして各プロジェクトに追加して、両方が同じ物理ソース ファイルを使用するようにします。何らかの形のCIを使用して、両方が常にビルドされるようにすることをお勧めします。
  4. コード資産の共有に関する Dan Moth の MSDN 記事ブログ エントリを参照してください。
于 2008-12-02T14:51:46.743 に答える
6

PS私はオンラインでポスターを見つけました-それはあなたにCFであるすべてのクラスを見せます。Kinkosが65ドルでカラーで印刷したかったので、Microsoftに注文しました。マイクロソフトは私に2、3のコピーを無料で送ってくれました-私がしなければならなかったのは尋ねるだけでした:

http://www.microsoft.com/downloads/details.aspx?familyid=7B645F3A-6D22-4548-A0D8-C2A27E1917F8&displaylang=en

私はそれを私のキュービクルにぶら下げています、そしてそれはどの名前空間クラスがで見つかることができるかを思い出そうとするときの天の恵みです。

于 2008-12-02T05:33:50.550 に答える
3

素敵なマルチパートの質問:

  1. フルフレームワークとコンパクトフレームワークの違い
  2. 上記の記事には、クラスの動作がどのように異なるかについての関連ドキュメントへのリンクがあります(状況によっては間違いなく異なります)
  3. とてもシンプル!クラスライブラリに一連の基本機能を備えた単一のソリューションを作成してから、2つのクライアントプロジェクトを作成します(1つはデスクトップアプリ用、もう1つはWindowsモバイルアプリ用)。最後に、クラスライブラリへの参照を両方のクライアントプロジェクトに追加します。
  4. 作業しているプロジェクトの幅によっては、ModelViewControllerパターンを確認することをお勧めします。プロジェクトにとっては少し大変かもしれませんが、プロジェクト間でUIの動作を共有したい場合は、命を救うことができます。

お役に立てば幸いです。

于 2008-12-02T05:26:05.650 に答える
2

CFには、通常、通常のフレームワークのクラスのサブセットが含まれていますが、一方から他方へコードを直接実行することはできません。さらに、単なるサブセットではなく、モバイルデバイス(ソフトキーなど)に固有のGUIのものなど、通常のバージョンにはないコンパクトなものがいくつかある可能性があります-winform exeを作成していると仮定すると、 Webページではありません(互換性を得る最も簡単な方法かもしれません)。

ある程度の努力で、ロジックコード、特にユーティリティdllを共有することは可能ですが、異なるcsprojファイルが必要です(コンパイル時の「ターゲット」が完全に異なるため)。メンテナンスを減らすために、ここからのように、csprojをハッキングしてワイルドカードを使用することでチートすることができます。

<ItemGroup>
  <Compile Include="..\protobuf-net\**\*.cs" />
</ItemGroup>

UIの場合、物事はかなりトリッキーになります。一般に、ビジネスロジックを共有し、ターゲットデバイスごとにUIを分離することが期待されます。

于 2008-12-02T05:07:14.177 に答える
1

1)。コンパクトフレームワークがあるのでそうです。そして、それは完全な.NETFrameworkのサブセットです。オフィスの壁にCFで働くクラスがたくさんあることを示すポスターが貼ってあります...純粋にCFなものがあったとしても、頭のてっぺんから思い出せませんが、そこにあると思いますいくつかでなければなりません。このテーマに関する優れた本が2冊あります。1冊は私が持っているPaulYaoによるもので、もう1冊はAndyWigleyによるものです。どちらもAmazonで入手できます。

2)。私の知る限り、CFと完全なフレームワークであるクラスは同じように機能しますが、異なるターゲット用にコンパイルする必要があります。

3)。両方に共通のクラスのみを使用し、同じソリューションを使用できると推測するのは危険ですが、コンパクトデバイスとフルバージョン用にコンパイルするために必要な範囲はわかりませんが、それができると完全に確信を持って言うこともできません。プロセスは単純ではないと推測するのは危険です。

4)。あなたの地元の書店に行って、私が言及したそれらの2冊の本をフリックしてください。私が言ったように、私はポール・ヤオによるものを持っています、そしてそれは私がコンパクトなデバイスに必要と想像することができたもののほとんどをカバーしているようです。

于 2008-12-02T05:07:26.577 に答える