33#if INTERACTIVE
44#load" ../utils/ResizeArray.fs" " ../absil/illib.fs" " ../fsharp/ReferenceResolver.fs"
55#else
6- module internal Microsoft.FSharp.Compiler.SimulatedMSBuildReferenceResolver
6+ module internal Microsoft.FSharp.Compiler.SimulatedMSBuildReferenceResolver
77#endif
88
99open System
@@ -15,21 +15,27 @@ open Microsoft.FSharp.Compiler.ReferenceResolver
1515open Microsoft.FSharp .Compiler .AbstractIL .Internal .Library
1616
1717let internal SimulatedMSBuildResolver =
18+ let supportedFrameworks = [|
19+ " v4.7.2" ;
20+ " v4.7.1" ;
21+ " v4.7" ;
22+ " v4.6.2" ;
23+ " v4.6.1" ;
24+ " v4.6" ;
25+ " v4.5.1" ;
26+ " v4.5" ;
27+ " v4.0"
28+ |]
1829{ new Resolverwith
19- member x.HighestInstalledNetFrameworkVersion () =
30+ member x.HighestInstalledNetFrameworkVersion () =
31+
2032let root = x.DotNetFrameworkReferenceAssembliesRootDirectory
21- if Directory.Exists( Path.Combine( root, " v4.7.1" )) then " v4.7.2"
22- elif Directory.Exists( Path.Combine( root, " v4.7.1" )) then " v4.7.1"
23- elif Directory.Exists( Path.Combine( root, " v4.7" )) then " v4.7"
24- elif Directory.Exists( Path.Combine( root, " v4.6.2" )) then " v4.6.2"
25- elif Directory.Exists( Path.Combine( root, " v4.6.1" )) then " v4.6.1"
26- elif Directory.Exists( Path.Combine( root, " v4.6" )) then " v4.6"
27- elif Directory.Exists( Path.Combine( root, " v4.5.1" )) then " v4.5.1"
28- elif Directory.Exists( Path.Combine( root, " v4.5" )) then " v4.5"
29- elif Directory.Exists( Path.Combine( root, " v4.0" )) then " v4.0"
30- else " v4.5"
31-
32- member __.DotNetFrameworkReferenceAssembliesRootDirectory =
33+ let fwOpt = supportedFrameworks|> Seq.tryFind( fun fw -> Directory.Exists( Path.Combine( root, fw) ))
34+ match fwOptwith
35+ | Some fw-> fw
36+ | None-> " v4.5"
37+
38+ member __.DotNetFrameworkReferenceAssembliesRootDirectory =
3339#if ! FX_ RESHAPED_ MSBUILD
3440if System.Environment.OSVersion.Platform= System.PlatformID.Win32NTthen
3541let PF =
@@ -41,7 +47,7 @@ let internal SimulatedMSBuildResolver =
4147#endif
4248" "
4349
44- member __.Resolve ( resolutionEnvironment , references , targetFrameworkVersion , targetFrameworkDirectories , targetProcessorArchitecture ,
50+ member __.Resolve ( resolutionEnvironment , references , targetFrameworkVersion , targetFrameworkDirectories , targetProcessorArchitecture ,
4551fsharpCoreDir , explicitIncludeDirs , implicitIncludeDir , logMessage , logWarningOrError ) =
4652
4753#if ! FX_ NO_ WIN_ REGISTRY