anchor.diff:      traceStartTask "Publish All" ""
       let parameters = setParams DynamicsCrmHelperDefaults
       let tool = parameters.ToolDirectory @@ "Dynamics.CRM.SolutionExchanger.exe"
  -    let args = sprintf "Publish /url:%s /user:%s /password:%s" parameters.Url parameters.User parameters.Password
  +    let args = sprintf "Publish /url:%s /user:%s /password:%s /timeout:%i" parameters.Url parameters.User parameters.Password (int parameters.TimeOut.TotalMinutes)
       if 0 <> ExecProcess (fun pInfo -> 
                   pInfo.FileName <- tool
                   pInfo.WorkingDirectory <- parameters.WorkingDirectory
  
positive.code:     let parameters = setParams DynamicsCrmHelperDefaults
      traceStartTask "Exporting Solution" (parameters.Solution + ": " + if parameters.Managed then "Managed" else "Unmanaged")
      let tool = parameters.ToolDirectory @@ "Dynamics.CRM.SolutionExchanger.exe"
      let args = sprintf "Export /url:%s /user:%s /password:%s /solution:%s /managed:%s /workingdir:%s /filename:%s /allSolutions:%s /allOrganizations:%s" 
                      parameters.Url parameters.User parameters.Password parameters.Solution (parameters.Managed.ToString()) 
                      parameters.WorkingDirectory parameters.FileName (parameters.AllSolutions.ToString()) (parameters.AllOrganizations.ToString())
      if 0 <> ExecProcess (fun pInfo -> 
                  pInfo.FileName <- tool
                  pInfo.WorkingDirectory <- parameters.WorkingDirectory
  
negative.code:         Url = ""
          User = ""
          Password = ""
          TimeOut = TimeSpan.FromMinutes 10.0
          ToolDirectory = currentDirectory @@ "tools" @@ "Dynamics.CRM.SolutionExchanger"
          WorkingDirectory = ""
          FileName = ""
  