Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revised ASP.NET Core module installer for Windows ARM64 #47290

Closed
wants to merge 4 commits into from

Conversation

lextm
Copy link

@lextm lextm commented Mar 18, 2023

Revised ASP.NET Core module installer for Windows ARM64

  • You've read the Contributor Guide and Code of Conduct.
  • You've included unit or integration tests for your change, where applicable.
  • You've included inline docs for your change, where applicable.
  • There's an open issue for the PR that you are making. If you'd like to propose a new feature or change, please open an issue to discuss the change or find an existing issue.
  • Switch to LoadLibraryEx with LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR flag set, so that the pure forwarder works as desired.
  • Add ARM64X pure forwarders.
  • Revise WiX installer to utilize ARM64X pure forwarders

Fixes #47115.

Description

About the change in HandlerResolver.cpp

To implement all proposed installer changes in #47115, then in the out-of-process folder three files present,

  1. aspnetcorev2_outofprocess.dll, an ARM64X pure forwarder.
  2. aspnetcorev2_outofprocess_arm64.dll, the pure ARM64 handler.
  3. aspnetcorev2_outofprocess_x64.dll, the x64 handler.

Before this change, LoadLibrary only loads the pure forwarder, but then scans the default folders (the dll folder is not included) to load the actual handler which obviously fails.

After this change, LoadLibraryEx can pick up the correct handler as the dll folder is added in the search folder list.

About files in Forwarders folder

Source code for the two ARM64X pure forwarders.

About changes in ANCMV2 folder

Before this change, only ARM64 web apps can run on IIS.

After this change, the new file structure enables ARM64/x64/x86 side by side execution on IIS.

@ghost ghost added the community-contribution Indicates that the PR has been added by a community member label Mar 18, 2023
@ghost
Copy link

ghost commented Mar 18, 2023

Thanks for your PR, @lextm. Someone from the team will get assigned to your PR shortly and we'll get it reviewed.

@lextm lextm changed the title Revised aspnetcorev2_outofprocess library loading for ARM64X pure forwarder Implemented revised ASP.NET Core module installer for Windows ARM64 Mar 19, 2023
@lextm lextm changed the title Implemented revised ASP.NET Core module installer for Windows ARM64 Revised ASP.NET Core module installer for Windows ARM64 Mar 19, 2023
@@ -309,6 +343,7 @@
</Row>
</CustomTable>

<!-- <?if $(var.Platform) = "x86" OR $(var.Platform) = "x64" ?> -->
Copy link
Author

@lextm lextm Mar 19, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For some unknown reason, this section has to be commented out if compiling on Windows 11 ARM64.

@wtgodbe wtgodbe self-assigned this Mar 20, 2023
@ghost ghost added the area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework label Mar 20, 2023
@wtgodbe wtgodbe self-requested a review March 20, 2023 16:22
@wtgodbe
Copy link
Member

wtgodbe commented Mar 20, 2023

Looks like we're hitting some errors in the new Forwarder project, are you seeing these locally?

The system cannot find the path specified.
'cl' is not recognized as an internal or external command,
operable program or batch file.
The system cannot find the path specified.
'cl' is not recognized as an internal or external command,
operable program or batch file.
The system cannot find the path specified.
A subdirectory or file D:\a_work\1\s\artifacts\obj\AspNetCoreModuleForwarders already exists.

@lextm
Copy link
Author

lextm commented Mar 20, 2023

I don't see the errors locally, but expected something like this. I will dig into the CI log files and see what further changes are needed.

@lextm lextm requested a review from a team as a code owner March 21, 2023 07:34
@lextm
Copy link
Author

lextm commented Mar 21, 2023

I was able to reproduce the cl errors by running .\eng\build.cmd -ci xxxx as it seems to set up the build environment differently from build.ps1 under src\Installers\Windows.

However, after applying the changes CI still failed and this time I am not familiar with the errors.

@wtgodbe
Copy link
Member

wtgodbe commented Mar 21, 2023

However, after applying the changes CI still failed and this time I am not familiar with the errors.

That looks like a transient error, I hit rerun.

To be transparent, we're still trying to figure out if we want to take this change. We think the number of customers who use ANCM/IIS on win-arm64 is relatively low, and we may not have the resources on our team to provide support for this new scenario. If you could share some info on how strong your need is for this feature, that would help us come to a decision.

@mkArtakMSFT
Copy link
Member

Closing as we don't plan to take this change at this time.

@amcasey amcasey added area-networking Includes servers, yarp, json patch, bedrock, websockets, http client factory, and http abstractions and removed area-runtime labels Jun 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework area-networking Includes servers, yarp, json patch, bedrock, websockets, http client factory, and http abstractions community-contribution Indicates that the PR has been added by a community member
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ASP.NET Core module installer should be improved further for Windows ARM64
4 participants