Run ngen after installing all .NET libraries
.NET assemblies are normally JIT-compiled, but the loader first looks at a cache folder to check if a special NGENd version of the .NET assembly exists. Therefore, anytime we upgrade or somehow modify the system .NET assemblies, we should be sure to invoke the following script in order to make sure we have a matching NGEN library that can be loaded into memory and side-step the JIT compilation:
Set-Alias ngen (Join-Path ([Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()) ngen.exe)
ngen eqi
ngen update /force
Without this, the Runner Windows tests are taking ~18 minutes instead of the ~9 minutes taken by the equivalent bash-based tests. As per gitlab-org/gitlab-runner#25650 (comment 345925962)
Edited by 🤖 GitLab Bot 🤖