I tried to run the PowerShell tool on Windows ARM64. I wasn't expecting to see the dependence on the Windows Desktop framework. I ran a 3.0 app to demonstrate that roll-forward works.
This is what I saw:
C:\git\testapps\versioninfo>set DOTNET_ROLL_FORWARD=LatestMajor
C:\git\testapps\versioninfo>bin\Debug\netcoreapp3.0\versioninfo.exe
**.NET Core info**
Version: 5.0.0
FrameworkDescription: .NET 5.0.0-preview.4.20227.9
CoreCLR Build: 5.0.0-preview.4.20227.9
CoreCLR Hash: 6d1f7e01d3429054ec3dcb7c75b3450b9fe1429e
CoreFX Build: 5.0.0-preview.4.20227.9
CoreFX Hash: 6d1f7e01d3429054ec3dcb7c75b3450b9fe1429e
**Environment info**
OSVersion: Microsoft Windows NT 10.0.16299.0
OSDescription: Microsoft Windows 10.0.16299
OSArchitecture: Arm64
ProcessorCount: 8
C:\git\testapps\versioninfo>pwsh
It was not possible to find any compatible framework version
The framework 'Microsoft.WindowsDesktop.App', version '3.1.0' was not found.
  - No frameworks were found.
You can resolve the problem by installing the specified framework and/or SDK.
The specified framework can be found at:
  - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.WindowsDesktop.App&framework_version=3.1.0&arch=arm64&rid=win10-arm64
                        Is this not an explicit dependency added by powershell to WindowsDesktop? What does the runtimeconfig.json look like?
pwsh.runtimeconfig.json
{
  "runtimeOptions": {
    "tfm": "netcoreapp3.1",
    "includedFrameworks": [
      {
        "name": "Microsoft.NETCore.App",
        "version": "3.1.2"
      },
      {
        "name": "Microsoft.WindowsDesktop.App",
        "version": "3.1.2"
      }
    ],
    "rollForwardOnNoCandidateFx": 2,
    "configProperties": {
      "System.Runtime.TieredCompilation": true,
      "System.Runtime.TieredCompilation.QuickJit": true,
      "System.Runtime.TieredCompilation.QuickJitForLoops": true
    }
  }
}
                    Oh, man! I did try to do my homework on this. I was looking at various config files in the PowerShell NuGet package, and someone missed the most important one. I agree, this is the correct behavior. Thanks!
Most helpful comment
Oh, man! I did try to do my homework on this. I was looking at various config files in the PowerShell NuGet package, and someone missed the most important one. I agree, this is the correct behavior. Thanks!