anchor.diff:    printf "Exporting extended solution %A" (file_location + sol_name)
     SolutionHelper.exportWithExtendedSolution' env.url ac ac' sol_name file_location false (DG.Daxif.ConsoleLogger DG.Daxif.LogLevel.Verbose)
     file_location + sol_name
  -  (*
  -  (proxy :?> OrganizationServiceProxy).Timeout <- new TimeSpan(0, minutes, 0);
  -  let req = ExportSolutionRequest ()
  -  req.Managed <- false;
  -  req.SolutionName <- sol_name;
  -  let resp = proxy.Execute(req) :?> ExportSolutionResponse
  -  let file_prefix = 
  -    file_location (*+ 
  -    System.DateTime.Now.ToString("yyyyMMddHHmmss") + "-"*);
  -  let zip = resp.ExportSolutionFile
  -  File.WriteAllBytes(file_prefix + sol_name + ".zip", zip);
  -  file_prefix + sol_name
  -  *)
   
   let rec download_with_retry (env: DG.Daxif.Environment) file_location sol_name minutes retry_count =
     if retry_count > 0 then
  
positive.code:     )
    // Run through solution components of [partial solution], add to [complete solution] on TARGET
    let sol = fetch_solution proxy temporary_solution_name
    match sol with
      | None -> failwith "Impossible"
      | Some s -> 
        publish proxy;
        stopWatch.Stop()
        printfn "Downtime: %.1f minutes" stopWatch.Elapsed.TotalMinutes;
        transfer_solution_components proxy s.Id complete_solution_name
        // Delete [partial solution] on TARGET
        printfn "Deleting solution '%s'" temporary_solution_name;
        proxy.Delete("solution", s.Id);
      
negative.code:   ZipFile.ExtractToDirectory(file + ".zip", file);
  
  let fetch_solution proxy (solution: string) = 
    let columnSet = ColumnSet("uniquename", "friendlyname", "publisherid", "version")
    CrmDataInternal.Entities.retrieveSolution proxy solution columnSet
  
  let create_solution (proxy: IOrganizationService) temporary_solution_name publisher = 
    printfn "Creating solution '%s'" temporary_solution_name;
  