ポータブルクラスライブラリ(PCL)と共有ライブラリの違い

以下、共有ライブラリは共有プロジェクトと表記します。

コードの共有方法には2パターンあり、プロジェクトの作成時にどちらか1つだけ選択できます。 

f:id:mocotanus:20180131054503p:plain

 

共有プロジェクト

 

共有プロジェクトはライブラリではありません。VisualStudioの機能です。


一般的なプロジェクトと役割が違います。
通常、プロジェクト単位でdll,exeなどの実行モジュールが作られます。しかし共有プロジェクトは実行モジュールを生成しません。単にソースコードの置き場でしかありません。

 

●ビルド時のイメージ:
ビルドすると、共有プロジェクト内のコードが.Androidにコピーされてからビルドされる。(.iOSも同じ)
(→ソースコードを共有する)

 

●特徴
#ifディレクティブで囲めばプラットフォーム依存のコードが書ける。

しかし、#ifディレクティブは増えると読みづらくなっていく。

 

ポータブルクラスライブラリ(PCL)

PCL(Portable Class Library)とも呼ばれます。

 

プロジェクトの種類で、クラスライブラリです。


クラスライブラリとはDLLのことで、Javaでの.jarファイル、Xcodeでの.aファイルにあたります。プラットフォーム(AndroidiOS)に依存しない部分のみを記述するため、ポータブルな(移植可能な)ライブラリになります。

ビルドして生成されるdll自体が移植可能なものとなる。

 

●ビルドすると:

クラスライブラリなので、ビルドするとdllが生成されます。

(→dllを共有する)

 

●特徴
完全に独立している。
どのプラットフォーム上でも使える。
dllだけで使える。

ただし、プラットフォーム固有の処理は書けない。

 

 

以下の書籍を参考にしました。

 

PCLのほうが使い勝手が良さそうだが…(´・ω・`)