anchor.diff:        CleanDeploy = false
         NoZip = false
         NoNuGet = false
  -      Unix = false
         Key = None
      }
      let args = fsi.CommandLineArgs |> Array.toList  // args = ["build.fsx"; ...]
  
positive.code:       | "--no-zip" :: args -> loop { acc with NoZip = true } args
        | "--no-nuget" :: args -> loop { acc with NoNuGet = true } args
        | "--no-deploy" :: args -> loop { acc with NoZip = true; NoNuGet = true } args
        | "--unix" :: args -> loop { acc with Unix = true } args
        | "--key" :: path :: args -> loop { acc with Key = Some (path) } args
        | _ :: args -> loop acc args  // ignores unknown argument
     let defaultBuildParam = {
  
negative.code: --no-zip          Do not create zip archive
  --no-nuget        Do not build NuGet packages
  --no-deploy       Same as --no-zip --no-nuget
  --key <key_path>  Sign assembly with the specified key"""
     exit 0
  
  let zipName = deployDir % "RDotNet.zip"
  
  let addBuildProperties =
     let debugSymbol properties =
        match buildParams.Debug with
           | true -> ("DebugSymbols", "true") :: ("DebugType", "full") :: properties
           | false -> ("DebugSymbols", "false") :: ("DebugType", "pdbonly") :: properties
     let setKey properties =
        match buildParams.Key with
           | Some (path) when File.Exists (path) -> ("SignAssembly", "true") :: ("AssemblyOriginatorKeyFile", path) :: properties
           | Some (path) -> failwithf "Key file not found at %s" path
           | None -> properties
     debugSymbol >> setKey
  let buildZip = not buildParams.NoZip
  let buildNuGet = not (buildParams.NoNuGet)
  let configuration = "Configuration", if buildParams.Debug then "Debug" else "Release"
  let setBuildParams (p:MSBuildParams) = {
     p with
  