6

Windows Phone 8 と Windows 8 の間でコードを共有する場合、開発者にとって 2 つの主要なオプションは、1) Windows ランタイム コンポーネントと 2) ポータル クラス ライブラリです。

Windows ランタイム コンポーネントは WinRT を使用し、サポートされているすべての言語に投影できます。異なるプラットフォームで使用する場合、別のプロジェクト (バイナリ) にリンクされたファイルが必要です。ただし、これらは利用可能な WinRT API の 90% を共有しています。

ポータブル クラス ライブラリは、プラットフォーム間でバイナリ互換性を持つ BCL のサブセット (場合によっては重要なサブセット) です。WinRT アプリケーションだけでなく、Silverlight、Xbox などの他のプロジェクト タイプでも使用できます。

開発者が "共有戦略" を選択する場合、Windows Phone 8 と Windows 8 の間でコードを共有するための最良の方法はどのプロジェクト タイプですか? ありがとう。

4

4 に答える 4

4

必要な共有の形式によって異なります。

1)共通のC ++ビジネスロジックレイヤーがある場合は、Windowsランタイム(WinRT)コンポーネントを使用して、これをWindowsPhoneとWindowsStoreアプリの両方に公開できます(WP8アプリを作成できないため、Windows Phoneの唯一のユースケースです) JavaScriptを使用するか、.NETを使用してWinRTコンポーネントを作成します)。

ただし、2つの別々のWinRTコンポーネントを作成する必要があります。1つは電話用、もう1つはWindowsストア用です。プリプロセッサディレクティブ()を使用してWinRT相互運用レイヤーのC ++ / CXコードを共有し#if、プラットフォーム固有のコードをマークできるようにする必要があります。

2)ポータブルクラスライブラリで利用可能な.NET APIにのみ依存するC#/VBのビジネスロジックがあります。次に、Portable Class Library(PCL)を使用してそのロジックを含めることができます。基本的に、ライブラリをPCL DLLに組み込むことができれば、これは機能するはずですその後、WindowsPhoneアプリとWindowsStoreアプリの両方で、このPCLをバイナリ形式で参照できます。

ただし、Martinが言ったように、サードパーティのライブラリを使用する場合は注意が必要です。サードパーティのライブラリもPCL用に構築する必要があるためです。一部のサードパーティライブラリは、PCL形式ですでに利用可能です(たとえば、JSON.NET)。

3)PCLでサポートされていないプラットフォームAPIの依存関係(またはサードパーティのライブラリの依存関係)を持つコードを共有したい。次に、プラットフォームごとに1つずつ、個別のDLLライブラリを作成する必要があります。リンクされたC#/ VBソースファイルを使用してコードの重複を回避し、ビルドフラグを(#if再度)使用して、ターゲットプラットフォーム間で小さなコード変更を許可できます。

于 2012-11-27T14:03:52.257 に答える
3

Windows Phone 8 と Windows 8 の間でコードを共有する場合、Windows ランタイム コンポーネントを使用することはできません。これは、Windows 8 で使用されるコンポーネントと Windows Phone 8 で使用されるコンポーネントが異なり、交換できないためです。
いくつかの単純な汎用ライブラリ用のポータブル クラス ライブラリ、またはリンクと #if WP8 コンパイル ディレクティブを介したコード共有のいずれかを使用します。これは機能し、ポータブル ライブラリよりも強力です。
また、MVVM Light などのほとんどの外部ライブラリはポータブル ライブラリで参照できないため、それらを使用する場合は、ファイル参照によるコード共有を使用する必要があることに注意してください。

于 2012-11-27T08:28:52.807 に答える
1

ポータブル クラス ライブラリを効果的に使用してプラットフォーム間でコードを共有する方法に関するガイダンスについては、次のブログ投稿を参照してください: ポータブル クラス ライブラリを機能させる方法

于 2012-12-06T18:07:29.460 に答える