function InitializeCustomSDKToolset {    
  if (-not $restore) {
    return
  }

  # The following frameworks and tools are used only for testing.
  # Do not attempt to install them in source build.
  if ($productBuild -or $properties -like "*DotNetBuildRepo=true*") {
    return
  }

  # InstallDotNetSharedFramework "1.0.5"
  # InstallDotNetSharedFramework "1.1.2"
  # InstallDotNetSharedFramework "2.1.0"

  CreateBuildEnvScript
}

function CreateBuildEnvScript()
{
  InitializeBuildTool | Out-Null # Make sure DOTNET_INSTALL_DIR is set

  Create-Directory $ArtifactsDir
  $scriptPath = Join-Path $ArtifactsDir "core-sdk-build-env.bat"
  $scriptContents = @"
@echo off
title Core SDK Build ($RepoRoot)
set DOTNET_MULTILEVEL_LOOKUP=0

set PATH=$env:DOTNET_INSTALL_DIR;%PATH%
set NUGET_PACKAGES=$env:NUGET_PACKAGES

set DOTNET_ROOT=$env:DOTNET_INSTALL_DIR
"@

  Out-File -FilePath $scriptPath -InputObject $scriptContents -Encoding ASCII
}

function InstallDotNetSharedFramework([string]$version) {
  $dotnetRoot = $env:DOTNET_INSTALL_DIR
  $fxDir = Join-Path $dotnetRoot "shared\Microsoft.NETCore.App\$version"

  if (!(Test-Path $fxDir)) {
    $installScript = GetDotNetInstallScript $dotnetRoot
    & $installScript -Version $version -InstallDir $dotnetRoot -Runtime "dotnet"

    if($lastExitCode -ne 0) {
      throw "Failed to install shared Framework $version to '$dotnetRoot' (exit code '$lastExitCode')."
    }
  }
}

InitializeCustomSDKToolset