@@ -378,20 +378,23 @@ module Program =
378
378
// C# referenced projects, as we don't look at them otherwise.
379
379
let referencedProjectOutputs =
380
380
if runningOnMono then
381
- [| yield ! Array.map ( fun ( s , _ ) -> " -r:" + s) referencedProjectOptions
382
- for file in parsedProject.ProjectReferences do
383
- let ext = Path.GetExtension( file)
384
- if ext = " .csproj" || ext = " .vbproj" then
385
- let parsedProject = FSharpProjectFileInfo.Parse( file, properties= properties, enableLogging= false )
386
- match parsedProject.OutputFile with
387
- | None -> ()
388
- | Some f -> yield " -r:" + f | ]
381
+ [ yield ! Array.map ( fun ( s , _ ) -> " -r:" + s) referencedProjectOptions
382
+ for file in parsedProject.ProjectReferences do
383
+ let ext = Path.GetExtension( file)
384
+ if ext = " .csproj" || ext = " .vbproj" then
385
+ let parsedProject = FSharpProjectFileInfo.Parse( file, properties= properties, enableLogging= false )
386
+ match parsedProject.OutputFile with
387
+ | None -> ()
388
+ | Some f -> yield " -r:" + f ]
389
389
else
390
- [||]
390
+ []
391
+
392
+ // On some versions of Mono the referenced projects are already
393
+ // correctly included, so we make sure not to introduce duplicates
394
+ |> List.filter ( fun r -> not ( Set.contains r ( set parsedProject.Options)))
391
395
392
396
let options = { ProjectFile = file
393
- Options = Array.append ( Array.ofList ( parsedProject.Options))
394
- referencedProjectOutputs
397
+ Options = Array.ofSeq ( parsedProject.Options @ referencedProjectOutputs)
395
398
ReferencedProjectOptions = referencedProjectOptions
396
399
LogOutput = parsedProject.LogOutput }
397
400
0 commit comments