anchor.diff:  open System.Reflection
   open Fake
   
  -let nugetToolPath = @"./.nuget/NuGet.exe"
  -let outputDir = @"./RDotNet.FSharp/bin/Release/"
  +let baseDir = Path.GetDirectoryName (__SOURCE_DIRECTORY__)
  +let inline (~%) name = Path.Combine (baseDir, name)
  +let inline (%) dir name = Path.Combine (dir, name)
  +
  +let nugetToolPath = % ".nuget" % "NuGet.exe"
  +let outputDir = % "RDotNet.FSharp" % "bin" % "Release"
   let rdotnetAssemblyName = "RDotNet.dll"
   let rdotnetFSharpAssemblyName = "RDotNet.FSharp.dll"
  -let deployDir = @"./Deploy/"
  -let mainSolution = @"./RDotNet.FSharp.sln"
  -let rdotnetNuspec = @"./RDotNet.nuspec"
  -let rdotnetFSharpNuspec = @"./RDotNet.FSharp.nuspec"
  +let deployDir = % "Deploy"
  +let mainSolution = % "RDotNet.FSharp.sln"
  +let rdotnetNuspec = % "RDotNet.nuspec"
  +let rdotnetFSharpNuspec = % "RDotNet.FSharp.nuspec"
   
   type BuildParameter = {
      Debug : bool
  
positive.code: let updateNuGetParams assemblyPath (p:NuGetParams) = {
     p with
        NoPackageAnalysis = false
        OutputPath = "."
        ToolPath = nugetToolPath
        WorkingDir = "."
        Version = getMainAssemblyVersion assemblyPath
  }
  let pack mainAssemblyPath = NuGetPack (updateNuGetParams mainAssemblyPath)
  Target "NuGetMain" (fun () ->
     let path = Path.Combine (outputDir, rdotnetAssemblyName)
     pack path rdotnetNuspec
  )
  Target "NuGetFSharp" (fun () ->
     let path = Path.Combine (outputDir, rdotnetFSharpAssemblyName)
     pack path rdotnetFSharpNuspec
  )
  
  Target "Zip" (fun () ->
     !+ (Path.Combine (outputDir, "*.dll")) ++ (Path.Combine (outputDir, "*.xml"))
     |> Scan
     |> Zip outputDir zipName
  )
  
  Target "Deploy" (fun () ->
     ensureDirectory deployDir
     !+ zipName ++ @"./*.nupkg"
     |> Scan
     |> Seq.iter (MoveFile deployDir)
  )
  
  "Clean"
  ==> "Build"
  ==> "NuGetMain"
  ==> "NuGetFSharp"
  ==> "Zip"
  ==> "Deploy"
  
  Run "Deploy"
  
negative.code:       | "--key" :: path :: args -> loop { acc with Key = Some (path) } args
        | _ :: args -> loop acc args  // ignores unknown argument
     let defaultBuildParam = { Debug = false; Unix = false; Key = None }
     let args = fsi.CommandLineArgs |> Array.toList  // args = ["build.fsx"; ...]
     loop defaultBuildParam args.Tail
  
  let zipName = deployDir % if buildParams.Unix then "RDotNet.Unix.zip" else "RDotNet.Windows.zip"
  
  let addBuildProperties =
     let definieUnix properties =
  