@@ -2760,6 +2760,9 @@ type FSharpProjectFileInfo (fsprojFileName:string, ?properties, ?enableLogging)
27602760 yield i.FinalItemSpec
27612761 for i in project.GetEvaluatedItemsByName( " ChildProjectReferences" ) do
27622762 yield i.FinalItemSpec ]
2763+ // Duplicate slashes sometimes appear in the output here, which prevents
2764+ // them from matching keys used in FSharpProjectOptions.ReferencedProjects
2765+ |> List.map ( fun ( s : string ) -> s.Replace( " //" , " /" ))
27632766
27642767 outFileOpt, directory, getItems, references, projectReferences, getProp project, project.FullFileName
27652768
@@ -3153,19 +3156,19 @@ type FSharpChecker(projectCacheSize, keepAssemblyContents, keepAllBackgroundReso
31533156#if SILVERLIGHT
31543157#else
31553158#if FX_ ATLEAST_ 45
3156- member ic.GetProjectOptionsFromProjectFile ( projectFileName , ? properties : ( string * string ) list , ? loadedTimeStamp ) =
3157- let parsedProject = FSharpProjectFileInfo ( projectFileName , ?properties = properties )
3158- let args = parsedProject.Options |> Array.ofList
3159-
3160- let projectOptions = ic.GetProjectOptionsFromCommandLineArgs ( projectFileName , args , ?loadedTimeStamp = loadedTimeStamp )
3161- let referencedProjectOptions =
3162- [| for file in parsedProject.ProjectReferences do
3163- if Path.GetExtension ( file ) = " .fsproj " then
3164- yield file , ic.GetProjectOptionsFromProjectFile ( file , ?properties = properties , ?loadedTimeStamp = loadedTimeStamp ) |]
3165-
3166- { projectOptions
3167- with ReferencedProjects = referencedProjectOptions }
3168-
3159+ member ic.GetProjectOptionsFromProjectFile ( projectFileName , ? properties : ( string * string ) list , ? loadedTimeStamp ) =
3160+ let rec getOptions file : Option < string > * FSharpProjectOptions =
3161+ let parsedProject = FSharpProjectFileInfo.Parse ( file , ?properties = properties )
3162+ let projectOptions = ic.GetProjectOptionsFromCommandLineArgs ( file , Array.ofList parsedProject.Options , ?loadedTimeStamp = loadedTimeStamp )
3163+ let referencedProjectOptions =
3164+ [| for file in parsedProject.ProjectReferences do
3165+ if Path.GetExtension ( file) = " .fsproj " then
3166+ match getOptions file with
3167+ | Some outFile , opts -> yield outFile , opts
3168+ | None , _ -> () |]
3169+ parsedProject.OutputFile , { projectOptions with ReferencedProjects = referencedProjectOptions }
3170+
3171+ snd ( getOptions projectFileName )
31693172#endif
31703173#endif
31713174
0 commit comments