anchor.diff:              | _ -> None
   
           roots |> Array.tryFind(fun root -> msbuildPathExists root) |> msbuildOption
  -#else
  +
       let dotnetHostPath =
           // How to find dotnet.exe --- woe is me; probing rules make me sad.
           // Algorithm:
  
positive.code:         let workingDir = Path.GetDirectoryName projectPath
  
          let succeeded =
  #if !(NETSTANDARD || NETCOREAPP)
              // The Desktop build uses "msbuild" to build
              executeBuild msbuildExePath (arguments "") workingDir
  #else
              // The coreclr uses "dotnet msbuild" to build
              executeBuild dotnetHostPath (arguments "msbuild") workingDir
  #endif
          let outputFile = projectPath + ".fsx"
          let resultOutFile = if succeeded && File.Exists(outputFile) then Some outputFile else None
          succeeded, resultOutFile
  
negative.code:                         Some dotnet
          else
              None
  
      let drainStreamToFile (stream: StreamReader) filename =
          use file = File.OpenWrite(filename)
  