anchor.diff:          | Choice1Of2 item -> item::list1, list2
           | Choice2Of2 item -> list1, item::list2)
   
  -let getProjectOptionsFromFsproj projFile =
  -    let targetFrameworkRegex =
  -        Regex("<TargetFramework>([a-z]*)(.*?)</TargetFramework>", RegexOptions.IgnoreCase)
  +let getProjectOptionsFromFsproj (projFile: string) =
  +    let xmlDoc = XDocument.Load(projFile)
       let targetFramework =
  -        File.ReadLines(projFile)
  -        |> Seq.tryPick(fun line ->
  -            let m = targetFrameworkRegex.Match(line)
  -            if m.Success
  -            then Some(m.Groups.[1].Value, m.Groups.[2].Value)
  -            else None)
  -        |> function
  -            | Some(framework, version) ->
  -                let framewor = if framework = "netcoreapp" then "netstandard" else framework
  -                { Framework = "netstandard"; Version = version }
  -            | None -> failwithf "Cannot find TargetFramework in %s" projFile
  +        match tryGetTargetFramework xmlDoc with
  +        | Some framework ->
  +            let framework, version =
  +                if framework.StartsWith("netcoreapp1") then "netstandard", "1.6"
  +                elif framework.StartsWith("netcoreapp2") then "netstandard", "2.0"
  +                else framework, ""
  +            { Framework = framework; Version = version }
  +        | None -> failwithf "Cannot find TargetFramework in %s" projFile
       let paketDir = tryFindPaketDirFromProject projFile
       checkFableCoreVersion paketDir projFile
  -    let rec crackProjects (acc: CrackedFsproj list) projFile =
  +    let rec crackProjects (acc: CrackedFsproj list) projFile xmlDoc =
           acc |> List.tryFind (fun x ->
               String.Equals(x.projectFile, projFile, StringComparison.OrdinalIgnoreCase))
           |> function
  
positive.code:         yield "-r:" + fableCoreLib // "FSharp.Core"
      |]
  
  /// Ultra-simplistic resolution of .fsproj files
  let crackFsproj (projFile: string) =
      let withName s (xs: XElement seq) =
          xs |> Seq.filter (fun x -> x.Name.LocalName = s)
      let (|BeforeComma|) (att: XAttribute) =
  
negative.code:                 | Some x -> RelativeDllReference x.Value
                  | None -> Another
          | _ -> Another
      let xmlDoc =
          match xmlDoc with
          | Some doc -> doc
          | None ->
              if not(File.Exists(projFile)) then
                  failwith ("File does not exist: " + projFile)
              XDocument.Load(projFile)
      let projDir = Path.GetDirectoryName(projFile) |> Path.normalizePath
      let sourceFiles, projectReferences, relativeDllReferences =
          xmlDoc.Root.Elements()
          |> withName "ItemGroup"
          |> Seq.map (fun item ->
              (item.Elements(), ([], [], []))
  