Public/DotNet/Add-AssemblyBindingRedirect.ps1

function Add-AssemblyBindindRedirect {
    [CmdletBinding()]
    param (
        [parameter(ValueFromPipelineByPropertyName,Mandatory)]
        [string]$Id,
        [parameter(ValueFromPipelineByPropertyName,Mandatory)]
        [string]$Version,
        [string]$Culture="neutral",
        [string]$PublicToken
    )
    
    begin {
        $xml=@()
    }
    
    process {
        $binding=$config.configuration.runtime.assemblyBinding.dependentAssembly|Where-Object{$_.assemblyIdentity.name -eq $id}
        if ($binding){
            $binding.bindingRedirect.oldVersion="0.0.0.0-$Version"
            $binding.bindingRedirect.newVersion=$Version
        }
        else{
            $xml += @"
`n
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="$id" publicKeyToken="$PublicToken" culture="$culture" />
            <bindingRedirect oldVersion="0.0.0.0-$Version" newVersion="$Version" />
        </dependentAssembly>
    </assemblyBinding>
"@

            
        }
    }
    
    end {
        $config.SelectSingleNode("//runtime").InnerXml+=$xml
        $config.Save($configFile)
    }
}