Skip to content

Commit 345bdae

Browse files
committed
implement GAC search
1 parent 6204900 commit 345bdae

File tree

1 file changed

+41
-24
lines changed

1 file changed

+41
-24
lines changed

src/fsharp/ReferenceResolver.fs

Lines changed: 41 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -198,31 +198,8 @@ let SimulatedMSBuildResolver =
198198
// | None -> ()
199199
results.ToArray() }
200200

201-
#if INTERACTIVE
202-
SimulatedMSBuildResolver.DotNetFrameworkReferenceAssembliesRootDirectory
203-
SimulatedMSBuildResolver.HighestInstalledNetFrameworkVersion()
204-
205-
let fscoreDir =
206-
if System.Environment.OSVersion.Platform = System.PlatformID.Win32NT then // file references only valid on Windows
207-
let PF =
208-
match Environment.GetEnvironmentVariable("ProgramFiles(x86)") with
209-
| null -> Environment.GetEnvironmentVariable("ProgramFiles") // if PFx86 is null, then we are 32-bit and just get PF
210-
| s -> s
211-
PF + @"\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.4.0.0"
212-
else
213-
System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
214-
215-
let resolve s =
216-
SimulatedMSBuildResolver.Resolve(ResolutionEnvironment.CompileTimeLike,[| for a in s -> (a, "") |],"v4.5.1", [SimulatedMSBuildResolver.DotNetFrameworkReferenceAssembliesRootDirectory + @"\v4.5.1" ],"", "", fscoreDir,[],__SOURCE_DIRECTORY__,ignore, (fun _ _ -> ()), (fun _ _-> ()))
217-
218-
resolve ["System"; "mscorlib"; "mscorlib.dll"; "FSharp.Core"; "FSharp.Core.dll"; "Microsoft.SqlServer.Dmf.dll"; "Microsoft.SqlServer.Dmf" ]
219-
220-
resolve [ "FSharp.Core, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" ]
221-
222-
resolve [ "EventViewer, Version=6.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" ]
223-
#endif
224-
225201
let GetDefaultResolver(msbuildEnabled: bool, msbuildVersion: string option) =
202+
#if !RESHAPED_MSBUILD
226203
let msbuildEnabled = msbuildEnabled && false
227204
let msbuildVersion = defaultArg msbuildVersion "12"
228205
let tryMSBuild v =
@@ -245,4 +222,44 @@ let GetDefaultResolver(msbuildEnabled: bool, msbuildVersion: string option) =
245222
match (if msbuildEnabled && msbuildVersion <> "12" then tryMSBuild "12" else None) with
246223
| Some r -> r
247224
| None ->
225+
#endif
248226
SimulatedMSBuildResolver
227+
228+
229+
#if INTERACTIVE
230+
// Some manual testing
231+
SimulatedMSBuildResolver.DotNetFrameworkReferenceAssembliesRootDirectory
232+
SimulatedMSBuildResolver.HighestInstalledNetFrameworkVersion()
233+
234+
let fscoreDir =
235+
if System.Environment.OSVersion.Platform = System.PlatformID.Win32NT then // file references only valid on Windows
236+
let PF =
237+
match Environment.GetEnvironmentVariable("ProgramFiles(x86)") with
238+
| null -> Environment.GetEnvironmentVariable("ProgramFiles") // if PFx86 is null, then we are 32-bit and just get PF
239+
| s -> s
240+
PF + @"\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.4.0.0"
241+
else
242+
System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
243+
244+
let resolve s =
245+
SimulatedMSBuildResolver.Resolve(ResolutionEnvironment.CompileTimeLike,[| for a in s -> (a, "") |],"v4.5.1", [SimulatedMSBuildResolver.DotNetFrameworkReferenceAssembliesRootDirectory + @"\v4.5.1" ],"", "", fscoreDir,[],__SOURCE_DIRECTORY__,ignore, (fun _ _ -> ()), (fun _ _-> ()))
246+
247+
// Resolve partial name
248+
resolve ["FSharp.Core" ]
249+
250+
// Resolve partial name
251+
resolve ["FSharp.Core.dll" ]
252+
253+
// Resolve from reference assemblies
254+
resolve ["System"; "mscorlib"; "mscorlib.dll" ]
255+
256+
// Resolve from Registry AssemblyFolders
257+
resolve ["Microsoft.SqlServer.Dmf.dll"; "Microsoft.SqlServer.Dmf" ]
258+
259+
// Resolve exact version of FSharp.Core
260+
resolve [ "FSharp.Core, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" ]
261+
262+
// Resolve from GAC:
263+
resolve [ "EventViewer, Version=6.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" ]
264+
#endif
265+

0 commit comments

Comments
 (0)