.NET MAUI がRC3に到達
.NET6と同時に出る予定だった.NET MAUIも遂にRC3まで来ました。
興味はあるけどリリースされてから、という人も多いと思います。
まずデフォルトがどんなコードかチェックするべくコンパイルしてみました。
プロジェクト作成直後のソースはこちら。
テンプレートソースコードの解説記事は中編を参照してください
前提
- Windows10 (21H2) で実行
- Windows用アプリ を作成。Android, iOS,等は今回省いています。
- 前編ではなるべくコード変更せず、Windowsでコンパイル成功するまでとします。
準備:VisualStudio 2022Preview
インストーラーをダウンロードしインストールすれば終わりです。
オプションはMAUIだけ選択、14GBあります。追加でAndroidSDKをインストールする人はで空き容量に気を付けましょう。
準備:開発者モード
Windows用アプリを開発するには「設定」で開発者モードをオンにする必要があります。
準備は以上で終了です。
プロジェクトの作成
「.NET MAUI アプリ(プレビュー)」 テンプレートから作成します。しばらくするとソリューションが作成されます。プラットフォームは5種類対応しているようですね。
Android SDK
しばらくするとAndroidSDKのインストールを促してきます。
今回はAndroid向けにはコンパイルしないのでインストールせず、キャンセルしました。
Andriod,iOSを無効化
このプロジェクトをこのままコンパイルしても「Android SDKがありません」と出てコンパイルエラーとなります。今回はWindowsだけとするので他のプラットフォーム対応を削除します。
csprojファイルを直接編集します。
<PropertyGroup>
<TargetFrameworks>net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net6.0-windows10.0.19041.0</TargetFrameworks>
<!-- 省略 -->
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">14.2</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">14.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
<TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.5</SupportedOSPlatformVersion>
</PropertyGroup>
このようになっているので TargetFrameworks
の1行目と SupportedOSPlatformVersion
から windows 以外の4行を削除します。
<PropertyGroup>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net6.0-windows10.0.19041.0</TargetFrameworks>
<!-- 省略 -->
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
<TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
</PropertyGroup>
コンパイル、実行
これでWindowsだけで動くバイナリーをコンパイルできます。
こんなアプリが出来上がります。
「Click me」というボタンがあり、クリックするとカウントアップする仕組みになってます。
ちなみにReleaseビルドしたときのbinフォルダのサイズは220MB・・・。
なかなか気軽なアプリではなさそうな気配です。
この時点のソースコードをGitHubにアップしておきます。csprojだけ変更しています。