4

Portable Class Libraryの導入により、開発者は複数のプラットフォーム間で互換性のある単一のライブラリをリリースできます。これの欠点は、PCLが、指定されたすべてのプラットフォーム間で互換性のあるクラスの最も低い共通セットに自分自身を減らす必要があることです。

特定のプラットフォームの長所と機能を試してみたい場合(または特定のプラットフォームにのみ存在するクラスにアクセスしたい場合)、次のいずれかを実行する必要があると思います。

  1. 「ベース」クラスのセットをポータブルクラスライブラリとしてリリースし、それに基づいてプラットフォーム固有のライブラリを付属させます。
    • 1つの例として、MVVMライブラリがあります。共通の基本クラスを単一のポータブルクラスライブラリ(「MyCustomMvvm.dll」という名前)としてリリースし、「MyCustomMvvm.Extras.WPF.dll」および「MyCustomMvvm.Extras」の形式でいくつかの追加のプラットフォーム機能をリリースします。 .WP7.dll、 "など...または:
  2. 「リンクされた」ソースファイルと#ifステートメントを使用してプラットフォーム固有の機能を条件付きでコンパイルし、プラットフォームごとに個別のプロジェクトを保持します。
    • この例では、すべてのライブラリのファイル名は同じ( "MyCustomMvvm.dll")ですが、ソリューション内のプラットフォーム固有のプロジェクトを使用して構築された、プラットフォームごとに個別のコピーがあります。

私の質問は:それらは2つのオプションだけですか?明らかに「より良い」オプションはありますか?

4

1 に答える 1

1

http://blogs.msdn.com/b/rxteam/archive/2012/03/12/reactive-extensions-v2-0-beta-available-now.aspx、特に「ポータブルライブラリの世界に向けて」のセクションを確認してください。Rxは多くの異なるランタイムを対象としているため、これは良い例のユースケースです。彼らは通常、オプション1として提案したことを実行し、NuGetを使用して多くの配布を管理します。

NuGet 2.1は、この取り組みを支援するために変更を加えています:http: //nuget.codeplex.com/discussions/391121

2番目の提案は、MVVMlightがhttp://blogs.msdn.com/b/dsplaisted/archive/2012/08/27/how-to-make-portable-class-libraries-work-for-youに従ってどのように実行するかです。すべてのアセンブリに同じ名前を付ける理由がないことを除いて、aspx 。

信頼できる、または有用な代替案があるかどうかはわかりません。

于 2012-09-28T18:51:03.103 に答える