Remove the code that spins up our own assembly load context. Keep the code that registers our `Resolve` method to the default loader's `Resolving` event, so that we can continue to do special assembly resolution as needed (such as the GAC probing logic needed for consuming FullCLR PS modules). Essentially, the assembly `Microsoft.PowerShell.CoreCLR.AssemblyLoadContext.dll` is not needed anymore, the remaining code should be moved to S.M.A.dll. However, that will break DSC and other native hosts that are hosting powershell. So this assembly is kept for now.
PowerShell
The powershell[.exe] executable for PowerShell is built by
powershell-unix and powershell-windows projects,
as they are the top dependencies of the graph, and has emitEntryPoint: true,
meaning a native executable is produced automatically by CLI (no need to own a
separate native host).
This project is a very simple shim that provides a Main function for .NET CLI
to produce an app. It initializes PowerShell's custom AssemblyLoadContext and
then delegates to the same Start function in
Microsoft.PowerShell.ConsoleHost that the original native PowerShell host
executes; thus we share the same entry point and the same PowerShell host, but
use a different native host. This lets us take full advantage of .NET CLI's
native host.
We use this shim so that the ConsoleHost project and the original native host
do not have to be changed. Additionally, until .NET CLI bugs surrounding content
file deployment are solved, this shim allows us to continue with our split
Modules folders work-around to deploy the correct versions.