WinUI3でSelfContained=trueでビルドすると出るエラー対処 その2

もくじ
https://tera1707.com/entry/2022/02/06/144447#WinUI3

WinUI3でSelfContained=trueでビルドすると出るエラー対処 その1
https://tera1707.com/entry/2022/03/19/000916

WinUI3でSelfContained=trueでビルドすると出るエラー対処 その2
https://tera1707.com/entry/2022/03/19/004221

WinUI3でSelfContained=trueでビルドすると出るエラー対処 その3
https://tera1707.com/entry/2022/03/19/010307

やりたいこと

前回の記事で、元々csprojに入っているのが<RuntimeIdentifier>ではなく<RuntimeIdentifiers>だったからエラーになってたというのを解決した。

ちょっと別の話になるが、
今回いろいろな都合で、「WinUI3のプロジェクト」と「それをパッケージするプロジェクト」の2つの構成だったのだが、 「WinUI3のプロジェクト」「.NET6/WPFのサブプロジェクト」と「それをパッケージするプロジェクト」の3つの構成にしたくなった。

これが

こうしたくなった

かつ、さらにいろいろな都合で、
メインのプロジェクト(ここではWinUI3PJTest)とサブのプロジェクト(ここではSubWpfPJ)がインストールされたときに同じフォルダに入ってほしい。

※普通はパッケージプロジェクトの参照に残りの2つを入れてパッケージに2つが含まれるようにするが、そうするとインストールされたときに、パッケージのメインのフォルダの下に「WinUI3PJTest」と「SubWpfPJ」というフォルダができて、その中に各exeができる。

それをかなえるために、サブのプロジェクトを、パッケージプロジェクトの参照ではなく、メインのプロジェクトの参照に入れることにした。(参照するものは同じフォルダに入るはずなので、こうすると同じフォルダにインストールしてくれるはずと思った)

起きたエラー

ということをすると、下記のようなエラーが起きた。

エラー    NETSDK1082  指定された RuntimeIdentifier 'win10-arm' で利用できる Microsoft.WindowsDesktop.App.WPF のランタイム パックがありませんでした。
エラー   NETSDK1082  指定された RuntimeIdentifier 'win10-arm-aot' で利用できる Microsoft.WindowsDesktop.App.WPF のランタイム パックがありませんでした。

前回の記事で、ターゲットはx64だけにしたはずで、armは外してるはずなのだが......

ここからが、全然どうしていいかわからなかった。
で、最終的には、下記のように書いて、ビルドはできるようになった。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
    <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
    <RootNamespace>WinUI3PJTest</RootNamespace>
    <ApplicationManifest>app.manifest</ApplicationManifest>
    <Platforms>x64</Platforms>
    <SelfContained>true</SelfContained>
    <RuntimeIdentifier>win10-x64</RuntimeIdentifier>    ★★←コレは前回書いた分
    <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>  ★★←今回コレを書いた
    <UseWinUI>true</UseWinUI>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.0.0" />
    <PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22000.194" />
    <Manifest Include="$(ApplicationManifest)" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\..\SubWpfPJ\SubWpfPJ.csproj" />
  </ItemGroup>
</Project>

ビルドはできた。(この段階ではまだエラーが残ってたのだが、後でそれを解消すると)動きもする。が、はっきり言ってこれでよいのかはわからない。
これをやってみたのも、何となく前回消した‘‘の中に、armとかx86とかいろいろ書かれてたな...とふと思ったから、といういい加減な理由から。msdocsから根拠になるものを探したい。

次回に続く。
(起きたエラーはまだある)

備考

「パッケージプロジェクトの参照に残りの2つを入れる」やり方だと、今回のようなエラーは起きなかった。