WinUI 3 アプリケーションを.NET 7 でビルドする
WinUI 3アプリケーションを.NET 7 でビルドする手順を紹介します。
概要
WinUI 3アプリケーションをテンプレートから作成すると、デフォルトで.NET 6で作成されます。
ターゲットのプラットフォームを.NET 7に変更する場合の手順を紹介します。
手順
ソリューションエクスプローラーでプロジェクトのノードをクリックして選択し、右クリックします。
ポップアップメニューの[プロパティ]の項目をクリックします。
プロジェクトのプロパティ画面(下図)が表示されます。
[アプリケーション]セクションの[ターゲットフレームワーク]の設定値を確認します。デフォルトでは ".NET 6"が選択されています。
ドロップダウンリストボックスをクリックします。
ドロップダウンリストから".NET 7"の項目をクリックして選択します。
.NET 7に変更できました。
ターゲットフレームワークが変更できましたが、ウィンドウ上部に以下のエラーメッセージが表示されます。
エラーメッセージ
最後の操作中にプロジェクト '(プロジェクト名)' に問題が発生しました: 条件 "'$*TargetPlatformVersion)' < '10.0.18362.0'" で、数値ではなく "" と評価された
"$(TargetPlatformVersion)" に対して、数値比較を実行しようとしました。C:\Users\(ユーザー名)\.nuget\packages\microsoft.windowsappsdk\1.2.220902.1-preview1\buildTransitive\Microsoft.Interactive.InteractiveExperiences.Common.targets 問題を修正した後、ソリューションの再読み込みが必要になる場合があります。
ソリューションエクスプローラーでプロジェクトのノードを選択し右クリックします。ポップアップメニューの[プロジェクト ファイルの編集]の項目をクリックします。
下図のプロジェクトファイルのコードが表示されます。
PropertyGroupタグ内のTargetFrameworkの設定値が
net7.0
になっています。この状態ではエラーになってしまいます。
TargetFrameworkの設定値を
net7.0-windows10.0.19041.0
に変更します。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<RootNamespace>BlankAppNET7</RootNamespace>
<ApplicationManifest>app.manifest</ApplicationManifest>
<Platforms>x86;x64;arm64</Platforms>
<RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
<PublishProfile>win10-$(Platform).pubxml</PublishProfile>
<UseWinUI>true</UseWinUI>
<EnableMsixTooling>true</EnableMsixTooling>
<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>
<WindowsPackageType>None</WindowsPackageType>
</PropertyGroup>
<!-- 中略 -->
</Project>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net7.0-windows10.0.19041.0</TargetFramework>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<RootNamespace>BlankAppNET7</RootNamespace>
<ApplicationManifest>app.manifest</ApplicationManifest>
<Platforms>x86;x64;arm64</Platforms>
<RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
<PublishProfile>win10-$(Platform).pubxml</PublishProfile>
<UseWinUI>true</UseWinUI>
<EnableMsixTooling>true</EnableMsixTooling>
<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>
<WindowsPackageType>None</WindowsPackageType>
</PropertyGroup>
<!-- 中略 -->
</Project>
修正後ビルドを実行すると、ビルドが通りウィンドウ上部のエラーメッセージもなくなります。
.NETバージョンの確認
ビルド結果の実行ファイルの.NETのildasmでバージョンを確認します。
詳細な手順は
こちらの記事を参照してください。
ildasmで実行ファイルを確認すると、.ver の値が 7:0:0:0 になっており、.NET 7 でビルドされていることが確認できます。
TargetFrameworkAttribute の値にも
.NETCoreApp.Version=v7.0.
の文字列があり、.NET 7でビルドされたことが確認できます。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用