コンテンツにスキップ

プラットフォームについて

共有コードの概要(Code Shareing Strategy)

https://docs.microsoft.com/ja-jp/xamarin/cross-platform/app-fundamentals/code-sharing

Shared Projects

共有アセット プロジェクト タイプを使用して、ソース コードを整理し、必要に応じて #if コンパイラ ディレクティブを使用してプラットフォーム固有の要件を管理します。

PCL(Portable Class Libraries)

サポート対象のプラットフォームを対象とするポータブル クラス ライブラリ (PCL) を作成して、プラットフォーム固有の機能を提供するインターフェイスを使用します。

.NET Standard Libraries(標準の .NETライブラリ)

NET 標準プロジェクトが Pcl、プラットフォーム固有の機能を挿入するインターフェイスの使用を必要とする同様に動作します。

クラスライブラリ

http://ytabuchi.hatenablog.com/entry/NetStandardXamarin
.NET Standard と PCL はクラスライブラリなので、成果物として DLL が作成されます。.NET Standard は PCL の上位互換のようなものだと考えてください。以下の記事を読めばイメージがつかめると思います。  
一方、Shared Project は、ファイルリンクです。iOS/Android/UWP のプロジェクトをビルドする際に、それぞれのプロジェクトから参照されます。そのため、iOS/Android/UWP で使われている Xamarin.iOS/Xamarin.Android/.NET Core Framework で実装されている BCL(Base Class Library) の API を全て使えるのが特長です。ただし、当然 DLL や NuGet 化はできないので、別のソリューションで使用したい場合は、ファイルをコピーする必要があります。

雑記

Visual Studioにて、プロジェクトの新規作成→Mobile App(Xamarin.Forms)→
から、PCLが選択できないんだけど・・・(Shared Project はある)

何なのかさっぱり。

追記

https://docs.microsoft.com/ja-jp/nuget/reference/target-frameworks

PCL はお勧めできません。 PCL はサポートされていますが、パッケージ作成者は代わりに netstandard をサポートすることをお勧めします。

・・・らしい。