リンクされたファイルの欠点:
- リンクとして追加は、特に複数のプロジェクトと多くのソース ファイルにスケーリングする場合、維持するのが難しい場合があります。ツール (Visual Studio 2010 のプロジェクト リンカー、または Visual Studio 2012 でドラッグ中に ALT を押したままにするなど) を使用すると、これが簡単になります。
- リファクタリング ツールは、リンクされたファイルでは機能しません。たとえば、リンクされたファイル内のクラスまたはメソッドの名前を変更した場合、リファクタリング ツールは、その API の他のリンクされたコピーへの参照を更新しません。
- リンクされたファイルのコードを編集するとき、intellisense は、ファイルがリンクされているすべてのプラットフォームで使用できない API を表示する場合があります。
- Visual Studio では、別のプロジェクトで既に開かれているリンク ファイルを開こうとすると、"このドキュメントは別のプロジェクトで開かれています" というメッセージ ボックスが表示されます。
- プラットフォームごとに個別の DLL が作成されます。他の人と共有したい再利用可能なライブラリを作成している場合、プラットフォームごとに個別のバージョンではなく、そのバージョンが 1 つだけある方が配布しやすいかもしれません。
ポータブル クラス ライブラリの欠点:
- 対象とするすべてのプラットフォームで使用できる API に限定されます。
#if
条件付きコンパイル (ステートメント) を使用して、プラットフォーム間の違いを回避することはできません
- 特定のプラットフォームの組み合わせでサポートされている API を把握するのは難しい場合があります。これに役立つスプレッドシートを次に示します: Portable Class Library API List
ポータブル クラス ライブラリを利用する方法に関するガイダンスについては、次を参照してください。
私は (PCL チームのメンバーとして) ポータブル クラス ライブラリに傾倒していますが、リンクされたファイルはコードを共有するための完全に有効な方法でもあります。リンクされたソース ファイルを使用します。ほとんどの場合、Portable Class Libraries を使用しますが、PCL が収まらない場合は、リンクされたソース ファイルを使用します。