anchor.diff:            |> Seq.exists isPortable
   
         let getAssemblyLocation (reference:ProjectReference) =
  +          let tryGetFromHintPath() =
  +              if reference.HintPath.IsNotNull then 
  +                  let path = reference.HintPath.FullPath |> string
  +                  Some (path.Replace("/Library/Frameworks/Mono.framework/External",
  +                                     "/Library/Frameworks/Mono.framework/Versions/Current/lib/mono"))
  +              else
  +                  None
  +
             match reference.ReferenceType with
             | ReferenceType.Assembly ->
  -              if reference.HintPath.IsNotNull then 
  -                  Some (reference.HintPath.FullPath |> string)
  -              else
  -                  None
  +              tryGetFromHintPath()
             | ReferenceType.Package ->
                     if isNull reference.Package then
  -                      None
  +                      tryGetFromHintPath()
                     else 
                         let assembly = 
                             reference.Package.Assemblies
  
positive.code:   /// list of strings of the form [ "-r:<full-path>"; ... ]
    let generateReferences (project: DotNetProject, langVersion, targetFramework, configSelector, shouldWrap) =
     if Project.isPortable project then
          Project.getPortableReferences project configSelector
     else
         let wrapf = if shouldWrap then wrapFile else id
  
  
negative.code:   /// parameters and assemblies referenced by the project ("-r" options)
    let generateCompilerOptions (project:DotNetProject, fsconfig:FSharpCompilerParameters, reqLangVersion, targetFramework, configSelector, shouldWrap) =
      let dashr = generateReferences (project, reqLangVersion, targetFramework, configSelector, shouldWrap) |> Array.ofSeq
      let files = project.Files
                  |> Seq.filter(fun f -> f.FilePath.Extension = ".fs")
                  |> Seq.map(fun f -> f.Name)
  
      let defines = fsconfig.DefineConstants.Split([| ';'; ','; ' ' |], StringSplitOptions.RemoveEmptyEntries)
      [  
         yield "--simpleresolution"
         yield "--noframework"
         yield "--out:" + project.GetOutputFileName(configSelector).ToString()
         if Project.isPortable project then 
             yield "--targetprofile:netcore"
             yield "--platform:anycpu"
         yield "--fullpaths"
         yield "--flaterrors"
         for symbol in defines do yield "--define:" + symbol
         yield if fsconfig.HasDefineSymbol "DEBUG" then  "--debug+" else  "--debug-"
         yield if fsconfig.Optimize then "--optimize+" else "--optimize-"
         yield if fsconfig.GenerateTailCalls then "--tailcalls+" else "--tailcalls-"
         yield match project.CompileTarget with
               | CompileTarget.Library -> "--target:library" 
               | CompileTarget.Module -> "--target:module" 
               | _ -> "--target:exe"
         // TODO: This currently ignores escaping using "..."
         for arg in fsconfig.OtherFlags.Split([| ' ' |], StringSplitOptions.RemoveEmptyEntries) do
           yield arg 
  