Is there an existing issue for this?
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 and aspnetcorev2_outofprocess.dll and install them along with arm64/x64 bits to Program 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 and aspnetcorev2_outofprocess.dll and install to Program 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.
Is there an existing issue for this?
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,
Program Files.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 (
enableEmulationOnWinArm64set tofalseandenable32BitAppOnWin64set tofalse). All other pools will crash.Describe the solution you'd like
The changes should be made are,
Program Files (x86), which resolves x86 application pools.aspnetcorev2.dllandaspnetcorev2_outofprocess.dlland install them along with arm64/x64 bits toProgram Files. This resolves both in-process and out-of-process modes for arm64/x64 application pools.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.
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.