anchor.diff:  
   Target "NuGet" (fun _ ->
       let nugetAccessPublishKey = getBuildParamOrDefault "nugetkey" nugetAccessKey
  -    let getOutputFile projectName ext = sprintf @"%s\%s.%s" outputBinDir projectName ext
  -    let getBinProjectFiles projectName =  [(getOutputFile projectName "dll")
  -                                           (getOutputFile projectName "xml")]
  -    let binProjectFiles = binProjects
  -                             |> List.collect(fun d -> getBinProjectFiles d)
  -                             |> List.filter(fun d -> File.Exists(d))
  -
  -    let nugetDependencies = binProjectDependencies
  -                              |> List.map (fun d -> d, GetPackageVersion nugetPackagesDir d)
  +    let getOutputFile netVersion projectName ext = sprintf @"%s\%s.%s" (getProjectOutputBinDirs netVersion projectName) projectName ext
  +    let getBinProjectFiles netVersion projectName =  [(getOutputFile netVersion projectName "dll")
  +                                                      (getOutputFile netVersion projectName "xml")]
  +    let binProjectFiles netVersion = projectsToPackageAssemblyNames
  +                                       |> List.collect(fun d -> getBinProjectFiles netVersion d)
  +                                       |> List.filter(fun d -> File.Exists(d))
  +    let nugetDependencies = projectsToPackageDependencies
  +                              |> List.map (fun d -> d, GetPackageVersion nugetRepositoryDir d)
       
  -    let getNupkgFile = sprintf "%s\%s.%s.nupkg" dllDeploymentDir binProjectName version
       let getNuspecFile = sprintf "%s\%s.nuspec" nuspecTemplatesDir binProjectName
   
       let preparePackage filesToPackage = 
  -        CreateDir packagesDir
  -        CreateDir dllDeploymentDir
  -        CopyFiles dllDeploymentDir filesToPackage
  +        CreateDir (packagesDir @@ "work")
  +        dllDeploymentDirs.Values |> Seq.iter (fun d -> CreateDir d)
  +        dllDeploymentDirs |> Seq.iter (fun d -> CopyFiles d.Value (filesToPackage d.Key))
   
       let cleanPackage name = 
  -        MoveFile packagesDir getNupkgFile
  -        DeleteDir (packagesDir @@ "lib")
  +        DeleteDir (packagesDir @@ "work")
   
       let doPackage dependencies =   
           NuGet (fun p -> 
               {p with
                   Project = binProjectName
                   Version = version
  -                ToolPath = nugetPath
  -                OutputPath = dllDeploymentDir
  -                WorkingDir = packagesDir
  +                ToolPath = nugetExePath
  +                OutputPath = packagesDir
  +                WorkingDir = packagesDir @@ "work"
                   Dependencies = dependencies
                   Publish = not (String.IsNullOrEmpty nugetAccessPublishKey)
                   AccessKey = nugetAccessPublishKey })
  
positive.code: Target "UpdateAssemblyVersion" (fun _ ->
        let pattern = Regex("Assembly(|File)Version(\w*)\(.*\)")
        let result = "Assembly$1Version$2(\"" + version + "\")"
        let content = File.ReadAllLines(solutionAssemblyInfo, Encoding.Unicode)
                      |> Array.map(fun line -> pattern.Replace(line, result, 1))
        File.WriteAllLines(solutionAssemblyInfo, content, Encoding.Unicode)
  )
  
  Target "BuildOtherProjects" (fun _ ->    
  
negative.code: // Clean build results
  
  Target "CleanPackagesDirectory" (fun _ ->
      CleanDirs [packagesDir; testResultsDir]
  )
  
  Target "DeleteOutputFiles" (fun _ ->
      !! (outputDir + @"\**\*.*")
         ++ (testResultsDir + @"\**\*.*")
          -- ignoreBinFilesPattern
      |> DeleteFiles
  )
  