Xamarin.Android、Xamarin.iOS、Xamarin.Mac プロジェクトを .NET にアップグレードする
Xamarin ネイティブ プロジェクトを .NET にアップグレードするには、次の手順を実行する必要があります。
- プロジェクト ファイルを SDK スタイルに更新します。
- 互換性のない依存関係を .NET 6 以降のバージョンに更新または置き換えます。
- アプリをコンパイルしてテストします。
ほとんどのアプリでは、名前空間を変更したり、他の書き換えを実行したりする必要はありません。
アップグレード プロセスを簡略化するために、Xamarin ネイティブ プロジェクトと同じ種類と名前の新しい .NET プロジェクトを作成し、コード内でコピーすることをお勧めします。 これは、次に示すアプローチです。
新しいプロジェクトを作成する
Visual Studio で、Xamarin ネイティブ プロジェクトと同じ種類と名前の新しい .NET プロジェクトを作成します。 たとえば、Xamarin.Android から .NET for Android にアップグレードするには、 Android アプリケーション プロジェクト テンプレートを選択します。
新しいプロジェクトには、既存のプロジェクトと同じプロジェクトとパッケージ名を指定し、新しいフォルダーに配置する必要があります。 プロジェクト ファイルを開くと、.NET SDK スタイルのプロジェクトがあることを確認します。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.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 6) を使用するプロジェクトを表します。 同等の Xamarin ネイティブ プロジェクトの有効な TFM は、net7.0-android、net7.0-ios、net7.0-macos、net7.0-tvos です。
アプリを起動して、開発環境でアプリをビルドできることを確認します。
Merge files (ファイルのマージ)
Xamarin ネイティブ アプリのフォルダーから、新しいアプリ内の同じフォルダーにコード ファイルとリソース ファイルをコピーします。 同じ名前のファイルを上書きする必要があります。
他のライブラリ プロジェクトがある場合は、それらを新しいソリューションに追加し、新しい .NET プロジェクトからそれらにプロジェクト参照を追加 する必要があります。
また、条件付きコンパイル引数やコード署名などの設定のために、Xamarin ネイティブ プロジェクトから新しい .NET プロジェクトにいくつかのプロジェクト プロパティをコピーする必要もあります。 別の Visual Studio インスタンスでプロジェクトをサイド バイ サイドで開くと、プロジェクトのプロパティを比較できます。 または、新しいプロジェクト ファイルを直接編集して設定を移行することもできます。 詳細については、「 Xamarin.Android プロジェクトの移行 」と 「Xamarin Apple プロジェクトの移行」を参照してください。
依存関係を更新する
Xamarin ネイティブ NuGet パッケージは、.NET TFM を使用して再コンパイルされていない限り、.NET 6 以降と互換性がありません。 使用しているパッケージの NuGet の [フレームワーク] タブを確認し、次の表に示す互換性のあるフレームワークのいずれかが一覧表示されていることを確認することで、パッケージが .NET 7 以降と互換性があることを確認できます。
互換性のあるフレームワーク | 互換性のないフレームワーク |
---|---|
net7.0-android | monoandroid、monoandroid10.0 |
net7.0-ios | monotouch、xamarinios、xamarinios10 |
net7.0-macos | monomac、xamarinmac、xamarinmac20 |
net7.0-tvos | xamarintvos |
xamarinwatchos |
Note
以下に示す互換性のないフレームワークに依存しない .NET Standard ライブラリは、.NET 6 以降と互換性があります。
NuGet 上のパッケージが、互換性のないフレームワークを含むかどうかにかかわらず、上記のいずれかのnet6
新しいフレームワークとの互換性を示している場合、パッケージは互換性があります。 Visual Studio の NuGet パッケージ マネージャーを使用して、互換性のある NuGet パッケージを .NET ネイティブ プロジェクトに追加できます。
.NET 6 以降と互換性のあるバージョンの NuGet パッケージが見つからない場合は、次の手順を実行する必要があります。
- コードを所有している場合は、.NET TFM を使用してパッケージを再コンパイルします。
- .NET 6 以降のバージョンのパッケージのプレビュー リリースを探します。
- 依存関係を .NET 6 以降と互換性のある代替手段に置き換えます。
.NET for Android または .NET for iOS アプリでの Xamarin.Essentials コードの移行については、「. NET for Android での Xamarin.Essentials コードの移行」および「iOS アプリ用の .NET」を参照してください。
コンパイルとトラブルシューティング
依存関係が解決され、コードとリソース ファイルが .NET ネイティブ プロジェクトに追加されたら、プロジェクトをビルドする必要があります。 エラーがあれば、次の手順に進みます。
ヒント
- Visual Studio でプロジェクトを開いてビルドする前に、特に .NET バージョンを変更する場合は、すべてのプロジェクトから すべての bin フォルダーと obj フォルダーを削除します。
- Resource.designer.cs で生成されたファイルを Android プロジェクトから削除します。