Description
Is there an existing issue for this?
- I have searched the existing issues
Is your feature request related to a problem? Please describe the problem.
The current installer (.NET 7 for example) does the following on Windows 11 ARM64,
- Install pure ARM64 build of the files to
Program Files
. - Install pure ARM64 build of the files to
Program Files (x86)
.
So, if people try to create three application pools on IIS for ARM64, x64, and x86, they can only get things running in the ARM64 pool (enableEmulationOnWinArm64
set to false
and enable32BitAppOnWin64
set to false
). All other pools will crash.
Describe the solution you'd like
The changes should be made are,
- Install x86 build to
Program Files (x86)
, which resolves x86 application pools. - Compile pure forwarders
aspnetcorev2.dll
andaspnetcorev2_outofprocess.dll
and install them along with arm64/x64 bits toProgram Files
. This resolves both in-process and out-of-process modes for arm64/x64 application pools.
Note that an alternative way is to compile ARM64X builds of both
aspnetcorev2.dll
andaspnetcorev2_outofprocess.dll
and install toProgram Files
. However, it raised many challenges and needs further investigation.
This should allow all three kinds of application pools to run properly and maximize compatibility.
A all-in-one pull request is currently opened, #47290.
Note that #47124 is no longer needed.
Additional context
I tried to build ASP.NET Core module with a ARM64X profile, but found quite a few hurdles (changes to compiler settings, extra defines and missing files to include). I guess that's why this hasn't been finished in .NET 7 timeline.
Hope it can be done in .NET 8 to complete Windows ARM64 support.