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!