anchor.diff:      trace <| sprintf "FSC with args:%A" optsArr
       // Always prepend "fsc.exe" since fsc compiler skips the first argument
       let optsArr = Array.append [|"fsc.exe"|] optsArr
  -    let errors, exitCode = scs.Compile(optsArr)
  +    let errors, exitCode = scs.Compile optsArr
       // Better compile reporting thanks to:
       // https://github.com/jbtule/ComposableExtensions/blob/5b961b30668bb7f4d17238770869b5a884bc591f/tools/CompilerHelper.fsx#L233
       for e in errors do
           let errMsg = e.ToString()
           match e.Severity with
  -        | Microsoft.FSharp.Compiler.Warning -> traceImportant errMsg
  -        | Microsoft.FSharp.Compiler.Error -> traceError errMsg
  +        | FSharpErrorSeverity.Warning -> traceImportant errMsg
  +        | FSharpErrorSeverity.Error -> traceError errMsg
       exitCode
   
   /// Compiles the given F# source files with the specified parameters.
  
positive.code: /// ## Sample
  ///
  ///     ["file1.fs"; "file2.fs"]
  ///     |> fsc (fun parameters ->
  ///              { parameters with Output = ...
  ///                                FscTarget = ...
  ///                                ... })
  let fsc (setParams : FscParams -> FscParams) (inputFiles : string list) : int = 
      let inputFiles = inputFiles |> Seq.toList
      let taskDesc = inputFiles |> separated ", "
      let fscParams = setParams FscParams.Default
  
      let output = if fscParams.Output <> "" then [ "-o"; fscParams.Output ] else []
      let target =
          match fscParams.FscTarget with
          | Exe -> [ "--target:exe" ]
          | Winexe -> [ "--target:winexe" ]
          | Library -> [ "-a" ]
          | Module -> [ "--target:module" ]
      let platform =
          match fscParams.Platform with
          | X86 -> [ "--platform:x86" ]
          | Itanium -> [ "--platform:itanium" ]
          | X64 -> [ "--platform:x64" ]
          | AnyCpu32BitPreferred -> [ "--platform:anycpu32bitpreferred" ]
          | AnyCpu -> [ "--platform:anycpu" ]
      let references =
          let refs =
              fscParams.References
              |> List.map (fun r -> sprintf "--reference:%s" r)
          let isNonDefaultFramework =
              fscParams.References
              |> List.exists (fun r->
                  r.IndexOf("FSharp.Core.dll", System.StringComparison.InvariantCultureIgnoreCase) >= 0
                  || r.IndexOf("mscorlib.dll", System.StringComparison.InvariantCultureIgnoreCase) >= 0)
          if isNonDefaultFramework then "--noframework"::refs else refs
      let debug = if fscParams.Debug then [ "-g" ] else []
      let argList =
          output @ target @ platform @ references @ debug @ fscParams.OtherParams
      traceStartTask "Fsc " taskDesc
      let res = fscList inputFiles argList
      traceEndTask "Fsc " taskDesc
  
negative.code: /// ## Sample
  ///
  ///     ["file1.fs"; "file2.fs"]
  ///     |> Fsc [Out "" 
  ///             Target Exe
  ///             Platform AnyCpu
  ///             References []
  ///             Debug false 
  ///        ]
  let Fsc (fscParams : FscParam list) (inputFiles : string list) : unit = 
      let res = fsc fscParams inputFiles
      if res <> 0 then raise <| BuildException("Fsc: compile failed with exit code", [ string res ])
  