anchor.diff:  
   let private replaceAccessKey key (s:string) = s.Replace(key,"PRIVATEKEY")
   
  +// create package
  +let private pack parameters specFile =
  +    let args = sprintf "pack %s %s" (Path.GetFileName specFile) (if parameters.NoPackageAnalysis then "-NoPackageAnalysis" else "")
  +    let result = 
  +        ExecProcess (fun info ->
  +            info.FileName <- parameters.ToolPath
  +            info.WorkingDirectory <- parameters.OutputPath |> FullName
  +            info.Arguments <- args) parameters.TimeOut
  +               
  +    if result <> 0 then failwithf "Error during NuGet creation. %s %s" parameters.ToolPath args
  +
   // push package (and try again if something fails)
  -let rec publish trials parameters packageFile =
  +let rec private publish trials parameters packageFile =
       let tracing = enableProcessTracing
       enableProcessTracing <- false
       let source = if isNullOrEmpty parameters.PublishUrl then "" else sprintf "-s %s" parameters.PublishUrl
  
positive.code:         if result <> 0 then failwithf "Error during NuGet symbols creation. %s %s" parameters.ToolPath args
          parameters.OutputPath @@ packageFile |> DeleteFile
  
      // create package
      let args = sprintf "pack %s %s" (Path.GetFileName specFile) (if parameters.NoPackageAnalysis then "-NoPackageAnalysis" else "")
      let result = 
          ExecProcess (fun info ->
              info.FileName <- parameters.ToolPath
              info.WorkingDirectory <- parameters.OutputPath |> FullName
              info.Arguments <- args) parameters.TimeOut
                 
      if result <> 0 then failwithf "Error during NuGet creation. %s %s" parameters.ToolPath args
              
      let symbolsPackage = packageFile.Replace(".nupkg",".symbols.nupkg")
  
      // push package to symbol server (and try again if something fails)
      let rec publishSymbols trials =
          let tracing = enableProcessTracing
          enableProcessTracing <- false
          let args = sprintf "push -source %s \"%s\" %s" parameters.PublishUrl symbolsPackage parameters.AccessKey
  
          if tracing then 
              args
                  |> replaceAccessKey parameters.AccessKey
                  |> tracefn "%s %s" parameters.ToolPath 
  
          let result = 
              ExecProcess (fun info ->
                  info.FileName <- parameters.ToolPath
                  info.WorkingDirectory <- parameters.OutputPath |> FullName
                  info.Arguments <- args) parameters.TimeOut
          
          enableProcessTracing <- tracing
          if result <> 0 then 
              if trials > 0 then publishSymbols (trials - 1) else
              failwithf "Error during NuGet symbol push. %s %s" parameters.ToolPath args                            
              
      if parameters.Publish then 
          publish parameters.PublishTrials parameters packageFile 
          if parameters.ProjectFile <> null then publishSymbols parameters.PublishTrials
          
  /// Creates a new NuGet package   
  let NuGet setParams nuSpec =
  
negative.code:         if trials > 0 then publish (trials - 1) parameters packageFile else
          failwithf "Error during NuGet push. %s %s" parameters.ToolPath args
  
  // push package to symbol server (and try again if something fails)
  let rec private publishSymbols trials parameters (packageFile:string) =
      let tracing = enableProcessTracing
      enableProcessTracing <- false
      let args = sprintf "push -source %s \"%s\" %s" parameters.PublishUrl (packageFile.Replace(".nupkg",".symbols.nupkg")  ) parameters.AccessKey
  
      if tracing then 
          args
              |> replaceAccessKey parameters.AccessKey
              |> tracefn "%s %s" parameters.ToolPath 
  
      let result = 
          ExecProcess (fun info ->
              info.FileName <- parameters.ToolPath
              info.WorkingDirectory <- parameters.OutputPath |> FullName
              info.Arguments <- args) parameters.TimeOut
          
      enableProcessTracing <- tracing
      if result <> 0 then 
          if trials > 0 then publishSymbols (trials - 1) parameters packageFile else
          failwithf "Error during NuGet symbol push. %s %s" parameters.ToolPath args     
  
  let private runNuget parameters nuSpec =
      // create .nuspec file
      CopyFile parameters.OutputPath nuSpec
  
      let specFile = parameters.OutputPath @@ (Path.GetFileName nuSpec)
      let packageFile = sprintf "%s.%s.nupkg" parameters.Project parameters.Version
      let dependencies =
          if parameters.Dependencies = [] then "" else
  