anchor.diff:  // The url for the raw files hosted
   let gitRaw = environVarOrDefault "gitRaw" "https://raw.github.com/persimmon-projects"
   
  -// --------------------------------------------------------------------------------------
  -// END TODO: The rest of the file includes standard build steps
  -// --------------------------------------------------------------------------------------
  -
   // Read additional information from the release notes document
   let release = LoadReleaseNotes "RELEASE_NOTES.md"
   
   // Helper active pattern for project types
   let (|Fsproj|Csproj|Vbproj|) (projFileName:string) =
  -    match projFileName with
  -    | f when f.EndsWith("fsproj") -> Fsproj
  -    | f when f.EndsWith("csproj") -> Csproj
  -    | f when f.EndsWith("vbproj") -> Vbproj
  -    | _                           -> failwith (sprintf "Project file %s not supported. Unknown project type." projFileName)
  +  match projFileName with
  +  | f when f.EndsWith("fsproj") -> Fsproj
  +  | f when f.EndsWith("csproj") -> Csproj
  +  | f when f.EndsWith("vbproj") -> Vbproj
  +  | _                           -> failwith (sprintf "Project file %s not supported. Unknown project type." projFileName)
   
   // Generate assembly info files with the right version & up-to-date information
   Target "AssemblyInfo" (fun _ ->
  -    let common = [
  -        Attribute.Product project
  -        Attribute.Version release.AssemblyVersion
  -        Attribute.FileVersion release.AssemblyVersion
  -        Attribute.InformationalVersion release.NugetVersion
  -    ]
  -
  -    for suffix in [""; ".NET40"; ".NET45"; ".Portable259"] do
  -      [
  -        Attribute.Title "Persimmon"
  -        Attribute.Description ""
  -      ] @ common
  -      |> CreateFSharpAssemblyInfo (sprintf "./src/Persimmon%s/AssemblyInfo.fs" suffix)
  -
  -    for suffix in [""; ".NET40"] do
  -      [
  -          Attribute.Title "Persimmon.Runner"
  -          Attribute.Description ""
  -      ] @ common
  -      |> CreateFSharpAssemblyInfo (sprintf "./src/Persimmon.Runner%s/AssemblyInfo.fs" suffix)
  +  let common = [
  +      Attribute.Product project
  +      Attribute.Version release.AssemblyVersion
  +      Attribute.FileVersion release.AssemblyVersion
  +      Attribute.InformationalVersion release.NugetVersion
  +  ]
  +
  +  for suffix in [""; ".NET40"; ".NET45"; ".Portable259"] do
  +    [
  +      Attribute.Title "Persimmon"
  +      Attribute.Description ""
  +    ] @ common
  +    |> CreateFSharpAssemblyInfo (sprintf "./src/Persimmon%s/AssemblyInfo.fs" suffix)
  +
  +  for suffix in [""; ".NET40"] do
  +    [
  +      Attribute.Title "Persimmon.Runner"
  +      Attribute.Description ""
  +    ] @ common
  +    |> CreateFSharpAssemblyInfo (sprintf "./src/Persimmon.Runner%s/AssemblyInfo.fs" suffix)
   )
   
   // Copies binaries from default VS location to exepcted bin folder
   // But keeps a subdirectory structure for each project in the
   // src folder to support multiple project outputs
   Target "CopyBinaries" (fun _ ->
  -    !! "src/**/*.??proj"
  -    |> Seq.filter (fun p ->
  -      isDotnetInstalled
  -        || (not <| System.IO.Path.GetFileNameWithoutExtension(p).EndsWith("NETCore"))
  -    )
  -    |>  Seq.map (fun f -> ((System.IO.Path.GetDirectoryName f) @@ "bin/Release", outDir @@ (System.IO.Path.GetFileNameWithoutExtension f)))
  -    |>  Seq.iter (fun (fromDir, toDir) -> CopyDir toDir fromDir (fun _ -> true))
  +  !! "src/**/*.??proj"
  +  |> Seq.filter (fun p ->
  +    isDotnetInstalled
  +      || (not <| System.IO.Path.GetFileNameWithoutExtension(p).EndsWith("NETCore"))
  +  )
  +  |>  Seq.map (fun f -> ((System.IO.Path.GetDirectoryName f) @@ "bin/Release", outDir @@ (System.IO.Path.GetFileNameWithoutExtension f)))
  +  |>  Seq.iter (fun (fromDir, toDir) -> CopyDir toDir fromDir (fun _ -> true))
   )
   
   // --------------------------------------------------------------------------------------
   // Clean build results
   
   Target "Clean" (fun _ ->
  - CleanDirs [outDir; "temp"]
  - !! "./src/**/bin/Release"
  - |> CleanDirs
  +  CleanDirs [outDir; "temp"]
  +  !! "./src/**/bin/Release"
  +  |> CleanDirs
   )
   
   Target "CleanDocs" (fun _ ->
  -    CleanDirs ["docs/output"]
  +  CleanDirs ["docs/output"]
   )
   
   // --------------------------------------------------------------------------------------
  
positive.code: // the ability to step through the source code of external libraries https://github.com/ctaggart/SourceLink
  
  Target "SourceLink" (fun _ ->
      let baseUrl = sprintf "%s/%s/{0}/%%var2%%" gitRaw project
      !! "src/**/*.??proj"
      |> Seq.iter (fun projFile ->
          let proj = VsProj.LoadRelease projFile
          SourceLink.Index proj.CompilesNotLinked proj.OutputFilePdb __SOURCE_DIRECTORY__ baseUrl
      )
  )
  
  #endif
  
negative.code: )
  
  Target "PublishNuget" (fun _ ->
    Paket.Push(fun p -> { p with WorkingDir = "bin" })
  )
  
  // --------------------------------------------------------------------------------------
  // Generate the documentation
  
  Target "GenerateReferenceDocs" (fun _ ->
    if not <| executeFSIWithArgs "docs/tools" "generate.fsx" ["--define:RELEASE"; "--define:REFERENCE"] [] then
      failwith "generating reference documentation failed"
  )
  
  let generateHelp' fail debug =
    let args =
      if debug then ["--define:HELP"]
      else ["--define:RELEASE"; "--define:HELP"]
    if executeFSIWithArgs "docs/tools" "generate.fsx" args [] then
      traceImportant "Help generated"
    else
      if fail then
        failwith "generating help documentation failed"
      else
        traceImportant "generating help documentation failed"
  
  let generateHelp fail =
    generateHelp' fail false
  
  Target "GenerateHelp" (fun _ ->
    DeleteFile "docs/content/release-notes.md"
    CopyFile "docs/content/" "RELEASE_NOTES.md"
    Rename "docs/content/release-notes.md" "docs/content/RELEASE_NOTES.md"
  
    ensureDirectory "docs/files/images"
    CopyFile "docs/files/images/favicon.ico" "paket-files/build/persimmon-projects/Persimmon.Materials/StandardIcons/persimmon.ico"
    CopyFile "docs/files/images/logo.png" "paket-files/build/persimmon-projects/Persimmon.Materials/StandardIcons/persimmon_128.png"
  
    generateHelp true
  )
  
  Target "GenerateHelpDebug" (fun _ ->
    DeleteFile "docs/content/release-notes.md"
    CopyFile "docs/content/" "RELEASE_NOTES.md"
    Rename "docs/content/release-notes.md" "docs/content/RELEASE_NOTES.md"
  
    generateHelp' true true
  )
  
  Target "KeepRunning" (fun _ ->
    use watcher = new FileSystemWatcher(DirectoryInfo("docs/content").FullName,"*.*")
    watcher.EnableRaisingEvents <- true
    watcher.Changed.Add(fun e -> generateHelp false)
    watcher.Created.Add(fun e -> generateHelp false)
    watcher.Renamed.Add(fun e -> generateHelp false)
    watcher.Deleted.Add(fun e -> generateHelp false)
  
    traceImportant "Waiting for help edits. Press any key to stop."
  
    System.Console.ReadKey() |> ignore
  
    watcher.EnableRaisingEvents <- false
    watcher.Dispose()
  )
  
  Target "GenerateDocs" DoNothing
  
  let createIndexFsx lang =
    let content = """(*** hide ***)
  // This block of code is omitted in the generated HTML documentation. Use
  // it to define helpers that you do not want to show in the documentation.
  #I "../../../bin"
  