Skip to content

ASP.NET Core module installer should be improved further for Windows ARM64 #47115

Closed
@lextm

Description

@lextm

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,

  1. Install pure ARM64 build of the files to Program Files.
  2. 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,

  1. Install x86 build to Program Files (x86), which resolves x86 application pools.
  2. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-infrastructureIncludes: MSBuild projects/targets, build scripts, CI, Installers and shared frameworkenhancementThis issue represents an ask for new feature or an enhancement to an existing one

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions