anchor.diff:                  sprintf "dotnet-dev-win-x64.%s.zip" dotnetcliVersion
           let downloadPath = 
                   sprintf "https://dotnetcli.azureedge.net/dotnet/Sdk/%s/%s" dotnetcliVersion archiveFileName
  -        let localPath = Path.Combine(dotnetCliPath.FullName, archiveFileName)
  +        let localPath = Path.Combine(dotnetSDKPath, archiveFileName)
   
           tracefn "Installing '%s' to '%s'" downloadPath localPath
           
  
positive.code:     if correctVersionInstalled then
          tracefn "dotnetcli %s already installed" dotnetcliVersion
      else
          CleanDir dotnetCliPath.FullName
          let archiveFileName = 
              if isLinux then
                  sprintf "dotnet-dev-ubuntu-x64.%s.tar.gz" dotnetcliVersion
  
negative.code:                 if x = 0 then () else
                  failwithf "Command failed with exit code %i" x
  
              Shell.Exec("tar", sprintf """-xvf "%s" -C "%s" """ localPath dotnetSDKPath)
              |> assertExitCodeZero
          else  
              System.IO.Compression.ZipFile.ExtractToDirectory(localPath, dotnetSDKPath)
          
          tracefn "dotnet cli path - %s" dotnetSDKPath
          System.IO.Directory.EnumerateFiles dotnetSDKPath
          |> Seq.iter (fun path -> tracefn " - %s" path)
          System.IO.Directory.EnumerateDirectories dotnetSDKPath
          |> Seq.iter (fun path -> tracefn " - %s%c" path System.IO.Path.DirectorySeparatorChar)
  
      let oldPath = System.Environment.GetEnvironmentVariable("PATH")
      System.Environment.SetEnvironmentVariable("PATH", sprintf "%s%s%s" dotnetSDKPath (System.IO.Path.PathSeparator.ToString()) oldPath)
  )
  
  // --------------------------------------------------------------------------------------
  