Open6

[.NET MAUI] Macでの開発環境構築

GomitaGomita

Visual Studio

Visual Studio for Macは2024/8でサポート終了するため、Visual Studio Codeに.NET MAUI拡張機能をインストールする構成がよさそう。
とはいえ、VScodeだとXAMLホットリロードに対応していないので、XAMLをガリガリ修正したいときは毎回ビルドし直す必要があって厳しい。

GomitaGomita

.NETのバージョン

.NET 7は2024/5でサポート終了
.NET 8は2023/11リリースで2026/11でサポート終了
今後のことを考えるとターゲットフレームワークは.NET 8とすべき。

GomitaGomita

VSCode + .NET8での開発

https://pg-himajin.com/dotnet/maui/vscode-maui-install-mac/#a-introductio-1
これがわかりやすい。

https://qiita.com/aqua_ix/items/ba9533d60633abe4c850
こちらの手順通りで問題なし。
ただし、Androidでのビルドが不要なら…

  • Android StudioとOpenJDKはインストール不要
  • maui-android androidのワークロードはインストール不要
  • プロジェクトの.csprojファイルの下記の部分を修正
*.csproj
+		<TargetFrameworks>net8.0-ios;net8.0-maccatalyst</TargetFrameworks>
-		<TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks>
...
-		<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion>

iOSシミュレーターでの実行はターミナルから… ただしiPad Proが起動する。

$ dotnet build -t:Run -f net8.0-ios

iPhone SEで起動したい場合はターミナルから…

$ dotnet build -t:Run -f net8.0-ios -p:_DeviceName=:v2:udid=MY_SPECIFIC_UDID

MY_SPECIFIC_UDIDの値はXcodeを起動してWindow > Devices and Simulatorsを開いて、Simulatorsの一覧からiPhone SE (3rd generation)を右クリック→Copy Identifier

GomitaGomita

VSforMac + .NET8での開発

https://qiita.com/teremasune/items/f7288961f2e1fda68758
こちらの手順1〜3でiOSシミュレーターでの実行まで問題なし。
ただし、VSforMacのGUIから「マイMac (Mac Catalyst)」でデバッグ実行しようとすると、ビルドは成功するものの「アプリケーションがビルドされていません」と表示されて実行されない。

なお、ターミナルからであれば正常に実行可能。

$ dotnet build -t:Run -f net8.0-maccatalyst

「bin/Debug/net8.0-maccatalyst/maccatalyst-arm64」フォルダーには実行ファイルが出力されているのになあ… 「-arm64」を「-x64」にリネームすれば一応実行できる(けどビルドしたら再度リネーム必要)のが謎であり、何かのヒントになりそうだが…
現在ここで行き詰まり中。

なお、当方の環境はX64ではなくARM64で、もちろん.NET 8.0のARM64版をインストールしている。

hidykhidyk

失礼いたします。自分も.NET 8.0のARM64版で同じようなエラーになり、おかげさまでこちらのターミナルからのコマンド実行で解決できました。
また、こちらの公式ページに書いてあるコードを追加する方法でも解決ができましたので念の為共有させて頂きます。既知のことでたら申し訳ござません。

https://learn.microsoft.com/ja-jp/dotnet/maui/get-started/first-app?view=net-maui-8.0&tabs=vsmac&pivots=devices-maccatalyst

プラットフォーム選択MacCatalyst > Visual Studio for Mac

Visual Studio 2022 for Mac で、MyMauiApp プロジェクトを右クリックし、[プロジェクト ファイルの編集] を選択します。 次に、プロジェクト ファイル エディターで、最初 <ItemGroup>の XML の前に次の XML を挿入します。

<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net8.0-maccatalyst|AnyCPU'">
    <RuntimeIdentifiers>maccatalyst-x64;maccatalyst-arm64</RuntimeIdentifiers>
</PropertyGroup>
GomitaGomita

hidykさま、誠にありがとうございます!
公式ページに書いてある通りプロジェクトファイルにXMLを追加したところ、「アプリケーションがビルドされていません。」のエラーが出ることなくアプリが実行できるようになりました。
また、Visual Studio 2022 for Macの最新バージョン17.6.8が2024/1/9にリリースされまして、手動でのXML追記は不要となったようです。
https://learn.microsoft.com/en-us/visualstudio/releases/2022/mac-release-notes#1768--visual-studio-2022-version-1768-newreleasebutton

Issues Addressed in this release of 17.6.8
NET8 MAUI, iOS, and macCatalyst projects no longer require manual changes in the csproj file to define the RuntimeIdentifier to launch and debug.

当方の環境を17.6.8に更新し、ターゲットフレームワークを.NET 8にして新規のMAUIプロジェクトを作成し、「マイMac (Mac Catalyst)」でデバッグ実行して「アプリケーションがビルドされていません。」のエラーが出ることなくアプリが実行できるようになりました。