Skip to content

Commit e7ff236

Browse files
authored
Merge pull request #1320 from dsyme/fix-627
Fix 627 - Give proper intellisense for F# scripting for .NET Framework 4.6.1, 4.6
2 parents 442dc14 + e755aae commit e7ff236

File tree

5 files changed

+34
-24
lines changed

5 files changed

+34
-24
lines changed

src/fsharp/ReferenceResolution.fs

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -134,13 +134,18 @@ module internal MSBuildResolver =
134134
[<Literal>]
135135
let private Net451 = "v4.5.1"
136136

137-
/// The list of supported .NET Framework version numbers, using the monikers of the Reference Assemblies folder.
138-
let SupportedNetFrameworkVersions = set [ Net20; Net30; Net35; Net40; Net45; Net451; (*SL only*) "v5.0" ]
137+
//[<Literal>]
138+
//let private Net452 = "v4.5.2" // not available in Dev15 MSBuild version
139+
140+
[<Literal>]
141+
let private Net46 = "v4.6"
142+
143+
[<Literal>]
144+
let private Net461 = "v4.6.1"
139145

140146
/// Get the path to the .NET Framework implementation assemblies by using ToolLocationHelper.GetPathToDotNetFramework.
141147
/// This is only used to specify the "last resort" path for assembly resolution.
142148
let GetPathToDotNetFrameworkImlpementationAssemblies(v) =
143-
#if FX_ATLEAST_45
144149
let v =
145150
match v with
146151
| Net11 -> Some TargetDotNetFrameworkVersion.Version11
@@ -150,50 +155,44 @@ module internal MSBuildResolver =
150155
| Net40 -> Some TargetDotNetFrameworkVersion.Version40
151156
| Net45 -> Some TargetDotNetFrameworkVersion.Version45
152157
| Net451 -> Some TargetDotNetFrameworkVersion.Version451
158+
//| Net452 -> Some TargetDotNetFrameworkVersion.Version452 // not available in Dev15 MSBuild version
159+
| Net46 -> Some TargetDotNetFrameworkVersion.Version46
160+
| Net461 -> Some TargetDotNetFrameworkVersion.Version461
153161
| _ -> assert false; None
154162
match v with
155163
| Some v ->
156164
match ToolLocationHelper.GetPathToDotNetFramework v with
157165
| null -> []
158166
| x -> [x]
159167
| _ -> []
160-
#else
161-
// FX_ATLEAST_45 is not defined for step when we build compiler with proto compiler.
162-
ignore v
163-
[]
164-
#endif
165168

166169
let GetPathToDotNetFrameworkReferenceAssembliesFor40Plus(version) =
167-
#if FX_ATLEAST_45
168170
// starting with .Net 4.0, the runtime dirs (WindowsFramework) are never used by MSBuild RAR
169171
let v =
170172
match version with
171173
| Net40 -> Some TargetDotNetFrameworkVersion.Version40
172174
| Net45 -> Some TargetDotNetFrameworkVersion.Version45
173175
| Net451 -> Some TargetDotNetFrameworkVersion.Version451
176+
//| Net452 -> Some TargetDotNetFrameworkVersion.Version452 // not available in Dev15 MSBuild version
177+
| Net46 -> Some TargetDotNetFrameworkVersion.Version46
178+
| Net461 -> Some TargetDotNetFrameworkVersion.Version461
174179
| _ -> assert false; None // unknown version - some parts in the code are not synced
175180
match v with
176181
| Some v ->
177182
match ToolLocationHelper.GetPathToDotNetFrameworkReferenceAssemblies v with
178183
| null -> []
179184
| x -> [x]
180185
| None -> []
181-
#else
182-
// FX_ATLEAST_45 is not defined for step when we build compiler with proto compiler.
183-
ignore version
184-
[]
185-
#endif
186186

187187
/// Use MSBuild to determine the version of the highest installed framework.
188188
let HighestInstalledNetFrameworkVersionMajorMinor() =
189-
#if FX_ATLEAST_45
190-
if box (ToolLocationHelper.GetPathToDotNetFramework(TargetDotNetFrameworkVersion.Version451)) <> null then 4, Net451
189+
if box (ToolLocationHelper.GetPathToDotNetFramework(TargetDotNetFrameworkVersion.Version461)) <> null then 4, Net461
190+
elif box (ToolLocationHelper.GetPathToDotNetFramework(TargetDotNetFrameworkVersion.Version46)) <> null then 4, Net46
191+
// 4.5.2 enumeration is not available in Dev15 MSBuild version
192+
//elif box (ToolLocationHelper.GetPathToDotNetFramework(TargetDotNetFrameworkVersion.Version452)) <> null then 4, Net452
193+
elif box (ToolLocationHelper.GetPathToDotNetFramework(TargetDotNetFrameworkVersion.Version451)) <> null then 4, Net451
191194
elif box (ToolLocationHelper.GetPathToDotNetFramework(TargetDotNetFrameworkVersion.Version45)) <> null then 4, Net45
192195
else 4, Net40 // version is 4.0 assumed since this code is running.
193-
#else
194-
// FX_ATLEAST_45 is not defined is required for step when we build compiler with proto compiler and this branch should not be hit
195-
4, Net40
196-
#endif
197196

198197
/// Derive the target framework directories.
199198
let DeriveTargetFrameworkDirectories (targetFrameworkVersion:string, logMessage) =

src/fsharp/ReferenceResolution.fsi

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ module internal MSBuildResolver =
77

88
exception ResolutionFailure
99

10-
val SupportedNetFrameworkVersions : Set<string>
11-
1210
val HighestInstalledNetFrameworkVersionMajorMinor : unit -> int * string
1311
1412
/// Describes the location where the reference was found.

src/utils/reshapedmsbuild.fs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,9 @@ module internal MsBuildAdapters =
8383
| Version45 = 5
8484
| Version451 = 6
8585
| Version46 = 7
86-
| VersionLatest = 7 //TargetDotNetFrameworkVersion.Version46
86+
| Version461 = 8
87+
| Version452 = 9
88+
| VersionLatest = 8 //TargetDotNetFrameworkVersion.Version461
8789

8890
/// <summary>
8991
/// Used to specify the targeted bitness of the .NET Framework for some methods of ToolLocationHelper
@@ -110,7 +112,9 @@ module internal ToolLocationHelper =
110112
let dotNetFrameworkVersion40 = Version(4, 0)
111113
let dotNetFrameworkVersion45 = Version(4, 5)
112114
let dotNetFrameworkVersion451 = Version(4, 5, 1)
115+
let dotNetFrameworkVersion452 = Version(4, 5, 2)
113116
let dotNetFrameworkVersion46 = Version(4, 6)
117+
let dotNetFrameworkVersion461 = Version(4, 6, 1)
114118

115119
// visual studio versions.
116120
let visualStudioVersion100 = new Version(10, 0);
@@ -199,7 +203,9 @@ module internal ToolLocationHelper =
199203
| TargetDotNetFrameworkVersion.Version40 -> dotNetFrameworkVersion40
200204
| TargetDotNetFrameworkVersion.Version45 -> dotNetFrameworkVersion45
201205
| TargetDotNetFrameworkVersion.Version451 -> dotNetFrameworkVersion451
206+
| TargetDotNetFrameworkVersion.Version452 -> dotNetFrameworkVersion452
202207
| TargetDotNetFrameworkVersion.Version46 -> dotNetFrameworkVersion46
208+
| TargetDotNetFrameworkVersion.Version461 -> dotNetFrameworkVersion461
203209
| _ -> raise (getArgumentException version)
204210

205211
let complusInstallRoot = Environment.GetEnvironmentVariable("COMPLUS_INSTALLROOT")
@@ -735,8 +741,10 @@ module internal ToolLocationHelper =
735741
CreateDotNetFrameworkSpecForV4 dotNetFrameworkVersion40 visualStudioVersion100 // v4.0
736742
CreateDotNetFrameworkSpecForV4 dotNetFrameworkVersion45 visualStudioVersion110 // v4.5
737743
CreateDotNetFrameworkSpecForV4 dotNetFrameworkVersion451 visualStudioVersion120 // v4.5.1
744+
CreateDotNetFrameworkSpecForV4 dotNetFrameworkVersion452 visualStudioVersion150 // v4.5.2
738745
CreateDotNetFrameworkSpecForV4 dotNetFrameworkVersion46 visualStudioVersion140 // v4.6
739746
CreateDotNetFrameworkSpecForV4 dotNetFrameworkVersion46 visualStudioVersion150 // v4.6
747+
CreateDotNetFrameworkSpecForV4 dotNetFrameworkVersion461 visualStudioVersion150 // v4.6.1
740748
|]
741749
array.ToDictionary<DotNetFrameworkSpec, Version>(fun spec -> spec.Version)
742750

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*

vsintegration/tests/unittests/Tests.LanguageService.ParameterInfo.fs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,11 +430,15 @@ type UsingMSBuild() =
430430
match l with
431431
| [] -> System.String.Format((*Mark*)
432432
| x :: xs -> f xs"""
433+
// Note, 3 of these 8 are only available on .NET 4.6.1. On .NET 4.5 only 5 overloads are returned.
433434
this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Mark*)",[["format"; "arg0"];
434435
["format"; "args"];
435436
["provider"; "format"; "args"];
437+
["provider"; "format"; "arg0"];
436438
["format"; "arg0"; "arg1"];
437-
["format"; "arg0"; "arg1"; "arg2"]])
439+
["provider"; "format"; "arg0"; "arg1"];
440+
["format"; "arg0"; "arg1"; "arg2"];
441+
["provider"; "format"; "arg0"; "arg1"; "arg2"]])
438442

439443
(* --- Parameter Info Systematic Tests ------------------------------------------------- *)
440444

0 commit comments

Comments
 (0)