6

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

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

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

開発者が最良のジョブ共有を行うための「共有戦略」を選択している場合Windows Phone 8とWindows 8の間のコードですか?ありがとうございます。

+1

また、WinRTコンポーネントまたはPCLのないソースファイルのリンク方法もあります。 –

+0

この質問は、共有プロジェクトをサポートするVisual Studio 2013 Update 2のWindows Phone 8.1ユニバーサルアプリケーションの導入とは関係ありません。 –

+0

@ JerryNixon-MSFT - それは知恵の興味をそそる宝石です。どのように「サンプルプロジェクト」の仕事とどのような問題が解決しますか? –

答えて

3

Windows Phone 8とWindows 8の間でコードを共有する場合は、Windows 8には異なるコンポーネントが使用され、Windows Phone 8には異なるコンポーネントがあり、互換性がないため、Windowsランタイムコンポーネントは使用できません。
いくつかのシンプルな汎用ライブラリのポータブルクラスライブラリ、またはリンクと#if WP8コンパイルディレクティブを使ったコード共有のどちらにも向いています。これは動作しポータブルライブラリよりも強力です。
MVVM Lightのようなほとんどの外部ライブラリはPortable Libsで参照できないので、それらを使用するには、ファイル参照を使用してコード共有を使用する必要があります。

+3

実際には、MVVM LightのPCLバージョンがあります.NuGetパッケージはPortable.MvvmLightLibsで、ソースは次のとおりです。http://mvvmlight.codeplex.com/SourceControl/network/forks/onovotny/MvvmLightPortable/ –

+2

@Martin Suchan - 「Windows Phone 8とWindows 8の間でコードを共有したい場合は、Windowsランタイムコンポーネントを使用することはできません...」 _shareコード_の意味によって異なります。 WinRTとWP8の両方をターゲットとする**単一** WRCプロジェクトを作成することはできませんが、各**に対して**を1つ作成することができ、両方のプロジェクトが同じC/C++ソースコードを参照できます。 –

+0

@Martin Suchan&@Scott Smith、[あなたは確信しています](http://s2.postimg.org/gm9wext2x/Win_Runtime_Comp_Portable.png)? 'Windowsランタイムコンポーネント(Portable Windows Universal 8.1)'テンプレートオプションがあるためです。説明には、「アプリケーションが書かれているプログラミング言語に関係なく、WindowsおよびWindows Phoneアプリケーション用の管理されたWindowsランタイムコンポーネントを作成するプロジェクト」と記載されています。 – bunkerdive

4

は、それはあなたを共有する形が必要なものによって異なります。

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

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

2)C#/ VBには、ポータブルクラスライブラリで使用できる.NET APIにのみ依存するビジネスロジックがあります。次に、ポータブルクラスライブラリ(PCL)を使用して、そのロジックを格納することができます。基本的にの場合あなたのライブラリをPCL DLLにビルドすることができます。このPCLは、Windows PhoneとWindows Storeの両方のアプリケーションでバイナリ形式で参照できます。

しかし、サードパーティのライブラリを使用する際には、PCL用に構築する必要があるため、マーティン氏は注意しなければならないと述べています。他のサードパーティのライブラリは既にPCL形式(JSON.NETなど)で利用可能です。

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

1

効果的にこのブログの記事を参照して、プラットフォーム間でコードを共有するためにポータブルクラスライブラリを使用する方法のいくつかのガイダンスについて:How to Make Portable Class Libraries Work for You

1

この質問は、Windowsの導入 電話8.1ユニバーサルアプリ内での関連なくなりました 共有プロジェクトをサポートするVisual Studio 2013 Update 2そこにプロジェクトの2種類があるので

も、Visual Studioの2013年更新4この質問に私のためとして、瞬間を待ってはまだ関連です:

クラスライブラリ(ユニバーサルアプリ用ポータブル) - PCL

Windowsランタイムコンポーネント(ユニバーサルアプリ用ポータブル) - WinMD

私はそれらの間に大きな違いが1つしか見えません。 WinMDはWinRTのみを使用し、PCLは.NetとSilverlightでも使用できます。しかし、私はまた、どちらを選択するのが良いかについてもっと知りたいと思う。

+0

Visual Studio 2014 Community Editionは無料です。また、Visual Studio 2015コミュニティ版は無料です。状況に応じてVisual Studioを更新することをお勧めします。 –

関連する問題