WinUI 3 アプリケーションを.NET 7 でビルドする - WinUI

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を愛用
最終更新日: 2022-11-21
作成日: 2022-11-21
iPentec all rights reserverd.