rksoftware

Visual Studio とか C# とかが好きです

Maui の WinUI がデバッグできた

以前に Maui の WinUI がデバッグできない記事を書きました。

現在、できるようになっていたオデ書き残しておきます。

■ 環境

  • Visual Studio 2022 Preview 4.1
  • 6.0.100-rc.1.21463.6

■ ワークロードの更新

※必要かは分かりませんが

dotnet workload update

■ Visual Studio Extension の更新

※必要かは分かりませんが

  • .NET MAUI Project and Item Templates [Preview]

■ プロジェクトの作成

dotnet new maui

■ 出来上がったプロジェクト

f:id:rksoftware:20210929000238j:plain

ここで注目。なんと WinUI プロジェクトがなくなっています。
※以前のプロジェクト構成。

f:id:rksoftware:20210824232938j:plain

素晴らしいことに、一つのプロジェクトで WinUI も対応になったようです。

■ 実行

実行ターゲットを選択して実行してみます。

f:id:rksoftware:20210929000300j:plain

残念ながらエラーになりました。

f:id:rksoftware:20210929000319j:plain

There were deployment errors. Continue? (Yes/No)

Visual Studio の output ペインへの出力

Build started...
1>------ Build started: Project: MauiApp, Configuration: Debug Any CPU ------
1>You are using a preview version of .NET. See: https://aka.ms/dotnet-core-preview
1>MauiApp -> X:\XXXXX\bin\Debug\net6.0-android\MauiApp.dll
2>------ Deploy started: Project: MauiApp, Configuration: Debug Any CPU ------
2>Need recipe file
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
========== Deploy: 0 succeeded, 1 failed, 0 skipped ==========```

■ なんと .csproj ファイルを編集

なんと .csproj ファイルを編集しての切り替え式です。
こうなっているのを
f:id:rksoftware:20210929000426j:plain

こうします。
f:id:rksoftware:20210929000440j:plain

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <!-- <TargetFrameworks>net6.0-ios;net6.0-android;net6.0-maccatalyst</TargetFrameworks> -->
        <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows')) and '$(MSBuildRuntimeType)' == 'Full'">$(TargetFrameworks);net6.0-windows10.0.19041</TargetFrameworks>
        <OutputType>Exe</OutputType>
        <RootNamespace>MauiApp</RootNamespace>
        <UseMaui>true</UseMaui>
        <SingleProject>true</SingleProject>
        <EnablePreviewMsixTooling>true</EnablePreviewMsixTooling>

        <!-- Display name -->
        <ApplicationTitle>MauiApp</ApplicationTitle>

        <!-- App Identifier -->
        <ApplicationId>com.companyname.MauiApp</ApplicationId>

        <!-- Versions -->
        <ApplicationVersion>1.0</ApplicationVersion>
        <AndroidVersionCode>1</AndroidVersionCode>

        <!-- Required for C# Hot Reload -->
        <UseInterpreter Condition="'$(Configuration)' == 'Debug'">True</UseInterpreter>
    </PropertyGroup>

    <ItemGroup>
        <!-- App Icon -->
        <MauiImage Include="Resources\appicon.svg" ForegroundFile="Resources\appiconfg.svg" IsAppIcon="true" Color="#512BD4" />

        <!-- Splash Screen -->
        <MauiSplashScreen Include="Resources\appiconfg.svg" Color="#512BD4" />

        <!-- Images -->
        <MauiImage Include="Resources\Images\*" />

        <!-- Custom Fonts -->
        <MauiFont Include="Resources\Fonts\*" />
    </ItemGroup>

    <ItemGroup Condition="$(TargetFramework.Contains('-windows'))">
        <!-- Required - WinUI does not yet have buildTransitive for everything -->
        <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.0.0-experimental1" />
        <PackageReference Include="Microsoft.WindowsAppSDK.Foundation" Version="1.0.0-experimental1" />
        <PackageReference Include="Microsoft.WindowsAppSDK.WinUI" Version="1.0.0-experimental1" />
        <PackageReference Include="Microsoft.WindowsAppSDK.InteractiveExperiences" Version="1.0.0-experimental1" NoWarn="NU1701" />
    </ItemGroup>

    <PropertyGroup Condition="$(TargetFramework.Contains('-windows'))">
        <OutputType>WinExe</OutputType>
        <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    </PropertyGroup>

</Project>

■ 再度実行

なんと出ました。
f:id:rksoftware:20210929000739j:plain

■ 参考情報