1
1
namespace Microsoft.FSharp.Compiler.SourceCodeServices
2
2
3
+ open System.Runtime .Serialization .Json
4
+ open System.Runtime
3
5
open System.Diagnostics
4
6
open System.Text
5
7
open System.IO
6
8
open System
7
- open System.Runtime
8
9
9
10
type ProjectCracker =
10
11
@@ -14,7 +15,7 @@ type ProjectCracker =
14
15
let enableLogging = defaultArg enableLogging true
15
16
let logMap = ref Map.empty
16
17
17
- let rec convert ( opts : Microsoft.FSharp.Compiler.SourceCodeServices.ProjectCracker.Tool .ProjectOptions ) : FSharpProjectOptions =
18
+ let rec convert ( opts : Microsoft.FSharp.Compiler.SourceCodeServices.ProjectCrackerTool .ProjectOptions ) : FSharpProjectOptions =
18
19
let referencedProjects = Array.map ( fun ( a , b ) -> a, convert b) opts.ReferencedProjectOptions
19
20
logMap := Map.add opts.ProjectFile opts.LogOutput ! logMap
20
21
{ ProjectFileName = opts.ProjectFile
@@ -34,16 +35,15 @@ type ProjectCracker =
34
35
let codebase = Path.GetDirectoryName( Uri( typeof< ProjectCracker>. Assembly.CodeBase) .LocalPath)
35
36
36
37
let p = new System.Diagnostics.Process()
37
- p.StartInfo.FileName <- Path.Combine( codebase, " FSharp.Compiler.Service.ProjectCracker.Tool .exe" )
38
+ p.StartInfo.FileName <- Path.Combine( codebase, " FSharp.Compiler.Service.ProjectCrackerTool .exe" )
38
39
p.StartInfo.Arguments <- arguments.ToString()
39
40
p.StartInfo.UseShellExecute <- false
40
41
p.StartInfo.CreateNoWindow <- true
41
42
p.StartInfo.RedirectStandardOutput <- true
42
43
ignore <| p.Start()
43
44
44
- let fmt = new Serialization.Formatters.Binary.BinaryFormatter()
45
- let opts = fmt.Deserialize( p.StandardOutput.BaseStream) :?> Microsoft.FSharp.Compiler.SourceCodeServices.ProjectCracker.Tool.ProjectOptions
46
- p.WaitForExit()
45
+ let ser = new System.Runtime.Serialization.Json.DataContractJsonSerializer( typeof< Microsoft.FSharp.Compiler.SourceCodeServices.ProjectCrackerTool.ProjectOptions>)
46
+ let opts = ser.ReadObject( p.StandardOutput.BaseStream) :?> Microsoft.FSharp.Compiler.SourceCodeServices.ProjectCrackerTool.ProjectOptions
47
47
48
48
convert opts, ! logMap
49
49
0 commit comments