両方のタイプのフレームワーク (コンパクトかどうか) で使用できるテクニカル ライブラリ クラスを開発しています。
そのようなライブラリを開発する最良の方法は何ですか? デフォルトで .NET 機能 (XP Embedded 用) を使用し、Windows CE を使用する場合 (CF.NET を使用) の制限を行いますか?
ありがとう。
両方のタイプのフレームワーク (コンパクトかどうか) で使用できるテクニカル ライブラリ クラスを開発しています。
そのようなライブラリを開発する最良の方法は何ですか? デフォルトで .NET 機能 (XP Embedded 用) を使用し、Windows CE を使用する場合 (CF.NET を使用) の制限を行いますか?
ありがとう。
私は通常、プレイフォームごとに個別の dll を用意することでこれに取り組みます。そのため、可能な場合は利用可能なプラットフォーム機能を使用できます (多くの場合、どちらも厳密なサブセット/スーパーセットではなく、ビートのパフォーマンスが必要な場合などに交差点を目指すことは過度に制限されます)。
ただし、ほとんどの機能は共通であるため、#if コード (機能固有のビルド シンボルを含む) の量は多くの場合最小限です。
プロジェクト ファイルの追加を忘れるという問題を回避するために、csproj で再帰的なワイルドカードを使用して、すべての .cs ファイルが自動的に含まれるようにします。
.NET と .NET CF のコード ベース間でライブラリ クラスを共有するには、2 つの方法があることがわかりました。
コードは同一です
多くの場合、ライブラリは同一である可能性があります。特に、それらが計算を含む基本的なライブラリであるか、同一のビジネス クラスである場合はそうです。非 UI ライブラリの場合、.NET CF はほとんどが .NET のサブセットであるため、これはよくあるケースです。
この場合、デバイス プロジェクトをビルドして、それを完全な Windows プロジェクトに含めることができます。デバイス プロジェクトを読み込んでいるという警告が表示されますが、CF 固有のコードを使用していなければ問題ありません。
コードは非常に似ていますが、異なります
この場合、2 つのプロジェクトと 2 つのアセンブリを作成します。これらのアセンブリの 1 つをプライマリ アセンブリにし、使用するすべてのファイルを含めます。次に、ファイルをリンクとして追加して、参照として含めるようにします。これにより、すべての更新が反映されます。次に、ifdefs が異なる可能性がある特別な場合に使用します。
プリプロセッサ ディレクティブの使用を検討してください。
一般的な .NET 用と CF 用の同じ lib の 2 つのバージョンをビルドできます。
お気に入り :
#if (!COMPACT_FRAMEWORK)
// some code only for general .NET
#endif