エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

ポータブル クラス ライブラリを使用して機能を共有する

2014/06/18

対象: Windows Phone 8 および Windows Phone Silverlight 8.1 | Windows 8

 

このトピックでは、ポータブル クラス ライブラリの概要および Windows Phone 8 と Windows 8 のアプリでコードを共有するためにこのライブラリを使用する方法について説明します。

このトピックは、次のセクションで構成されています。

 

ポータブル クラス ライブラリは、.NET Framework 4 から使用できます。次の画像に示すように、これらを使用して Windows 7、Windows 8、Windows Phone、Silverlight、Xbox 360 などの複数のプラットフォームを対象とすることができるポータブル アセンブリを作成できます。ポータブル クラス ライブラリは選択したプラットフォームを対象とする .NET アセンブリのサブセットをサポートします。Visual Studio 2012 Pro 以上のバージョンには、ポータブル クラス ライブラリを作成するために使用できるプロジェクト テンプレートが付属しています。 これは、サポートする必要がある複数のプラットフォーム間で機能を共有することによって時間とコストを節約するための非常に効果的な方法です。

Alignment_Concept_PCLGeneric

ポータブル クラス ライブラリを使用して Windows Phone 8 と Windows 8 のアプリ間で機能を共有することができます。Express バージョンの Visual Studio 2012 にはポータブル クラス ライブラリのプロジェクト テンプレートが含まれていないことに注意してください。このテンプレートは、Visual Studio 2012 Pro 以上のバージョンでのみ使用できます。次の図に、両方のアプリでポータブル クラス ライブラリを共有する方法を示します。ポータブル クラス ライブラリを参照するには、ソリューション エクスプローラーでプロジェクトを選択し、[参照の追加] をクリックします。ポータブル クラス ライブラリのバイナリまたはポータブル クラス ライブラリ プロジェクトのどちらかをポイントします。

Alignment_Concept_PCLWin8WP8

Windows Phone 8 と Windows 8 のアプリを作成するときは、移植可能なコードを識別する必要があります。このコードをポータブル クラス ライブラリに格納し、ポータブル ライブラリを両方のアプリで共有します。移植可能なコードには次のような特徴があります。

  • マネージ コード (C# または VB) ポータブル クラス ライブラリは .NET の概念であり、マネージ コードのみをサポートします。Windows Phone 8 と Windows 8 は同じ .NET エンジンを共有するので、作成するマネージ コードの多く (特にアプリ ロジック) を移植できる可能性があります。

  • 条件付きコンパイルを使用しない ポータブル クラス ライブラリは対象とするプラットフォーム用の移植可能な .NET アセンブリのセットに対してコンパイルされます。Windows Phone 8 と Windows 8 のアプリをビルドする場合、これは、それらのプラットフォーム上で移植可能な .NET アセンブリのセットを意味します。条件付きコンパイル ディレクティブは、異なるプラットフォームまたは構成用にコードがコンパイルされるときに異なるコード パスを有効にすることを目的としています。これはポータブル クラス ライブラリの目的ではありません。Windows Phone 8 と Windows 8 で同じ機能を異なる方法で実装する必要がある場合は、両方のコード パスをポータブル クラス ライブラリに含めることはできません。代わりに、プラットフォームに依存するコードを抽象化し、プラットフォームに依存しない移植可能なコードのみを共有する必要があります。

  • Windows ランタイム API を使用しない Windows ランタイム API は、移植可能ではないので、ポータブル クラス ライブラリでは使用できません。Windows Phone 8 と Windows 8 でサポートされている Windows ランタイム API には重複部分があります。ただし、バイナリの互換性はサポートされません。各プラットフォーム用にコードをコンパイルする必要があるので、ポータブル クラス ライブラリに適していません。ここでも Windows ランタイム API の使用をポータブル クラス ライブラリで共有されるクラスまたはオブジェクトに抽象化する必要があります。

  • UI コンストラクターを使用しない Windows Phone 8 と Windows 8 の XAML は同じに見え、ほとんどの部分で UI コントロールの名前も同じですが、このコードは移植可能ではありません。UI コードは各プラットフォーム用にコンパイルする必要があるので、ポータブル クラス ライブラリでの配置の候補になりません。

モデル - ビュー - ビューモデル (MVVM) パターンと .NET API を使用して Windows Phone 8 と Windows 8 のアプリを作成するときは、多くのコードをポータブル クラス ライブラリで共有できる可能性があります。ビューモデルとモデルは移植可能になるように設計することができ、それらはポータブル クラス ライブラリ内に配置する必要があります。アプリのビューとスタートアップ コードは通常プラットフォーム固有であり、Windows Phone 8 と Windows 8 のアプリ プロジェクトで実装する必要があります。これを次の図に示します。

Alignment_Concept_PCL_MVVM

ビューモデルでプラットフォーム固有のコードを呼び出す必要がある場合は、その機能をプラットフォームに依存しないインターフェイス内に抽象化し、そのインターフェイスをポータブル クラス ライブラリ内で使用する必要があります。このインターフェイスは各アプリ プロジェクトでプラットフォーム固有の方法で実装することができます。ポータブル クラス ライブラリは、一度コンパイルすれば複数のプラットフォームで使用できるので、これは非常に強力なコード共有手法であり、バイナリの共有を可能にします。

表示:
© 2014 Microsoft