anchor.diff:  
   /// Prints all targets.
   let PrintTargets() =
  -    log "The following targets are available:"
  +    let sb = StringBuilder()
  +    let appendfn fmt = Printf.ksprintf (sb.AppendLine >> ignore) fmt
  +
  +    appendfn "The following targets are available:"
       for t in TargetDict.Values do
  -        logfn "   %s%s" t.Name (if isNullOrEmpty t.Description then "" else sprintf " - %s" t.Description)
  +        appendfn "   %s%s" t.Name (if isNullOrEmpty t.Description then "" else sprintf " - %s" t.Description)
  +
  +    sb.Length <- sb.Length - Environment.NewLine.Length
  +
  +    log <| sb.ToString()
   
   
   // Maps the specified dependency type into the list of targets
  
positive.code: module Fake.TargetHelper
  
  open System
  open System.Collections.Generic
  open System.Linq
  
  
negative.code:     match TargetDict.TryGetValue (target) with
      | false,_ -> PrintTargets()
      | true,target ->
          let sb = StringBuilder()
          let appendfn fmt = Printf.ksprintf (sb.AppendLine >> ignore) fmt
  
          appendfn "%sDependencyGraph for Target %s:" (if verbose then String.Empty else "Shortened ") target.Name
  
          let logDependency ((t: TargetTemplate<unit>), depType, level, isVisited) =
              if verbose ||  not isVisited then
                  let indent = (String(' ', level * 3))
                  if depType = DependencyType.Soft then
                      appendfn "%s<=? %s" indent t.Name
                  else
                      appendfn "%s<== %s" indent t.Name
  
          let _, ordered = visitDependencies logDependency target.Name
  
          appendfn ""
          appendfn "The resulting target order is:"
          Seq.iter (appendfn " - %s") ordered
  
          sb.Length <- sb.Length - Environment.NewLine.Length
  
          log <| sb.ToString()
  
  /// <summary>Writes a dependency graph of all targets in the DOT format.</summary>
  let PrintDotDependencyGraph () =
      let sb = StringBuilder()
      let appendfn fmt = Printf.ksprintf (sb.AppendLine >> ignore) fmt
  
      appendfn "digraph G {"
      appendfn "  rankdir=TB;"
      appendfn "  node [shape=box];"
      for target in TargetDict.Values do
          appendfn "  \"%s\";" target.Name
          let deps = target.Dependencies
          for d in target.Dependencies do
              appendfn "  \"%s\" -> \"%s\"" target.Name d
          for d in target.SoftDependencies do
              appendfn "  \"%s\" -> \"%s\" [style=dotted];" target.Name d
      sb.Append "}" |> ignore
  
      log <| sb.ToString()
  
  /// Writes a summary of errors reported during build.
  let WriteErrors () =
  