anchor.diff:  "BuildArtifacts"
       ==> "Default"
   
  +"Default"
  +    ==> "Publish"
  +
   "BundleExtensions"
  -    ==> "Publish"
  +    ==> "Publish_CD"
   
   Target.runOrDefault "Default"
positive.code:     |> Seq.concat
      |> Zip.zipSpec targetName
  
      Shell.cp (artifactsDir </> "tasks.zip") (artifactsDir </> "tasks_upload.zip")
      Trace.publish ImportData.BuildArtifact (artifactsDir </> "tasks_upload.zip")
  )
  
  Target.create "RestoreArtifacts" (fun _ ->
      Shell.cleanDir "temp"
      Zip.unzip "temp" (artifactsDir </> "tasks.zip")
  
  )
  let replaceTaskJsons () =
      // fixup task-ids:
  
negative.code:     for ext in exts do
          let prefix = sprintf "%s.%s%s-" publisher ext repl.IdPostfix
          let vsixFile =
             !! (artifactsDir </> "vsix" </> sprintf "%s*.vsix" prefix)
             |> Seq.filter (fun file -> 
                  let name = Path.GetFileName(file)
                  not <| name.Substring(prefix.Length).Contains("-"))
  