anchor.diff:            
       shellExec {
           Program = args.SqlPackageToolPath
  -        CommandLine = sprintf """/Action:%s /SourceFile:"%s" /TargetConnectionString:"%s" %s /p:BlockOnPossibleDataLoss=%b /p:DropObjectsNotInSource=%b /p:CommandTimeout=%d /p:CreateNewDatabase=%b""" action args.Source args.Destination outputPath args.BlockOnPossibleDataLoss args.DropObjectsNotInSource args.Timeout args.RecreateDb
  +        CommandLine = sprintf """/Action:%s /SourceFile:"%s" /TargetConnectionString:"%s" %s /p:BlockOnPossibleDataLoss=%b /p:DropObjectsNotInSource=%b /p:CommandTimeout=%d /p:CreateNewDatabase=%b %s""" action args.Source args.Destination outputPath args.BlockOnPossibleDataLoss args.DropObjectsNotInSource args.Timeout args.RecreateDb additionalParameters
           WorkingDirectory = ""
           Args = [] }
   
  
positive.code:     let args = setParams defaultDeploymentArgs
      let action, outputPath = generateCommandLine args.Action
  
      if System.String.IsNullOrWhiteSpace args.SqlPackageToolPath then
          failwith "No SqlPackage.exe filename was given."
  
  
negative.code:     /// Drops objects in the destination that do not exist in the source. Defaults to false.
      DropObjectsNotInSource : bool
      /// Recreates the database from scratch on publish (rather than an in-place update). Defaults to false.
      RecreateDb : bool
      /// Additional configuration parameters required by sqlpackage.exe
      AdditionalSqlPackageProperties : (string * string) list }
  
  let validPaths =
      let getSqlVersion (path:string) = path.Split '\\' |> Array.item 3 |> int
  