From c8c1700877900a939f06a5f3f07fd9073c371ae3 Mon Sep 17 00:00:00 2001
From: Hao Kung <HaoK@users.noreply.github.com>
Date: Fri, 7 Jan 2022 16:15:28 -0800
Subject: [PATCH] Build ARM64 in main windows build job (#38997)

---
 .azure/pipelines/ci.yml                       |  97 ++---
 AspNetCore.sln                                |  50 +--
 Directory.Build.props                         |   4 +-
 eng/Build.props                               |   3 +-
 eng/targets/Cpp.Common.props                  |   6 +
 eng/targets/Cpp.Common.targets                |   2 +-
 .../ANCMIISExpressV2/AncmIISExpressV2.wixproj |   2 +
 .../ANCMV2/AncmV2.wixproj                     |   1 +
 .../CustomAction/aspnetcoreCA.vcxproj         |   8 +
 .../IIS-Common/lib/IISSetup.CommonLib.vcxproj |   8 +
 .../IIS-Common/reftrace/reftrace.vcxproj      |   8 +
 .../IIS-Setup/iisca/lib/iisca.vcxproj         |  13 +
 .../IIS-Setup/include.wxi                     |   6 +
 .../AspNetCore/AspNetCore.vcxproj             |  29 +-
 .../CommonLib/CommonLib.vcxproj               |  16 +-
 .../CommonLibTests/CommonLibTests.vcxproj     |  66 +++
 .../AspNetCoreModuleV2/IISLib/IISLib.vcxproj  |  58 +--
 .../InProcessRequestHandler.vcxproj           |  16 +-
 .../OutOfProcessRequestHandler.vcxproj        |  16 +-
 .../RequestHandlerLib.vcxproj                 |  16 +-
 .../AspNetCoreModuleV2/gtest/gtest.vcxproj    |  16 +-
 .../Microsoft.AspNetCore.Server.IIS.csproj    |   1 +
 src/Servers/IIS/build/assets.props            | 396 +++++++++++-------
 .../IIS/tools/GenerateNativeAssets.ps1        |   4 +
 24 files changed, 508 insertions(+), 334 deletions(-)

diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml
index 29333ca2053..282c28d02ec 100644
--- a/.azure/pipelines/ci.yml
+++ b/.azure/pipelines/ci.yml
@@ -151,12 +151,12 @@ stages:
           publishOnError: true
           includeForks: true
 
-  # Build Windows (x64/x86)
+  # Build Windows (x64/x86/arm64)
   - template: jobs/default-build.yml
     parameters:
       codeSign: true
       jobName: Windows_build
-      jobDisplayName: "Build: Windows x64/x86"
+      jobDisplayName: "Build: Windows x64/x86/arm64"
       agentOs: Windows
       steps:
       - ${{ if notIn(variables['Build.Reason'], 'PullRequest') }}:
@@ -175,7 +175,7 @@ stages:
                 $(_BuildArgs)
                 $(_InternalRuntimeDownloadArgs)
                 $(Windows64LogArgs)
-        displayName: Build x64
+        displayName: Build x64/arm64
 
       # Build the x86 shared framework
       # This is going to actually build x86 native assets.
@@ -193,6 +193,21 @@ stages:
                 $(Windows86LogArgs)
         displayName: Build x86
 
+      # Build the arm64 shared framework
+      - script: ./eng/build.cmd
+                -ci
+                -arch arm64
+                -sign
+                -pack
+                -noBuildJava
+                -noBuildNative
+                /p:DotNetSignType=$(_SignType)
+                /p:OnlyPackPlatformSpecificPackages=true
+                $(_BuildArgs)
+                $(_InternalRuntimeDownloadArgs)
+                $(WindowsArm64LogArgs)
+        displayName: Build ARM64
+
       # Submit a manual build (in public or internal project) to validate changes to site extensions.
       - ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
         - script: .\src\SiteExtensions\build.cmd
@@ -236,6 +251,22 @@ stages:
                 $(WindowsInstallersLogArgs)
         displayName: Build Installers
 
+      # Windows installers bundle for arm64
+      - script: ./eng/build.cmd
+                -ci
+                -noBuildRepoTasks
+                -arch arm64
+                -sign
+                -buildInstallers
+                -noBuildNative
+                /p:DotNetSignType=$(_SignType)
+                /p:AssetManifestFileName=aspnetcore-win-arm64.xml
+                $(_BuildArgs)
+                $(_PublishArgs)
+                $(_InternalRuntimeDownloadArgs)
+                $(WindowsArm64InstallersLogArgs)
+        displayName: Build ARM64 Installers
+
       # A few files must also go to the VS package feed.
       - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), ne(variables.PostBuildSign, 'true')) }}:
         - task: NuGetCommand@2
@@ -300,66 +331,6 @@ stages:
           - name: Windows_arm_SourceIndex
             path: $(Build.ArtifactStagingDirectory)/sourceIndex/
 
-  # Build Windows ARM64
-  - template: jobs/default-build.yml
-    parameters:
-      codeSign: true
-      jobName: Windows_arm64_build
-      jobDisplayName: "Build: Windows ARM64"
-      agentOs: Windows
-      installNodeJs: false
-      installJdk: false
-      artifacts:
-      - name: Windows_arm64_Logs
-        path: artifacts/log/
-        publishOnError: true
-        includeForks: true
-      - name: Windows_arm64_Packages
-        path: artifacts/packages/
-      - name: Windows_arm64_Installers
-        path: artifacts/installers/
-      steps:
-      - script: ./eng/build.cmd
-                -ci
-                -arch arm64
-                -sign
-                -pack
-                -noBuildJava
-                -noBuildNative
-                /p:DotNetSignType=$(_SignType)
-                /p:OnlyPackPlatformSpecificPackages=true
-                $(_BuildArgs)
-                $(_InternalRuntimeDownloadArgs)
-                $(WindowsArm64LogArgs)
-        displayName: Build ARM64
-
-      # Windows installers bundle for arm64
-      - script: ./eng/build.cmd
-                -ci
-                -noBuildRepoTasks
-                -arch arm64
-                -sign
-                -buildInstallers
-                -noBuildNative
-                /p:DotNetSignType=$(_SignType)
-                /p:AssetManifestFileName=aspnetcore-win-arm64.xml
-                $(_BuildArgs)
-                $(_PublishArgs)
-                $(_InternalRuntimeDownloadArgs)
-                $(WindowsArm64InstallersLogArgs)
-        displayName: Build Arm64 Installers
-
-      # A few files must also go to the VS package feed.
-      - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), ne(variables.PostBuildSign, 'true')) }}:
-        - task: NuGetCommand@2
-          displayName: Push Visual Studio packages
-          inputs:
-            command: push
-            packagesToPush: 'artifacts/packages/**/VS.Redist.Common.AspNetCore.*.nupkg'
-            nuGetFeedType: external
-            publishFeedCredentials: 'DevDiv - VS package feed'
-
-
   # Build MacOS arm64
   - template: jobs/default-build.yml
     parameters:
diff --git a/AspNetCore.sln b/AspNetCore.sln
index e76752bf400..70e0049f7be 100644
--- a/AspNetCore.sln
+++ b/AspNetCore.sln
@@ -7518,15 +7518,15 @@ Global
 		{D07B2752-8919-4CFE-8438-DFAFE91A4AB0}.Release|x86.Build.0 = Release|x86
 		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Debug|Any CPU.ActiveCfg = Debug|x64
 		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Debug|Any CPU.Build.0 = Debug|x64
-		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Debug|arm64.ActiveCfg = Debug|Any CPU
-		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Debug|arm64.Build.0 = Debug|Any CPU
+		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Debug|arm64.ActiveCfg = Debug|ARM64
+		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Debug|arm64.Build.0 = Debug|ARM64
 		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Debug|x64.Build.0 = Debug|Any CPU
 		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Debug|x86.ActiveCfg = Debug|x86
 		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Debug|x86.Build.0 = Debug|x86
 		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Release|Any CPU.ActiveCfg = Release|x64
 		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Release|Any CPU.Build.0 = Release|x64
-		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Release|arm64.ActiveCfg = Release|x86
+		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Release|arm64.ActiveCfg = Release|ARM64
 		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Release|x64.ActiveCfg = Release|x64
 		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Release|x64.Build.0 = Release|x64
 		{65EC29AD-91CA-49BA-B1FC-D3DF127BE887}.Release|x86.ActiveCfg = Release|x86
@@ -8102,8 +8102,8 @@ Global
 		{8DA61885-B95E-4BA1-A752-C79B6597FC44}.Release|x86.Build.0 = Release|x86
 		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Debug|Any CPU.ActiveCfg = Debug|x64
 		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Debug|Any CPU.Build.0 = Debug|x64
-		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Debug|arm64.ActiveCfg = Debug|Any CPU
-		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Debug|arm64.Build.0 = Debug|Any CPU
+		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Debug|arm64.ActiveCfg = Debug|ARM64
+		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Debug|arm64.Build.0 = Debug|ARM64
 		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Debug|x64.ActiveCfg = Debug|x64
 		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Debug|x64.Build.0 = Debug|x64
 		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Debug|x86.ActiveCfg = Debug|Win32
@@ -8111,8 +8111,8 @@ Global
 		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Debug|x86.Deploy.0 = Debug|Win32
 		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Release|Any CPU.ActiveCfg = Release|x64
 		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Release|Any CPU.Build.0 = Release|x64
-		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Release|arm64.ActiveCfg = Release|Any CPU
-		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Release|arm64.Build.0 = Release|Any CPU
+		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Release|arm64.ActiveCfg = Release|ARM64
+		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Release|arm64.Build.0 = Release|ARM64
 		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Release|x64.ActiveCfg = Release|x64
 		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Release|x64.Build.0 = Release|x64
 		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Release|x86.ActiveCfg = Release|Win32
@@ -8120,8 +8120,8 @@ Global
 		{EC82302F-D2F0-4727-99D1-EABC0DD9DC3B}.Release|x86.Deploy.0 = Release|Win32
 		{55494E58-E061-4C4C-A0A8-837008E72F85}.Debug|Any CPU.ActiveCfg = Debug|x64
 		{55494E58-E061-4C4C-A0A8-837008E72F85}.Debug|Any CPU.Build.0 = Debug|x64
-		{55494E58-E061-4C4C-A0A8-837008E72F85}.Debug|arm64.ActiveCfg = Debug|Any CPU
-		{55494E58-E061-4C4C-A0A8-837008E72F85}.Debug|arm64.Build.0 = Debug|Any CPU
+		{55494E58-E061-4C4C-A0A8-837008E72F85}.Debug|arm64.ActiveCfg = Debug|ARM64
+		{55494E58-E061-4C4C-A0A8-837008E72F85}.Debug|arm64.Build.0 = Debug|ARM64
 		{55494E58-E061-4C4C-A0A8-837008E72F85}.Debug|x64.ActiveCfg = Debug|x64
 		{55494E58-E061-4C4C-A0A8-837008E72F85}.Debug|x64.Build.0 = Debug|x64
 		{55494E58-E061-4C4C-A0A8-837008E72F85}.Debug|x86.ActiveCfg = Debug|Win32
@@ -8138,8 +8138,8 @@ Global
 		{55494E58-E061-4C4C-A0A8-837008E72F85}.Release|x86.Deploy.0 = Release|Win32
 		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Debug|Any CPU.ActiveCfg = Debug|x64
 		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Debug|Any CPU.Build.0 = Debug|x64
-		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Debug|arm64.ActiveCfg = Debug|Any CPU
-		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Debug|arm64.Build.0 = Debug|Any CPU
+		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Debug|arm64.ActiveCfg = Debug|ARM64
+		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Debug|arm64.Build.0 = Debug|ARM64
 		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Debug|x64.ActiveCfg = Debug|x64
 		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Debug|x64.Build.0 = Debug|x64
 		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Debug|x86.ActiveCfg = Debug|Win32
@@ -8147,8 +8147,8 @@ Global
 		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Debug|x86.Deploy.0 = Debug|Win32
 		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Release|Any CPU.ActiveCfg = Release|x64
 		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Release|Any CPU.Build.0 = Release|x64
-		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Release|arm64.ActiveCfg = Release|Any CPU
-		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Release|arm64.Build.0 = Release|Any CPU
+		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Release|arm64.ActiveCfg = Release|ARM64
+		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Release|arm64.Build.0 = Release|ARM64
 		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Release|x64.ActiveCfg = Release|x64
 		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Release|x64.Build.0 = Release|x64
 		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Release|x86.ActiveCfg = Release|Win32
@@ -8156,8 +8156,8 @@ Global
 		{1EAC8125-1765-4E2D-8CBE-56DC98A1C8C1}.Release|x86.Deploy.0 = Release|Win32
 		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Debug|Any CPU.ActiveCfg = Debug|x64
 		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Debug|Any CPU.Build.0 = Debug|x64
-		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Debug|arm64.ActiveCfg = Debug|Any CPU
-		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Debug|arm64.Build.0 = Debug|Any CPU
+		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Debug|arm64.ActiveCfg = Debug|ARM64
+		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Debug|arm64.Build.0 = Debug|ARM64
 		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Debug|x64.ActiveCfg = Debug|x64
 		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Debug|x64.Build.0 = Debug|x64
 		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Debug|x86.ActiveCfg = Debug|Win32
@@ -8165,8 +8165,8 @@ Global
 		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Debug|x86.Deploy.0 = Debug|Win32
 		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Release|Any CPU.ActiveCfg = Release|x64
 		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Release|Any CPU.Build.0 = Release|x64
-		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Release|arm64.ActiveCfg = Release|Any CPU
-		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Release|arm64.Build.0 = Release|Any CPU
+		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Release|arm64.ActiveCfg = Release|ARM64
+		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Release|arm64.Build.0 = Release|ARM64
 		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Release|x64.ActiveCfg = Release|x64
 		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Release|x64.Build.0 = Release|x64
 		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Release|x86.ActiveCfg = Release|Win32
@@ -8174,8 +8174,8 @@ Global
 		{CAC1267B-8778-4257-AAC6-CAF481723B01}.Release|x86.Deploy.0 = Release|Win32
 		{09D9D1D6-2951-4E14-BC35-76A23CF9391A}.Debug|Any CPU.ActiveCfg = Debug|x64
 		{09D9D1D6-2951-4E14-BC35-76A23CF9391A}.Debug|Any CPU.Build.0 = Debug|x64
-		{09D9D1D6-2951-4E14-BC35-76A23CF9391A}.Debug|arm64.ActiveCfg = Debug|Any CPU
-		{09D9D1D6-2951-4E14-BC35-76A23CF9391A}.Debug|arm64.Build.0 = Debug|Any CPU
+		{09D9D1D6-2951-4E14-BC35-76A23CF9391A}.Debug|arm64.ActiveCfg = Debug|ARM64
+		{09D9D1D6-2951-4E14-BC35-76A23CF9391A}.Debug|arm64.Build.0 = Debug|ARM64
 		{09D9D1D6-2951-4E14-BC35-76A23CF9391A}.Debug|x64.ActiveCfg = Debug|x64
 		{09D9D1D6-2951-4E14-BC35-76A23CF9391A}.Debug|x64.Build.0 = Debug|x64
 		{09D9D1D6-2951-4E14-BC35-76A23CF9391A}.Debug|x86.ActiveCfg = Debug|Win32
@@ -8192,8 +8192,8 @@ Global
 		{09D9D1D6-2951-4E14-BC35-76A23CF9391A}.Release|x86.Deploy.0 = Release|Win32
 		{D57EA297-6DC2-4BC0-8C91-334863327863}.Debug|Any CPU.ActiveCfg = Debug|x64
 		{D57EA297-6DC2-4BC0-8C91-334863327863}.Debug|Any CPU.Build.0 = Debug|x64
-		{D57EA297-6DC2-4BC0-8C91-334863327863}.Debug|arm64.ActiveCfg = Debug|Any CPU
-		{D57EA297-6DC2-4BC0-8C91-334863327863}.Debug|arm64.Build.0 = Debug|Any CPU
+		{D57EA297-6DC2-4BC0-8C91-334863327863}.Debug|arm64.ActiveCfg = Debug|ARM64
+		{D57EA297-6DC2-4BC0-8C91-334863327863}.Debug|arm64.Build.0 = Debug|ARM64
 		{D57EA297-6DC2-4BC0-8C91-334863327863}.Debug|x64.ActiveCfg = Debug|x64
 		{D57EA297-6DC2-4BC0-8C91-334863327863}.Debug|x64.Build.0 = Debug|x64
 		{D57EA297-6DC2-4BC0-8C91-334863327863}.Debug|x86.ActiveCfg = Debug|Win32
@@ -8210,8 +8210,8 @@ Global
 		{D57EA297-6DC2-4BC0-8C91-334863327863}.Release|x86.Deploy.0 = Release|Win32
 		{7F87406C-A3C8-4139-A68D-E4C344294A67}.Debug|Any CPU.ActiveCfg = Debug|x64
 		{7F87406C-A3C8-4139-A68D-E4C344294A67}.Debug|Any CPU.Build.0 = Debug|x64
-		{7F87406C-A3C8-4139-A68D-E4C344294A67}.Debug|arm64.ActiveCfg = Debug|Any CPU
-		{7F87406C-A3C8-4139-A68D-E4C344294A67}.Debug|arm64.Build.0 = Debug|Any CPU
+		{7F87406C-A3C8-4139-A68D-E4C344294A67}.Debug|arm64.ActiveCfg = Debug|ARM64
+		{7F87406C-A3C8-4139-A68D-E4C344294A67}.Debug|arm64.Build.0 = Debug|ARM64
 		{7F87406C-A3C8-4139-A68D-E4C344294A67}.Debug|x64.ActiveCfg = Debug|x64
 		{7F87406C-A3C8-4139-A68D-E4C344294A67}.Debug|x64.Build.0 = Debug|x64
 		{7F87406C-A3C8-4139-A68D-E4C344294A67}.Debug|x86.ActiveCfg = Debug|Win32
@@ -8228,8 +8228,8 @@ Global
 		{7F87406C-A3C8-4139-A68D-E4C344294A67}.Release|x86.Deploy.0 = Release|Win32
 		{1533E271-F61B-441B-8B74-59FB61DF0552}.Debug|Any CPU.ActiveCfg = Debug|x64
 		{1533E271-F61B-441B-8B74-59FB61DF0552}.Debug|Any CPU.Build.0 = Debug|x64
-		{1533E271-F61B-441B-8B74-59FB61DF0552}.Debug|arm64.ActiveCfg = Debug|Any CPU
-		{1533E271-F61B-441B-8B74-59FB61DF0552}.Debug|arm64.Build.0 = Debug|Any CPU
+		{1533E271-F61B-441B-8B74-59FB61DF0552}.Debug|arm64.ActiveCfg = Debug|ARM64
+		{1533E271-F61B-441B-8B74-59FB61DF0552}.Debug|arm64.Build.0 = Debug|ARM64
 		{1533E271-F61B-441B-8B74-59FB61DF0552}.Debug|x64.ActiveCfg = Debug|x64
 		{1533E271-F61B-441B-8B74-59FB61DF0552}.Debug|x64.Build.0 = Debug|x64
 		{1533E271-F61B-441B-8B74-59FB61DF0552}.Debug|x86.ActiveCfg = Debug|Win32
diff --git a/Directory.Build.props b/Directory.Build.props
index e4139483ccc..e100d883e9b 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -224,8 +224,8 @@
     <!-- Projects which reference Microsoft.AspNetCore.Mvc.Testing should import this targets file to ensure dependency .deps.json files are copied into test output. -->
     <MvcTestingTargets>$(MSBuildThisFileDirectory)src\Mvc\Mvc.Testing\src\Microsoft.AspNetCore.Mvc.Testing.targets</MvcTestingTargets>
     <_MvcTestingTasksAssembly>$(ArtifactsBinDir)\Microsoft.AspNetCore.Mvc.Testing.Tasks\$(Configuration)\netstandard2.0\Microsoft.AspNetCore.Mvc.Testing.Tasks.dll</_MvcTestingTasksAssembly>
-    <!-- IIS native projects can only be built on Windows for x86 and x64. -->
-    <BuildIisNativeProjects Condition=" '$(TargetOsName)' == 'win' AND ('$(TargetArchitecture)' == 'x86' OR '$(TargetArchitecture)' == 'x64') ">true</BuildIisNativeProjects>
+    <!-- IIS native projects can only be built on Windows for x86/x64/ARM64. -->
+    <BuildIisNativeProjects Condition=" '$(TargetOsName)' == 'win' AND ('$(TargetArchitecture)' == 'x86' OR '$(TargetArchitecture)' == 'x64' OR '$(TargetArchitecture)' == 'ARM64') ">true</BuildIisNativeProjects>
     <!-- This property is shared by several projects to layout the AspNetCore.App targeting pack for installers -->
     <TargetingPackLayoutRoot>$(ArtifactsObjDir)TargetingPack.Layout\$(Configuration)\</TargetingPackLayoutRoot>
     <!-- This property is shared by several projects to layout the AspNetCore.App shared framework for installers -->
diff --git a/eng/Build.props b/eng/Build.props
index fd3736f50d0..0028cd04d12 100644
--- a/eng/Build.props
+++ b/eng/Build.props
@@ -105,8 +105,9 @@
       <ItemGroup Condition=" '$(TargetOsName)' == 'win' AND ('$(TargetArchitecture)' == 'x86' OR '$(TargetArchitecture)' == 'x64') ">
         <NativeProjects Include="$(RepoRoot)src\**\*.vcxproj" Exclude="@(ProjectToExclude)" AdditionalProperties="Platform=x64" />
         <NativeProjects Include="$(RepoRoot)src\**\*.vcxproj" Exclude="@(ProjectToExclude)" AdditionalProperties="Platform=Win32" />
+        <NativeProjects Include="$(RepoRoot)src\**\*.vcxproj" Exclude="@(ProjectToExclude)" AdditionalProperties="Platform=arm64" />
       </ItemGroup>
-
+      
       <ItemGroup>
         <ProjectToBuild Condition=" $(BuildNative) " Include="@(NativeProjects)" Exclude="@(ProjectToExclude)" />
         <ProjectToExclude Condition=" !$(BuildNative) " Include="@(NativeProjects)" />
diff --git a/eng/targets/Cpp.Common.props b/eng/targets/Cpp.Common.props
index 782441b4d41..b11c00f03ec 100644
--- a/eng/targets/Cpp.Common.props
+++ b/eng/targets/Cpp.Common.props
@@ -9,6 +9,12 @@
     <IntDir>$(IntermediateOutputPath)</IntDir>
   </PropertyGroup>
 
+  <!-- These test projects are skipped because you cannot test native ARM64 projects on a x86/x64 machine. -->
+  <PropertyGroup Condition=" '$(Platform)' == 'ARM64' AND '$(TargetArchitecture)' == 'x64' ">
+    <SkipNativeTest>true</SkipNativeTest>
+    <TestProjectSkipReason>You cannot test native ARM64 projects on a x86/x64 machine</TestProjectSkipReason>
+  </PropertyGroup>
+
   <Import Project="MicroBuild.Plugin.props" Condition="'$(MicroBuildSentinelFile)' == ''" />
   <Import Project="$(MicroBuildPluginDirectory)\MicroBuild.Plugins.*\**\build\MicroBuild.Plugins.*.props" Condition=" '$(MicroBuildPluginDirectory)' != ''" />
 
diff --git a/eng/targets/Cpp.Common.targets b/eng/targets/Cpp.Common.targets
index d352173de37..d85bddec43a 100644
--- a/eng/targets/Cpp.Common.targets
+++ b/eng/targets/Cpp.Common.targets
@@ -11,7 +11,7 @@
   <Target Name="Pack" />
   <Target Name="Restore" />
   <Target Name="ResolveNuGetPackageAssets" />
-  <Target Name="Test" Condition=" $(IsTestProject) " >
+  <Target Name="Test" Condition=" $(IsTestProject) AND '$(SkipNativeTest)' != 'true'" >
     <Warning Condition="'$(TestProjectSkipReason)' != ''" Text="Skipped $(MSBuildProjectFileName): $(TestProjectSkipReason)" />
     <Exec Condition="'$(TestProjectSkipReason)' == ''" Command="&quot;$(TargetPath)&quot;" />
   </Target>
diff --git a/src/Installers/Windows/AspNetCoreModule-Setup/ANCMIISExpressV2/AncmIISExpressV2.wixproj b/src/Installers/Windows/AspNetCoreModule-Setup/ANCMIISExpressV2/AncmIISExpressV2.wixproj
index 04f70e784cb..fc9de94854d 100644
--- a/src/Installers/Windows/AspNetCoreModule-Setup/ANCMIISExpressV2/AncmIISExpressV2.wixproj
+++ b/src/Installers/Windows/AspNetCoreModule-Setup/ANCMIISExpressV2/AncmIISExpressV2.wixproj
@@ -13,6 +13,7 @@
     <SchemaVersion>2.0</SchemaVersion>
     <TempPlatform Condition="'$(Platform)' == 'x64'">x64</TempPlatform>
     <TempPlatform Condition="'$(Platform)' == 'x86'">Win32</TempPlatform>
+    <TempPlatform Condition="'$(Platform)' == 'arm64'">ARM64</TempPlatform>
   </PropertyGroup>
 
   <ItemGroup>
@@ -47,6 +48,7 @@
     <ProjectReference Include="..\CustomAction\aspnetcoreCA.vcxproj">
       <Name>aspnetcoreCA</Name>
       <SetPlatform Condition="'$(Platform)' == 'x86'">Platform=Win32</SetPlatform>
+      <SetPlatform Condition="'$(Platform)' == 'arm64'">Platform=ARM64</SetPlatform>
       <Project>{7c27e72f-54d0-4820-8cfa-5e4be640974b}</Project>
       <Private>True</Private>
       <DoNotHarvest>True</DoNotHarvest>
diff --git a/src/Installers/Windows/AspNetCoreModule-Setup/ANCMV2/AncmV2.wixproj b/src/Installers/Windows/AspNetCoreModule-Setup/ANCMV2/AncmV2.wixproj
index ecc897c78b3..940e56befa8 100644
--- a/src/Installers/Windows/AspNetCoreModule-Setup/ANCMV2/AncmV2.wixproj
+++ b/src/Installers/Windows/AspNetCoreModule-Setup/ANCMV2/AncmV2.wixproj
@@ -45,6 +45,7 @@
     <ProjectReference Include="..\CustomAction\aspnetcoreCA.vcxproj">
       <Name>aspnetcoreCA</Name>
       <SetPlatform Condition="'$(Platform)' == 'x86'">Platform=Win32</SetPlatform>
+      <SetPlatform Condition="'$(Platform)' == 'arm64'">Platform=ARM64</SetPlatform>
       <Project>{7c27e72f-54d0-4820-8cfa-5e4be640974b}</Project>
       <Private>True</Private>
       <DoNotHarvest>True</DoNotHarvest>
diff --git a/src/Installers/Windows/AspNetCoreModule-Setup/CustomAction/aspnetcoreCA.vcxproj b/src/Installers/Windows/AspNetCoreModule-Setup/CustomAction/aspnetcoreCA.vcxproj
index 6fea1a5c0f8..db4d7035c81 100644
--- a/src/Installers/Windows/AspNetCoreModule-Setup/CustomAction/aspnetcoreCA.vcxproj
+++ b/src/Installers/Windows/AspNetCoreModule-Setup/CustomAction/aspnetcoreCA.vcxproj
@@ -15,6 +15,14 @@
   <!-- Build error if submodule dependencies could not be found. -->
   <Import Project="..\build\settings.props" />
   <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
       <Platform>Win32</Platform>
diff --git a/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/lib/IISSetup.CommonLib.vcxproj b/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/lib/IISSetup.CommonLib.vcxproj
index 08403fc70aa..1d0330550a8 100644
--- a/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/lib/IISSetup.CommonLib.vcxproj
+++ b/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/lib/IISSetup.CommonLib.vcxproj
@@ -4,6 +4,14 @@
   <Import Project="..\..\..\build\settings.props" />
 
   <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
       <Platform>Win32</Platform>
diff --git a/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/reftrace/reftrace.vcxproj b/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/reftrace/reftrace.vcxproj
index e15fd87b8c1..deb96eb3dfa 100644
--- a/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/reftrace/reftrace.vcxproj
+++ b/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/reftrace/reftrace.vcxproj
@@ -3,6 +3,14 @@
   <Import Project="..\..\..\build\submodule.props" />
   <Import Project="..\..\..\build\settings.props" />
   <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
       <Platform>Win32</Platform>
diff --git a/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/iisca/lib/iisca.vcxproj b/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/iisca/lib/iisca.vcxproj
index fa40ba03941..0b15cf6df93 100644
--- a/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/iisca/lib/iisca.vcxproj
+++ b/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/iisca/lib/iisca.vcxproj
@@ -3,6 +3,14 @@
   <Import Project="..\..\..\build\submodule.props" />
   <Import Project="..\..\..\build\settings.props" />
   <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
       <Platform>Win32</Platform>
@@ -116,6 +124,11 @@
       <TargetMachine>MachineX86</TargetMachine>
     </Link>
   </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='ARM64'">
+    <Link>
+      <AdditionalLibraryDirectories>$(VC_ReferencesPath_ARM64);$(WindowsSDK_LibraryPath)\$(PlatformTarget);$(WIX)sdk\$(WixPlatformToolset)\lib\arm64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Link>
+  </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
     <Link>
       <AdditionalLibraryDirectories>$(VC_ReferencesPath_x64);$(WindowsSDK_LibraryPath)\$(PlatformTarget);$(WIX)sdk\$(WixPlatformToolset)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
diff --git a/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/include.wxi b/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/include.wxi
index e22cdce8a41..c7ea5b9cbf1 100644
--- a/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/include.wxi
+++ b/src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/include.wxi
@@ -23,6 +23,12 @@
     <?define ProgramFilesFolder = ProgramFilesFolder ?>
     <?define SystemFolder = SystemFolder ?>
     <?define PlatformValue = Intel ?>
+  <?elseif $(var.Platform) ~= "arm64" ?>
+    <?define IsWin64 = yes ?>
+    <?define PlatformArchitecture = ARM64 ?>
+    <?define ProgramFilesFolder = ProgramFiles64Folder ?>
+    <?define SystemFolder = System64Folder ?>
+    <?define PlatformValue = "arm64" ?>
   <?endif?>
 
   <!-- Ensure build target properly initialized -->
diff --git a/src/Servers/IIS/AspNetCoreModuleV2/AspNetCore/AspNetCore.vcxproj b/src/Servers/IIS/AspNetCoreModuleV2/AspNetCore/AspNetCore.vcxproj
index e9ef91dd35e..542669fdaa9 100644
--- a/src/Servers/IIS/AspNetCoreModuleV2/AspNetCore/AspNetCore.vcxproj
+++ b/src/Servers/IIS/AspNetCoreModuleV2/AspNetCore/AspNetCore.vcxproj
@@ -9,6 +9,10 @@
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Debug|Any CPU">
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
@@ -21,6 +25,10 @@
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Release|Any CPU">
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
@@ -43,26 +51,13 @@
   <PropertyGroup Label="Configuration">
     <VCToolsVersion />
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32' OR '$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|ARM64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32' OR '$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|ARM64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
@@ -122,7 +117,7 @@
       <AdditionalIncludeDirectories>..\Commonlib</AdditionalIncludeDirectories>
     </ResourceCompile>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'  OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|ARM64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'">
     <ClCompile>
       <WarningLevel>Level4</WarningLevel>
       <Optimization>Disabled</Optimization>
@@ -198,7 +193,7 @@
       <AdditionalIncludeDirectories>..\Commonlib</AdditionalIncludeDirectories>
     </ResourceCompile>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|ARM64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'">
     <ClCompile>
       <WarningLevel>Level4</WarningLevel>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
diff --git a/src/Servers/IIS/AspNetCoreModuleV2/CommonLib/CommonLib.vcxproj b/src/Servers/IIS/AspNetCoreModuleV2/CommonLib/CommonLib.vcxproj
index b1a01e21720..91481db732c 100644
--- a/src/Servers/IIS/AspNetCoreModuleV2/CommonLib/CommonLib.vcxproj
+++ b/src/Servers/IIS/AspNetCoreModuleV2/CommonLib/CommonLib.vcxproj
@@ -9,6 +9,10 @@
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Debug|Any CPU">
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
@@ -21,6 +25,10 @@
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Release|Any CPU">
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
@@ -53,13 +61,13 @@
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|ARM64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|ARM64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
@@ -105,7 +113,7 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
     </Link>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|ARM64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'">
     <ClCompile>
       <PrecompiledHeader>Use</PrecompiledHeader>
       <WarningLevel>Level4</WarningLevel>
@@ -158,7 +166,7 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
     </Link>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|ARM64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'">
     <ClCompile>
       <PrecompiledHeader>Use</PrecompiledHeader>
       <WarningLevel>Level4</WarningLevel>
diff --git a/src/Servers/IIS/AspNetCoreModuleV2/CommonLibTests/CommonLibTests.vcxproj b/src/Servers/IIS/AspNetCoreModuleV2/CommonLibTests/CommonLibTests.vcxproj
index 4542c713334..dc0fcfef07e 100644
--- a/src/Servers/IIS/AspNetCoreModuleV2/CommonLibTests/CommonLibTests.vcxproj
+++ b/src/Servers/IIS/AspNetCoreModuleV2/CommonLibTests/CommonLibTests.vcxproj
@@ -11,6 +11,10 @@
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Debug|Any CPU">
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
@@ -23,6 +27,10 @@
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Release|Any CPU">
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
@@ -155,6 +163,34 @@
       </AdditionalDependencies>
     </Lib>
   </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>X64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>
+      <PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)include;%(AdditionalIncludeDirectories);..\RequestHandlerLib;..\IISLib;..\CommonLib;$(GoogleTestSubmoduleRoot)googletest\include;$(GoogleTestSubmoduleRoot)googlemock\include;...\AspNetCore\Inc;..\InProcessRequestHandler\</AdditionalIncludeDirectories>
+      <AdditionalOptions>/D "_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING" </AdditionalOptions>
+      <LanguageStandard>stdcpp17</LanguageStandard>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <AdditionalLibraryDirectories>$(ArtifactsObjDir)InProcessRequestHandler\ARM64\$(Configuration)\;</AdditionalLibraryDirectories>
+      <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;inprocessapplication.obj;inprocesshandler.obj;ahadmin.lib;Rpcrt4.lib;inprocessapplicationbase.obj;stdafx.obj;version.lib;inprocessoptions.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+    </Link>
+    <Lib>
+      <AdditionalDependencies>
+      </AdditionalDependencies>
+    </Lib>
+  </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
@@ -215,4 +251,34 @@
       </AdditionalDependencies>
     </Lib>
   </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <PreprocessorDefinitions>X64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>
+      <PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)include;%(AdditionalIncludeDirectories);..\RequestHandlerLib;..\IISLib;..\CommonLib;$(GoogleTestSubmoduleRoot)googletest\include;$(GoogleTestSubmoduleRoot)googlemock\include;...\AspNetCore\Inc;..\InProcessRequestHandler\</AdditionalIncludeDirectories>
+      <AdditionalOptions>/D "_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING" </AdditionalOptions>
+      <LanguageStandard>stdcpp17</LanguageStandard>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <AdditionalOptions>/NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib %(AdditionalOptions)</AdditionalOptions>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <AdditionalLibraryDirectories>$(ArtifactsObjDir)InProcessRequestHandler\ARM64\$(Configuration)\;</AdditionalLibraryDirectories>
+      <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;inprocessapplication.obj;inprocesshandler.obj;ahadmin.lib;Rpcrt4.lib;inprocessapplicationbase.obj;stdafx.obj;version.lib;inprocessoptions.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+    </Link>
+    <Lib>
+      <AdditionalDependencies>
+      </AdditionalDependencies>
+    </Lib>
+  </ItemDefinitionGroup>
 </Project>
diff --git a/src/Servers/IIS/AspNetCoreModuleV2/IISLib/IISLib.vcxproj b/src/Servers/IIS/AspNetCoreModuleV2/IISLib/IISLib.vcxproj
index 4afa15048c7..dfcdd0497b0 100644
--- a/src/Servers/IIS/AspNetCoreModuleV2/IISLib/IISLib.vcxproj
+++ b/src/Servers/IIS/AspNetCoreModuleV2/IISLib/IISLib.vcxproj
@@ -9,6 +9,10 @@
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Debug|Any CPU">
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
@@ -21,6 +25,10 @@
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Release|Any CPU">
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
@@ -46,7 +54,7 @@
     <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|ARM64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
@@ -59,7 +67,7 @@
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|ARM64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
@@ -73,26 +81,7 @@
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   </ImportGroup>
   <PropertyGroup Label="UserMacros" />
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <SDLCheck>true</SDLCheck>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <ShowIncludes>false</ShowIncludes>
-      <TreatWarningAsError>true</TreatWarningAsError>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32' OR'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|ARM64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'">
     <ClCompile>
       <PrecompiledHeader>
       </PrecompiledHeader>
@@ -111,30 +100,7 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
     </Link>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <SDLCheck>true</SDLCheck>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <ShowIncludes>false</ShowIncludes>
-      <TreatWarningAsError>true</TreatWarningAsError>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <AdditionalOptions>/NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib %(AdditionalOptions)</AdditionalOptions>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32' OR '$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|ARM64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'">
     <ClCompile>
       <WarningLevel>Level3</WarningLevel>
       <PrecompiledHeader>
diff --git a/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/InProcessRequestHandler.vcxproj b/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/InProcessRequestHandler.vcxproj
index b07df421f80..582c48ad9dd 100644
--- a/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/InProcessRequestHandler.vcxproj
+++ b/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/InProcessRequestHandler.vcxproj
@@ -10,6 +10,10 @@
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Debug|Any CPU">
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
@@ -22,6 +26,10 @@
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Release|Any CPU">
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
@@ -55,13 +63,13 @@
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|ARM64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|ARM64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
@@ -117,7 +125,7 @@
       <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
     </Link>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|ARM64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'">
     <ClCompile>
       <PrecompiledHeader>Use</PrecompiledHeader>
       <WarningLevel>Level4</WarningLevel>
@@ -188,7 +196,7 @@
       <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
     </Link>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|ARM64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'">
     <ClCompile>
       <WarningLevel>Level4</WarningLevel>
       <PrecompiledHeader>Use</PrecompiledHeader>
diff --git a/src/Servers/IIS/AspNetCoreModuleV2/OutOfProcessRequestHandler/OutOfProcessRequestHandler.vcxproj b/src/Servers/IIS/AspNetCoreModuleV2/OutOfProcessRequestHandler/OutOfProcessRequestHandler.vcxproj
index 23d655bf959..6852e319039 100644
--- a/src/Servers/IIS/AspNetCoreModuleV2/OutOfProcessRequestHandler/OutOfProcessRequestHandler.vcxproj
+++ b/src/Servers/IIS/AspNetCoreModuleV2/OutOfProcessRequestHandler/OutOfProcessRequestHandler.vcxproj
@@ -10,6 +10,10 @@
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Debug|Any CPU">
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
@@ -22,6 +26,10 @@
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Release|Any CPU">
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
@@ -55,13 +63,13 @@
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|ARM64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|ARM64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
@@ -117,7 +125,7 @@
       <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
     </Link>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|ARM64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'">
     <ClCompile>
       <PrecompiledHeader>Use</PrecompiledHeader>
       <WarningLevel>Level4</WarningLevel>
@@ -188,7 +196,7 @@
       <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
     </Link>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|ARM64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'">
     <ClCompile>
       <WarningLevel>Level4</WarningLevel>
       <PrecompiledHeader>Use</PrecompiledHeader>
diff --git a/src/Servers/IIS/AspNetCoreModuleV2/RequestHandlerLib/RequestHandlerLib.vcxproj b/src/Servers/IIS/AspNetCoreModuleV2/RequestHandlerLib/RequestHandlerLib.vcxproj
index 8168f9e547b..da17021d66d 100644
--- a/src/Servers/IIS/AspNetCoreModuleV2/RequestHandlerLib/RequestHandlerLib.vcxproj
+++ b/src/Servers/IIS/AspNetCoreModuleV2/RequestHandlerLib/RequestHandlerLib.vcxproj
@@ -9,6 +9,10 @@
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Debug|Any CPU">
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
@@ -21,6 +25,10 @@
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Release|Any CPU">
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
@@ -53,13 +61,13 @@
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|ARM64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|ARM64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
@@ -104,7 +112,7 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
     </Link>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|ARM64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'">
     <ClCompile>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
       <WarningLevel>Level4</WarningLevel>
@@ -155,7 +163,7 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
     </Link>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|ARM64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'">
     <ClCompile>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
       <WarningLevel>Level4</WarningLevel>
diff --git a/src/Servers/IIS/AspNetCoreModuleV2/gtest/gtest.vcxproj b/src/Servers/IIS/AspNetCoreModuleV2/gtest/gtest.vcxproj
index 016d4f6c4c5..10a02840f31 100644
--- a/src/Servers/IIS/AspNetCoreModuleV2/gtest/gtest.vcxproj
+++ b/src/Servers/IIS/AspNetCoreModuleV2/gtest/gtest.vcxproj
@@ -8,6 +8,10 @@
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Debug|Any CPU">
       <Configuration>Debug</Configuration>
       <Platform>x64</Platform>
@@ -20,6 +24,10 @@
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Release|Any CPU">
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
@@ -58,14 +66,14 @@
     <CharacterSet>Unicode</CharacterSet>
     <TargetName>gtest</TargetName>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|ARM64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
     <TargetName>gtestd</TargetName>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|ARM64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <PlatformToolset>$(PlatformToolsetVersion)</PlatformToolset>
@@ -110,7 +118,7 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
     </Link>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64' OR '$(Configuration)|$(Platform)'=='Debug|ARM64' OR '$(Configuration)|$(Platform)'=='Debug|Any CPU'">
     <ClCompile>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
@@ -149,7 +157,7 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
     </Link>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64' OR '$(Configuration)|$(Platform)'=='Release|ARM64' OR '$(Configuration)|$(Platform)'=='Release|Any CPU'">
     <ClCompile>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
diff --git a/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj b/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj
index b575db4f9f1..c4eb83186d5 100644
--- a/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj
+++ b/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj
@@ -36,6 +36,7 @@
   <ItemGroup Condition=" '$(BuildIisNativeProjects)' == 'true' ">
     <NativeProjectReference Include="$(MSBuildThisFileDirectory)..\..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" Platform="x64" />
     <NativeProjectReference Include="$(MSBuildThisFileDirectory)..\..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" Platform="Win32" />
+    <NativeProjectReference Include="$(MSBuildThisFileDirectory)..\..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" Platform="ARM64" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/src/Servers/IIS/build/assets.props b/src/Servers/IIS/build/assets.props
index 950a773257e..0b42276a120 100644
--- a/src/Servers/IIS/build/assets.props
+++ b/src/Servers/IIS/build/assets.props
@@ -11,217 +11,295 @@
     </PropertyGroup>
     <ItemGroup>
        <Components
-          Platform="x64"
-          VCPlatform="x64"
-          BaseOutputPath="AspNetCoreModuleV2"
-          NativeAsset="aspnetcorev2"
-          ProjectName="AspNetCore.vcxproj"
-          PropetyName="AspNetCoreModuleV2Shim"
-          OutDirName="AspNetCoreModuleShim"
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore"
-          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj"
-          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\x64\$(Configuration)\aspnetcorev2.dll"
+          VCPlatform="x64" 
+          Platform="x64" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore" 
+          ProjectName="AspNetCore.vcxproj" 
+          PropetyName="AspNetCoreModuleV2Shim" 
+          NativeAsset="aspnetcorev2" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="AspNetCoreModuleShim" 
+          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\x64\$(Configuration)\aspnetcorev2.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj" 
           PdbLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\x64\$(Configuration)\aspnetcorev2.pdb"
         />
         <Components
-          Platform="x86"
-          VCPlatform="Win32"
-          BaseOutputPath="AspNetCoreModuleV2"
-          NativeAsset="aspnetcorev2"
-          ProjectName="AspNetCore.vcxproj"
-          PropetyName="AspNetCoreModuleV2Shim"
-          OutDirName="AspNetCoreModuleShim"
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore"
-          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj"
-          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\Win32\$(Configuration)\aspnetcorev2.dll"
+          VCPlatform="ARM64" 
+          Platform="ARM64" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore" 
+          ProjectName="AspNetCore.vcxproj" 
+          PropetyName="AspNetCoreModuleV2Shim" 
+          NativeAsset="aspnetcorev2" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="AspNetCoreModuleShim" 
+          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\ARM64\$(Configuration)\aspnetcorev2.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj" 
+          PdbLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\ARM64\$(Configuration)\aspnetcorev2.pdb"
+        />
+        <Components
+          VCPlatform="Win32" 
+          Platform="x86" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore" 
+          ProjectName="AspNetCore.vcxproj" 
+          PropetyName="AspNetCoreModuleV2Shim" 
+          NativeAsset="aspnetcorev2" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="AspNetCoreModuleShim" 
+          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\Win32\$(Configuration)\aspnetcorev2.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj" 
           PdbLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\Win32\$(Configuration)\aspnetcorev2.pdb"
         />
         <Components
-          Platform="x64"
-          VCPlatform="x64"
-          BaseOutputPath="AspNetCoreModuleV2"
-          NativeAsset="aspnetcorev2_inprocess"
-          ProjectName="InProcessRequestHandler.vcxproj"
-          PropetyName="AspNetCoreModuleV2InProcessHandler"
-          OutDirName="InProcessRequestHandler"
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler"
-          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj"
-          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_inprocess.dll"
+          VCPlatform="x64" 
+          Platform="x64" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler" 
+          ProjectName="InProcessRequestHandler.vcxproj" 
+          PropetyName="AspNetCoreModuleV2InProcessHandler" 
+          NativeAsset="aspnetcorev2_inprocess" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="InProcessRequestHandler" 
+          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_inprocess.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" 
           PdbLocation="$(ArtifactsBinDir)InProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_inprocess.pdb"
         />
         <Components
-          Platform="x86"
-          VCPlatform="Win32"
-          BaseOutputPath="AspNetCoreModuleV2"
-          NativeAsset="aspnetcorev2_inprocess"
-          ProjectName="InProcessRequestHandler.vcxproj"
-          PropetyName="AspNetCoreModuleV2InProcessHandler"
-          OutDirName="InProcessRequestHandler"
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler"
-          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj"
-          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_inprocess.dll"
+          VCPlatform="ARM64" 
+          Platform="ARM64" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler" 
+          ProjectName="InProcessRequestHandler.vcxproj" 
+          PropetyName="AspNetCoreModuleV2InProcessHandler" 
+          NativeAsset="aspnetcorev2_inprocess" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="InProcessRequestHandler" 
+          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\ARM64\$(Configuration)\aspnetcorev2_inprocess.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" 
+          PdbLocation="$(ArtifactsBinDir)InProcessRequestHandler\ARM64\$(Configuration)\aspnetcorev2_inprocess.pdb"
+        />
+        <Components
+          VCPlatform="Win32" 
+          Platform="x86" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler" 
+          ProjectName="InProcessRequestHandler.vcxproj" 
+          PropetyName="AspNetCoreModuleV2InProcessHandler" 
+          NativeAsset="aspnetcorev2_inprocess" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="InProcessRequestHandler" 
+          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_inprocess.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" 
           PdbLocation="$(ArtifactsBinDir)InProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_inprocess.pdb"
         />
         <Components
-          Platform="x64"
-          VCPlatform="x64"
-          BaseOutputPath="AspNetCoreModuleV2"
-          NativeAsset="aspnetcorev2_outofprocess"
-          ProjectName="OutOfProcessRequestHandler.vcxproj"
-          PropetyName="AspNetCoreModuleV2OutOfProcessHandler"
-          OutDirName="OutOfProcessRequestHandler"
-          PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\"
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler"
-          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj"
-          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_outofprocess.dll"
+          VCPlatform="x64" 
+          Platform="x64" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
+          ProjectName="OutOfProcessRequestHandler.vcxproj" 
+          PropetyName="AspNetCoreModuleV2OutOfProcessHandler" 
+          NativeAsset="aspnetcorev2_outofprocess" 
+          PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="OutOfProcessRequestHandler" 
+          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_outofprocess.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj" 
           PdbLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_outofprocess.pdb"
         />
         <Components
-          Platform="x86"
-          VCPlatform="Win32"
-          BaseOutputPath="AspNetCoreModuleV2"
-          NativeAsset="aspnetcorev2_outofprocess"
-          ProjectName="OutOfProcessRequestHandler.vcxproj"
-          PropetyName="AspNetCoreModuleV2OutOfProcessHandler"
-          OutDirName="OutOfProcessRequestHandler"
-          PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\"
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler"
-          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj"
-          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_outofprocess.dll"
+          VCPlatform="ARM64" 
+          Platform="ARM64" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
+          ProjectName="OutOfProcessRequestHandler.vcxproj" 
+          PropetyName="AspNetCoreModuleV2OutOfProcessHandler" 
+          NativeAsset="aspnetcorev2_outofprocess" 
+          PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="OutOfProcessRequestHandler" 
+          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\ARM64\$(Configuration)\aspnetcorev2_outofprocess.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj" 
+          PdbLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\ARM64\$(Configuration)\aspnetcorev2_outofprocess.pdb"
+        />
+        <Components
+          VCPlatform="Win32" 
+          Platform="x86" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
+          ProjectName="OutOfProcessRequestHandler.vcxproj" 
+          PropetyName="AspNetCoreModuleV2OutOfProcessHandler" 
+          NativeAsset="aspnetcorev2_outofprocess" 
+          PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="OutOfProcessRequestHandler" 
+          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_outofprocess.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj" 
           PdbLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_outofprocess.pdb"
         />
 
        <ShimComponents
-          Platform="x64"
-          VCPlatform="x64"
-          BaseOutputPath="AspNetCoreModuleV2"
-          NativeAsset="aspnetcorev2"
-          ProjectName="AspNetCore.vcxproj"
-          PropetyName="AspNetCoreModuleV2Shim"
-          OutDirName="AspNetCoreModuleShim"
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore"
-          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj"
-          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\x64\$(Configuration)\aspnetcorev2.dll"
+          VCPlatform="x64" 
+          Platform="x64" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore" 
+          ProjectName="AspNetCore.vcxproj" 
+          PropetyName="AspNetCoreModuleV2Shim" 
+          NativeAsset="aspnetcorev2" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="AspNetCoreModuleShim" 
+          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\x64\$(Configuration)\aspnetcorev2.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj" 
           PdbLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\x64\$(Configuration)\aspnetcorev2.pdb"
         />
         <ShimComponents
-          Platform="x86"
-          VCPlatform="Win32"
-          BaseOutputPath="AspNetCoreModuleV2"
-          NativeAsset="aspnetcorev2"
-          ProjectName="AspNetCore.vcxproj"
-          PropetyName="AspNetCoreModuleV2Shim"
-          OutDirName="AspNetCoreModuleShim"
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore"
-          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj"
-          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\Win32\$(Configuration)\aspnetcorev2.dll"
+          VCPlatform="ARM64" 
+          Platform="ARM64" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore" 
+          ProjectName="AspNetCore.vcxproj" 
+          PropetyName="AspNetCoreModuleV2Shim" 
+          NativeAsset="aspnetcorev2" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="AspNetCoreModuleShim" 
+          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\ARM64\$(Configuration)\aspnetcorev2.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj" 
+          PdbLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\ARM64\$(Configuration)\aspnetcorev2.pdb"
+        />
+        <ShimComponents
+          VCPlatform="Win32" 
+          Platform="x86" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore" 
+          ProjectName="AspNetCore.vcxproj" 
+          PropetyName="AspNetCoreModuleV2Shim" 
+          NativeAsset="aspnetcorev2" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="AspNetCoreModuleShim" 
+          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\Win32\$(Configuration)\aspnetcorev2.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj" 
           PdbLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\Win32\$(Configuration)\aspnetcorev2.pdb"
         />
         <ShimComponents
-          Platform="x64"
-          VCPlatform="x64"
-          BaseOutputPath="AspNetCoreModuleV2"
-          NativeAsset="aspnetcorev2_outofprocess"
-          ProjectName="OutOfProcessRequestHandler.vcxproj"
-          PropetyName="AspNetCoreModuleV2OutOfProcessHandler"
-          OutDirName="OutOfProcessRequestHandler"
-          TempSubfolder="2.0.0/"
-          PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\"
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler"
-          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj"
-          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_outofprocess.dll"
+          VCPlatform="x64" 
+          Platform="x64" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
+          ProjectName="OutOfProcessRequestHandler.vcxproj" 
+          PropetyName="AspNetCoreModuleV2OutOfProcessHandler" 
+          NativeAsset="aspnetcorev2_outofprocess" 
+          PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="OutOfProcessRequestHandler" 
+          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_outofprocess.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj" 
           PdbLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_outofprocess.pdb"
         />
         <ShimComponents
-          Platform="x86"
-          VCPlatform="Win32"
-          BaseOutputPath="AspNetCoreModuleV2"
-          NativeAsset="aspnetcorev2_outofprocess"
-          ProjectName="OutOfProcessRequestHandler.vcxproj"
-          PropetyName="AspNetCoreModuleV2OutOfProcessHandler"
-          OutDirName="OutOfProcessRequestHandler"
-          TempSubfolder="2.0.0/"
-          PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\"
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler"
-          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj"
-          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_outofprocess.dll"
+          VCPlatform="ARM64" 
+          Platform="ARM64" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
+          ProjectName="OutOfProcessRequestHandler.vcxproj" 
+          PropetyName="AspNetCoreModuleV2OutOfProcessHandler" 
+          NativeAsset="aspnetcorev2_outofprocess" 
+          PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="OutOfProcessRequestHandler" 
+          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\ARM64\$(Configuration)\aspnetcorev2_outofprocess.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj" 
+          PdbLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\ARM64\$(Configuration)\aspnetcorev2_outofprocess.pdb"
+        />
+        <ShimComponents
+          VCPlatform="Win32" 
+          Platform="x86" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
+          ProjectName="OutOfProcessRequestHandler.vcxproj" 
+          PropetyName="AspNetCoreModuleV2OutOfProcessHandler" 
+          NativeAsset="aspnetcorev2_outofprocess" 
+          PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="OutOfProcessRequestHandler" 
+          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_outofprocess.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj" 
           PdbLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_outofprocess.pdb"
         />
 
        <InProcessComponents
-          Platform="x64"
-          VCPlatform="x64"
-          BaseOutputPath="AspNetCoreModuleV2"
-          NativeAsset="aspnetcorev2_inprocess"
-          ProjectName="InProcessRequestHandler.vcxproj"
-          PropetyName="AspNetCoreModuleV2InProcessHandler"
-          OutDirName="InProcessRequestHandler"
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler"
-          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj"
-          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_inprocess.dll"
+          VCPlatform="x64" 
+          Platform="x64" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler" 
+          ProjectName="InProcessRequestHandler.vcxproj" 
+          PropetyName="AspNetCoreModuleV2InProcessHandler" 
+          NativeAsset="aspnetcorev2_inprocess" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="InProcessRequestHandler" 
+          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_inprocess.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" 
           PdbLocation="$(ArtifactsBinDir)InProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_inprocess.pdb"
         />
         <InProcessComponents
-          Platform="x86"
-          VCPlatform="Win32"
-          BaseOutputPath="AspNetCoreModuleV2"
-          NativeAsset="aspnetcorev2_inprocess"
-          ProjectName="InProcessRequestHandler.vcxproj"
-          PropetyName="AspNetCoreModuleV2InProcessHandler"
-          OutDirName="InProcessRequestHandler"
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler"
-          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj"
-          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_inprocess.dll"
+          VCPlatform="ARM64" 
+          Platform="ARM64" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler" 
+          ProjectName="InProcessRequestHandler.vcxproj" 
+          PropetyName="AspNetCoreModuleV2InProcessHandler" 
+          NativeAsset="aspnetcorev2_inprocess" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="InProcessRequestHandler" 
+          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\ARM64\$(Configuration)\aspnetcorev2_inprocess.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" 
+          PdbLocation="$(ArtifactsBinDir)InProcessRequestHandler\ARM64\$(Configuration)\aspnetcorev2_inprocess.pdb"
+        />
+        <InProcessComponents
+          VCPlatform="Win32" 
+          Platform="x86" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler" 
+          ProjectName="InProcessRequestHandler.vcxproj" 
+          PropetyName="AspNetCoreModuleV2InProcessHandler" 
+          NativeAsset="aspnetcorev2_inprocess" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="InProcessRequestHandler" 
+          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_inprocess.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" 
           PdbLocation="$(ArtifactsBinDir)InProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_inprocess.pdb"
         />
 
        <RunShimComponents
-          Platform="$(NativePlatform)"
-          VCPlatform="$(NativeVCPlatform)"
-          BaseOutputPath="AspNetCoreModuleV2"
-          NativeAsset="aspnetcorev2"
-          ProjectName="AspNetCore.vcxproj"
-          PropetyName="AspNetCoreModuleV2Shim"
-          OutDirName="AspNetCoreModuleShim"
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore"
-          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj"
-          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2.dll"
+          VCPlatform="$(NativeVCPlatform)" 
+          Platform="$(NativePlatform)" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore" 
+          ProjectName="AspNetCore.vcxproj" 
+          PropetyName="AspNetCoreModuleV2Shim" 
+          NativeAsset="aspnetcorev2" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="AspNetCoreModuleShim" 
+          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj" 
           PdbLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2.pdb"
         />
         <RunShimComponents
-          Platform="$(NativePlatform)"
-          VCPlatform="$(NativeVCPlatform)"
-          BaseOutputPath="AspNetCoreModuleV2"
-          NativeAsset="aspnetcorev2_outofprocess"
-          ProjectName="OutOfProcessRequestHandler.vcxproj"
-          PropetyName="AspNetCoreModuleV2OutOfProcessHandler"
-          OutDirName="OutOfProcessRequestHandler"
-          PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\"
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler"
-          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj"
-          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2_outofprocess.dll"
+          VCPlatform="$(NativeVCPlatform)" 
+          Platform="$(NativePlatform)" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
+          ProjectName="OutOfProcessRequestHandler.vcxproj" 
+          PropetyName="AspNetCoreModuleV2OutOfProcessHandler" 
+          NativeAsset="aspnetcorev2_outofprocess" 
+          PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="OutOfProcessRequestHandler" 
+          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2_outofprocess.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj" 
           PdbLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2_outofprocess.pdb"
         />
 
        <RunInProcessComponents
-          Platform="$(NativePlatform)"
-          VCPlatform="$(NativeVCPlatform)"
-          BaseOutputPath="AspNetCoreModuleV2"
-          NativeAsset="aspnetcorev2_inprocess"
-          ProjectName="InProcessRequestHandler.vcxproj"
-          PropetyName="AspNetCoreModuleV2InProcessHandler"
-          OutDirName="InProcessRequestHandler"
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler"
-          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj"
-          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2_inprocess.dll"
+          VCPlatform="$(NativeVCPlatform)" 
+          Platform="$(NativePlatform)" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler" 
+          ProjectName="InProcessRequestHandler.vcxproj" 
+          PropetyName="AspNetCoreModuleV2InProcessHandler" 
+          NativeAsset="aspnetcorev2_inprocess" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="InProcessRequestHandler" 
+          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2_inprocess.dll" 
+          Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" 
           PdbLocation="$(ArtifactsBinDir)InProcessRequestHandler\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2_inprocess.pdb"
         />
 
     </ItemGroup>
     <PropertyGroup>
 
-       <AspNetCoreModuleV2ShimDll>$(ArtifactsBinDir)AspNetCoreModuleShim\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2.dll</AspNetCoreModuleV2ShimDll>
-       <AspNetCoreModuleV2InProcessHandlerDll>$(ArtifactsBinDir)InProcessRequestHandler\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2_inprocess.dll</AspNetCoreModuleV2InProcessHandlerDll>
+       <AspNetCoreModuleV2ShimDll>$(ArtifactsBinDir)AspNetCoreModuleShim\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2.dll</AspNetCoreModuleV2ShimDll> 
+       <AspNetCoreModuleV2InProcessHandlerDll>$(ArtifactsBinDir)InProcessRequestHandler\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2_inprocess.dll</AspNetCoreModuleV2InProcessHandlerDll> 
        <AspNetCoreModuleV2OutOfProcessHandlerDll>$(ArtifactsBinDir)OutOfProcessRequestHandler\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2_outofprocess.dll</AspNetCoreModuleV2OutOfProcessHandlerDll>
     </PropertyGroup>
 </Project>
diff --git a/src/Servers/IIS/tools/GenerateNativeAssets.ps1 b/src/Servers/IIS/tools/GenerateNativeAssets.ps1
index 20c28ae8ae2..86324c6096b 100644
--- a/src/Servers/IIS/tools/GenerateNativeAssets.ps1
+++ b/src/Servers/IIS/tools/GenerateNativeAssets.ps1
@@ -5,6 +5,10 @@ $platforms = @(
         Platform = "x64";
         VCPlatform = "x64";
     },
+    @{
+        Platform = "ARM64";
+        VCPlatform = "ARM64";
+    },
     @{
         Platform = "x86";
         VCPlatform = "Win32";
-- 
GitLab