要点
- Visual Studio 2022 を 17.11.5 にバージョンアップしたら、これまで使っていた Xcode 15.4 が使えなくなり、Xcode 16 の利用を強制された
- 原因は 17.11.5 と同時にインストールされる .NET SDK 8.0.403 が、 ios/mac の Xcode 16 用の MAUI workload をインストールしてしまうため
- .NET SDK 8.0.402 をインストールし、
dotnet workload restore
コマンドを実行することで Xcode 15.4 を利用する環境に修復可能- Xcode 16 は Xamarin が対応していない…
開発環境 (Visual Studio アップデート前)
Android / iOS マルチプラットフォームアプリ開発 (Xamarin 製アプリのマイグレーション)
- Windows 11
- Visual Studio 2022 17.11.4
- .NET SDK 8.0.402
- Workload version: 8.0.402
- macOS 14.7
- Xcode 15.4
Visual Studio アップデート後
- Visual Studio 2022 17.11.4 -> 17.11.5
- .NET SDK 8.0.402 -> 8.0.403
- Workload version: 8.0.402 -> ? (控え忘れました…)
この状態で mac マシンとペアリング & iOS アプリをビルドすると、「Xcode 16 を使え」という旨のビルドエラーになる。
解決手順
1. .NET SDK 8.0.402 をインストールする
Visual Studio アップデート時に 8.0.403 以前のバージョンの SDK がアンインストールされてしまった場合、新たに 8.0.402 をインストールする (少なくとも 2 つのバージョンの SDK が共存する状態になる)。
> dotnet --list-sdks
8.0.402 [C:\Program Files\dotnet\sdk]
8.0.403 [C:\Program Files\dotnet\sdk]
2. global.json
を設置する
従来どおりに Xcode 15.4 を利用して開発したいソリューションよりも上の階層 (もしくはソリューションファイルと同じ階層) のディレクトリに下記内容の global.json
ファイルを設置する。
{
"sdk": {
"version": "8.0.402",
"workloadVersion": "8.0.402"
}
}
これで、この global.json
ファイルよりも下層のディレクトリにあるソリューションでは .NET SDK 8.0.402 が利用されるようになる。
> dotnet --version
8.0.403
> dotnet --version
8.0.402
3. 対象ソリューションのワークロードをリストアする
ターミナルで Xcode 15.4 を利用した開発を実施したいソリューションファイルの階層にカレントディレクトリを移動し、下記コマンドを実行する。
> dotnet workload restore
当該階層に複数のソリューション or プロジェクトファイルがある場合は、 restore のターゲットを明示してコマンドを実行する。
> dotnet workload restore <PROJECT | SOLUTION>
また、 global.json
で workloadVersion
を設定していない場合は、ワークロードのバージョンを指定して実行する必要がある。
> dotnet workload restore --version 8.0.402
以上の手順で、Visual Studio の新バージョンを使いつつ、Xcode 15.4 での iOS アプリ開発を続行できる…はず。