PSModule.psm1

#
# Script module for module 'PowerShellGet'
#
Set-StrictMode -Version Latest

# Summary: PowerShellGet is supported on Windows PowerShell 5.1 or later and PowerShell 6.0+

$isCore = ($PSVersionTable.Keys -contains "PSEdition") -and ($PSVersionTable.PSEdition -ne 'Desktop')
if ($isCore)
{
    $script:Framework = 'netstandard2.0'
    $script:FrameworkToRemove = 'net472'
    
} else {
    $script:Framework = 'net472'
    $script:FrameworkToRemove = 'netstandard2.0'
}

# Set up some helper variables to make it easier to work with the module
$script:PSModule = $ExecutionContext.SessionState.Module
$script:PSModuleRoot = $script:PSModule.ModuleBase
$script:PSGet = 'PowerShellGet.dll'

# CONSTRUCT A PATH TO THE CORRECT ASSEMBLY
#$pathToAssembly = [io.path]::combine($PSScriptRoot, $script:Framework, $script:PSGet)
$pathToFramework = Join-Path -Path $script:PSModuleRoot -ChildPath $script:Framework
$pathToAssembly = Join-Path -Path $pathToFramework -ChildPath $script:PSGet

# Remove framework binaries that are not needed
$FrameworkToRemovePath = Join-Path -Path $script:PSModuleRoot -ChildPath $script:FrameworkToRemove
if (Test-Path $FrameworkToRemovePath)
{
    Remove-Item $FrameworkToRemovePath -Force -Recurse
}

# NOW LOAD THE APPROPRIATE ASSEMBLY
$ImportedPSGetModule = Import-Module -Name $pathToAssembly -PassThru

if($ImportedPSGetModule)
{
    $script:PSModule.OnRemove = {
        Remove-Module -ModuleInfo $ImportedPSGetModule
    }
}