複数のプラットフォーム上でのコードの共有

これらの記事では、Windows、Android、iOS など、複数のプラットフォームでコードを共有するために利用できるさまざまなオプションについて説明します。

コード共有の概要

.NET Standard ライブラリや共有プロジェクトなど、Xamarin プロジェクトで利用できるさまざまなコード共有のオプションについて学習します。 ポータブル クラス ライブラリもサポートされていますが、.NET Standard が推奨されるため、これらは非推奨と見なされています。

.NET Standard

.NET Standard は、複数のプラットフォームでコードを共有するための推奨オプションです。 コードは特定のバージョン (2.0 が既存の .NET Framework コードでの最高の API 互換性を提供します) に対してビルドされ、そのレベル以上をサポートする他のプロジェクトで使用できます。 .NET Standard プロジェクトは、Visual Studio 2019 と Visual Studio 2019 for Mac の両方でサポートされています。

共有プロジェクト

共有プロジェクトを使用すると、さまざまなアプリケーション プロジェクトによって参照される共通コードを記述できます。 このコードは、各参照プロジェクトの一部としてコンパイルされ、共有コード ベースにプラットフォーム固有の機能を組み込むのに役立つコンパイラ ディレクティブを含むことができます。 この記事では、共有プロジェクトの仕組みと、Xamarin プロジェクトで共有プロジェクトを作成して使用する方法について説明します。

ポータブル クラス ライブラリ

ポータブル クラス ライブラリ プロジェクトを使用すると、複数のプラットフォームで実行する共有コードを含むアセンブリをビルドして配布できます。 ポータブル クラス ライブラリ (または "PCL") を作成するには、まずターゲットとするプラットフォームを選択してから、それらのプラットフォーム用に定義されたプロファイルで利用できる .NET Framework のサブセットに対してコードを記述します。 PCL は、Visual Studio の最新バージョンでは非推奨と見なされています。開発者は代わりに .NET Standard 2.0 を使用することが推奨されています。

NuGet プロジェクト: コード共有のためのマルチプラットフォーム ライブラリ

NuGet パッケージは、PCL または .NET Standard プロジェクトから自動的に生成できます。そして共有プロジェクトは、個別の NuGet プロジェクト タイプを使用して、"bait and switch" NuGet パッケージへとパッケージ化できます。 このセクションでは、コード共有のシナリオごとに NuGet パッケージを作成する方法について説明します。

Xamarin 用 NuGet パッケージの手動作成

Xamarin プラットフォームで動作する NuGet パッケージ作成のヒント。

クロスプラットフォーム Xamarin プロジェクトで C/C++ ライブラリを使用する

この手法を使用すると、C/C++ ライブラリ、NuGet 内での C# バインディング、Xamarin アプリケーションの進化を分離できます。 機能はネイティブ プラットフォームの C/C++ ライブラリによって提供されますが、プラットフォーム固有コードはすべて最終的な Xamarin アプリケーションから分離されるため、コードの重複をなくして最高のパフォーマンスを実現できます。