anchor.diff:      restoreNugetPackages()
   
       // Pack projects using MSBuild
  -    build "Pack" "Release" [ "IncludeSource", "true"
  -                             "IncludeSymbols", "true"
  -                             "PackageOutputPath", FullName nuGetOutputFolder
  -                             "NoBuild", "true" ]
  +    runMsBuild "Pack" (Some configuration) [ "IncludeSource", "true"
  +                                             "IncludeSymbols", "true"
  +                                             "PackageOutputPath", FullName nuGetOutputFolder
  +                                             "NoBuild", "true" ]
   )
   
   let publishPackagesWithSymbols packageFeed symbolFeed accessKey =
  
positive.code:                     // Currently AutoFakeItEasy2 has been deprecated and is not being published to the feeds.
                      -- (nuGetOutputFolder @@ "AutoFixture.AutoFakeItEasy2.*" )
  let signKeyPath = FullName "Src/AutoFixture.snk"
  let solutionsToBuild = !! "Src/All.sln"
  let bakFileExt = ".orig"
  
  type BuildVersionCalculationSource = { major: int; minor: int; revision: int; preSuffix: string; 
  
negative.code:     )
  )
  
  let runMsBuild target configuration properties =
      let verbosity = match getBuildParam "BuildVerbosity" |> toLower with
                      | "quiet" | "q"         -> Quiet
                      | "minimal" | "m"       -> Minimal
                      | "normal" | "n"        -> Normal
                      | "detailed" | "d"      -> Detailed
                      | "diagnostic" | "diag" -> Diagnostic
                      | _ -> Normal
  
      let configProperty = match configuration with
                           | Some c -> [ "Configuration", c ]
                           | _ -> []
  
      let properties = configProperty @ properties
                       @ [ "AssemblyOriginatorKeyFile", signKeyPath
                           "AssemblyVersion", buildVersion.assemblyVersion
                           "FileVersion", buildVersion.fileVersion
                           "InformationalVersion", buildVersion.infoVersion 
                           "PackageVersion", buildVersion.nugetVersion ]
  
      solutionToBuild
      |> build (fun p -> { p with MaxCpuCount = Some None
                                  Verbosity = Some verbosity
                                  Targets = [ target ]
                                  Properties = properties })
  
  let cleanBuild configuration = runMsBuild "Clean" (Some configuration) []
  let rebuild configuration = runMsBuild "Rebuild" (Some configuration) []
  
  Target "CleanAll"               DoNothing 
  Target "CleanVerify"            (fun _ -> cleanBuild "Verify")
  Target "CleanRelease"           (fun _ -> cleanBuild configuration)
  Target "CleanTestResultsFolder" (fun _ -> CleanDir testResultsFolder)
  
  let restoreNugetPackages() = runMsBuild "Restore" None []
  
  Target "RestoreNuGetPackages" (fun _ -> restoreNugetPackages())
  
  Target "Verify" (fun _ -> rebuild "Verify")
  
  Target "BuildOnly" (fun _ -> rebuild configuration)
  Target "TestOnly" (fun _ ->
      let parallelizeTests = getBuildParamOrDefault "ParallelizeTests" "False" |> Convert.ToBoolean
      let maxParallelThreads = getBuildParamOrDefault "MaxParallelThreads" "0" |> Convert.ToInt32
      let parallelMode = if parallelizeTests then ParallelMode.All else ParallelMode.NoParallelization
  