VS for MacからVS Codeに乗り換えて困ったこと
VS for Macの更新は.NET 7時点で終了しましたが、実験的機能のオプションを有効にすると.NET 8でも使うことが可能でした。しかし.NET 9そうもいかないためVS Codeに移行する必要があります。
今回はVS for MacからVS Codeに乗り換えて困ったこと、よく分からなかったことについて書いていきます。
環境構築編
VS for Macのような専用インストーラーが無いため取っつきにくいです。.NET MAUI, .NET for iOS/Androidのビルド環境に必要な要素は以下の通りです。
- VS Code本体、および拡張機能
- .NET Workload (MAUI, .NET for iOS/Android のSDK)
- iOS, AndroidのネイティブSDK
基本的に公式のインストール手順に沿っていけば一通り揃います。 ただし、Android SDKやAndroidエミュレータの管理については、コマンドラインで頑張ると大変なためAndroid Studioを併用した方が良いと思います。
VS Code本体、および拡張機能
VS Codeの拡張機能はデフォルトで自動更新がオンとなっています。これによってソースコードは全く変わっていないのに突然ビルドできなくなる、といった問題が発生する場合もあります。 上手く動いていたバージョンを控えておく、自動更新をオフにして自分で管理するなどの対策を検討してください。
VS for Macからの乗り換えに必要な拡張機能は以下の通りです。
- [必須] C# Dev Kit (ms-dotnettools.csdevk)
- ソリューションエクスプローラやデバッガが使えるようになります。
- [必須] .NET MAUI (ms-dotnettools.dotnet-maui)
- デバッグ実行するデバイスを選択したり、起動する機能が追加されます。
- [オプション] .NET MAUI - Archive / Publish tool (banditoth.vscode-maui-archive)
- ストア公開のためにアプリをアーカイブ、発行する機能が追加されます。
Android SDKの管理
VS CodeにはVS for MacのようなAndroid SDKマネージャGUIは付いてきません。ですのでAndroid StudioでSDK管理を行い、VS Codeからそのインストール先を参照するようにする方が簡単で良いと思います。
VS Codeが標準的なインストール先を勝手に調べてくれるようですが、候補が複数あるとややこしくなるためVS for MacでインストールしていたSDKは消してしまった方が良いかもしれません。
Androidエミュレータの管理
VS CodeにはAndroidエミュレータの管理機能も付いてきません。ですのでこちらもAndroid Studioを利用した方が良いと思います。 エミュレータの作成や起動の他に、ファイルエクスプローラやlogcatが使える点も嬉しいです。
OUTPUTペイン (.NET MAUI)
VS Codeでソリューションを認識するとUOTPUTペインで「.NET MAUI」を選択すると、拡張機能が認識している環境情報や推奨事項が出力されます。 ビルドが上手くいかない場合などはこちらを確認してみましょう。
「.NET MAUI」の出力が出てこない場合、何かしら問題が発生している可能性が高いです。(自動更新された拡張機能に問題があったり)
デバッグ編
VS Codeには対象OSやデバイスを選択してデバッグ実行を開始するための専用UIが無いため、Visual Studioと比較してかなり取っつきにくいです。(iOS版をデバッグするつもりがAndroid版のビルドが始まったり)
試行錯誤したところ、以下の手順でデバッグ実行を開始するのが安全という結論に落ち着きました。
- ステータスバー左下のからビルド構成Platformを選択する。(合っていれば飛ばしても可)
- 「.NET MAUI: Pick iOS(Android) Device」から実行するOSとデバイスを選択する。(同じデバイスで再度デバッグする場合は飛ばしても可)
- ソリューションエクスプローラでプロジェクト右クリックからデバッグ実行を開始する。
ビルド構成, Platformの選択
ウィンドウ下部の左側に現在選択中のでビルド構成(Configuration)とPlatformが表示されています。 各自の環境によって表示される物が変わってきますが、その中に「Debug Any CPU」のような表示があると思います。
ここをクリックするとウィンドウ中央上部のコマンドパレットでユーザーの選択待ち状態になっていますので、ビルド構成、Platformの順に選択してください。 変更するとウィンドウの再読み込みが必要となります。
デバイスの選択(OSの選択)
コマンドパレットから「.NET MAUI: Pick iOS Device」、「.NET MAUI: Pick Android Device」で実機やiOSシミュレータ、Androidエミュレータを選択できます。 OSを明示的に選択する設定はありませんが、最後に選択したデバイスのOSが選ばれるようです。
例えばVS for MacでインストールしたAndroid SDKを参照している場合、Android Studioで作ったエミュレータが候補に出てこないようですが、事前にエミュレータを起動しておけば選択できます。
プロジェクトを選んでデバッグ開始
コマンドパレットから「.NET MAUI: Pick Startup Project」でデバッグ実行するプロジェクトを選択できますが、この方法は現在選択中のプロジェクトがGUIで分からないため使いにくいです。(ソリューションエクスプローラで強調表示されてほしい)
ソリューションエクスプローラで対象プロジェクト右クリックからデバッグ実行を開始する方が分かりやすく確実で良いと思います。
その他
launch.jsonの"configuration"は使えません。
launch.jsonからビルド構成を指定できた時期もあったようなのですが、現在は効きません。VS CodeのSettingsから「MAUI > Configuration: Use Launch JSON Configurations」をオンにすると効くようになります。
launch.jsonの"configuration"を完全に廃止する前の過渡期的なオプションに見えるため、これに依存するのは止めた方が良いしれません。
フォローしませんか?
お気軽にご依頼・ご相談ください