diff --git a/src/fsharp/SimulatedMSBuildReferenceResolver.fs b/src/fsharp/SimulatedMSBuildReferenceResolver.fs index e74f2d49ced..1668cdc09d0 100644 --- a/src/fsharp/SimulatedMSBuildReferenceResolver.fs +++ b/src/fsharp/SimulatedMSBuildReferenceResolver.fs @@ -3,7 +3,7 @@ #if INTERACTIVE #load "../utils/ResizeArray.fs" "../absil/illib.fs" "../fsharp/ReferenceResolver.fs" #else -module internal Microsoft.FSharp.Compiler.SimulatedMSBuildReferenceResolver +module internal Microsoft.FSharp.Compiler.SimulatedMSBuildReferenceResolver #endif open System @@ -15,21 +15,27 @@ open Microsoft.FSharp.Compiler.ReferenceResolver open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library let internal SimulatedMSBuildResolver = + let supportedFrameworks = [| + "v4.7.2"; + "v4.7.1"; + "v4.7"; + "v4.6.2"; + "v4.6.1"; + "v4.6"; + "v4.5.1"; + "v4.5"; + "v4.0" + |] { new Resolver with - member x.HighestInstalledNetFrameworkVersion() = + member x.HighestInstalledNetFrameworkVersion() = + let root = x.DotNetFrameworkReferenceAssembliesRootDirectory - if Directory.Exists(Path.Combine(root,"v4.7.1")) then "v4.7.2" - elif Directory.Exists(Path.Combine(root,"v4.7.1")) then "v4.7.1" - elif Directory.Exists(Path.Combine(root,"v4.7")) then "v4.7" - elif Directory.Exists(Path.Combine(root,"v4.6.2")) then "v4.6.2" - elif Directory.Exists(Path.Combine(root,"v4.6.1")) then "v4.6.1" - elif Directory.Exists(Path.Combine(root,"v4.6")) then "v4.6" - elif Directory.Exists(Path.Combine(root,"v4.5.1")) then "v4.5.1" - elif Directory.Exists(Path.Combine(root,"v4.5")) then "v4.5" - elif Directory.Exists(Path.Combine(root,"v4.0")) then "v4.0" - else "v4.5" - - member __.DotNetFrameworkReferenceAssembliesRootDirectory = + let fwOpt = supportedFrameworks |> Seq.tryFind(fun fw -> Directory.Exists(Path.Combine(root, fw) )) + match fwOpt with + | Some fw -> fw + | None -> "v4.5" + + member __.DotNetFrameworkReferenceAssembliesRootDirectory = #if !FX_RESHAPED_MSBUILD if System.Environment.OSVersion.Platform = System.PlatformID.Win32NT then let PF = @@ -41,7 +47,7 @@ let internal SimulatedMSBuildResolver = #endif "" - member __.Resolve(resolutionEnvironment, references, targetFrameworkVersion, targetFrameworkDirectories, targetProcessorArchitecture, + member __.Resolve(resolutionEnvironment, references, targetFrameworkVersion, targetFrameworkDirectories, targetProcessorArchitecture, fsharpCoreDir, explicitIncludeDirs, implicitIncludeDir, logMessage, logWarningOrError) = #if !FX_NO_WIN_REGISTRY diff --git a/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj b/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj index 7af6871f026..2309c0f876d 100644 --- a/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj +++ b/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj @@ -24,10 +24,9 @@ - + @@ -72,23 +71,25 @@ CompilerService\ProjectAnalysisTests.fs + CompilerService\PerfTests.fs CompilerService\InteractiveCheckerTests.fs + CompilerService\CSharpProjectAnalysis.fs ---> CompilerService\ProjectOptionsTests.fs