Xamarin.Android、Xamarin.iOS、Xamarin.Mac プロジェクトを .NET にアップグレードする

Xamarin ネイティブ プロジェクトを .NET にアップグレードするには、次の手順を実行する必要があります。

  • プロジェクト ファイルを SDK スタイルに更新します。
  • 互換性のない依存関係を .NET 8 バージョンに更新または置き換えます。
  • アプリをコンパイルしてテストします。

ほとんどのプロジェクトでは、名前空間を変更したり、他の書き換えを実行したりする必要はありません。

アップグレード プロセスを簡略化するために、Xamarin ネイティブ プロジェクトと同じ種類と名前の新しい .NET プロジェクトを作成し、コード内でコピーすることをお勧めします。 これは、次に示すアプローチです。

新しいプロジェクトの作成

Visual Studio で、Xamarin ネイティブ プロジェクトと同じ種類と名前の新しい .NET プロジェクトを作成します。 たとえば、Xamarin.Android から .NET Android にアップグレードするには、Android アプリケーション プロジェクト テンプレートを選択します。

Screenshot of selecting the Android app project template in Visual Studio.

新しいプロジェクトには、既存のプロジェクトと同じプロジェクトとパッケージ名を指定し、新しいフォルダーに配置する必要があります。 プロジェクト ファイルを開くと、.NET SDK スタイルのプロジェクトがあることを確認します。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0-android</TargetFramework>
    <SupportedOSPlatformVersion>21</SupportedOSPlatformVersion>
    <OutputType>Exe</OutputType>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <ApplicationId>com.companyname.AndroidApp2</ApplicationId>
    <ApplicationVersion>1</ApplicationVersion>
    <ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
  </PropertyGroup>
</Project>

重要

ターゲット フレームワーク モニカー (TFM) は、.NET (この場合は .NET 8) を使用するプロジェクトを表します。 同等の Xamarin ネイティブ プロジェクトの有効な TFM は、net8.0-android、net8.0-ios、net8.0-macos、および net8.0-tvos です。 SDK スタイルのプロジェクトのターゲット フレームワークの詳細については、「SDK スタイルのプロジェクトのターゲット フレームワーク」を参照してください

アプリを起動して、開発環境でアプリをビルドできることを確認します。

Merge files (ファイルのマージ)

Xamarin ネイティブ プロジェクトのフォルダーから、新しいアプリ内の同じフォルダーにコードファイルとリソース ファイルをコピーします。 同じ名前のすべてのファイルを上書きする必要があります。

他のライブラリ プロジェクトがある場合は、それらを新しいソリューションに追加し、 新しい .NET プロジェクトからプロジェクト参照 を追加する必要があります。

また、条件付きコンパイル引数やコード署名などの設定のために、Xamarin ネイティブ プロジェクトから新しい .NET プロジェクトにいくつかのプロジェクト プロパティをコピーする必要があります。 個別の Visual Studio インスタンスでプロジェクトをサイド バイ サイドで開くと、プロジェクトのプロパティを比較できます。 または、新しいプロジェクト ファイルを直接編集して設定を移行することもできます。 詳細については、Xamarin.Android プロジェクトの移行と Xamarin Apple プロジェクトの移行に関する説明を参照してください。

依存関係を更新する

一般に、Xamarin ネイティブ NuGet パッケージは、.NET TFM を使用して再コンパイルされていない限り、.NET 8 と互換性がありません。 ただし、.NET Android アプリでは、そのアプリとmonoandroidXX.Xフレームワークを対象とする NuGet パッケージをmonoandroid使用できます。

使用しているパッケージの NuGet の [フレームワーク] タブを確認し、次の表に示す互換性のあるフレームワークの 1 つが一覧表示されていることをチェックすることで、パッケージが .NET 8 互換であることを確認できます。

互換性のあるフレームワーク 互換性のないフレームワーク
net8.0-android、monoandroid、monoandroidXX.X
net8.0-ios monotouch、xamarinios、xamarinios10
net8.0-macos monomac、xamarinmac、xamarinmac20
net8.0-tvos xamarintvos
xamarinwatchos

Note

上記の互換性のないフレームワークに依存しない .NET Standard ライブラリは、.NET 8 と互換性があります。

NuGet 上のパッケージが、互換性のないフレームワークを含むかどうかにかかわらず、上記の互換性のあるフレームワークとの互換性を示している場合、パッケージは互換性があります。 互換性のある NuGet パッケージは、Visual Studio の NuGet パッケージ マネージャーを使用して、.NET ネイティブ プロジェクトに追加できます。

NuGet パッケージの .NET 8 互換バージョンが見つからない場合は、次の手順を実行する必要があります。

  • コードを所有している場合は、.NET TFM を使用してパッケージを再コンパイルします。
  • .NET 8 バージョンのパッケージのプレビュー リリースを探します。
  • 依存関係を .NET 8 互換の代替手段に置き換えます。

.NET Android または .NET iOS アプリでの Xamarin.Essentials コードの移行の詳細については、「.NET Android および .NET iOS アプリでの Xamarin.Essentials コードの移行」を参照してください

コンパイルとトラブルシューティング

依存関係が解決され、コードとリソース ファイルが .NET ネイティブ プロジェクトに追加されたら、プロジェクトをビルドする必要があります。 エラーがあれば、次の手順に進みます。

ヒント

  • Visual Studio でプロジェクトを開いてビルドする前に、特に .NET バージョンを変更する場合は、すべてのプロジェクトからすべての bin フォルダーと obj フォルダーを削除します。
  • Android プロジェクトから Resource.designer.cs で生成されたファイルを削除します。