Skip to content

Commit be0dea2

Browse files
committed
Merge pull request #484 from rneatherway/projectcrackertooljson
Use JSON rather than binary serialization
2 parents 049389b + fd90e2c commit be0dea2

File tree

12 files changed

+35
-40
lines changed

12 files changed

+35
-40
lines changed

FSharp.Compiler.Service.sln

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fsc", "samples\FscExe\Fsc.f
5757
EndProject
5858
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharp_Analysis", "tests\service\data\CSharp_Analysis\CSharp_Analysis.csproj", "{887630A3-4B1D-40EA-B8B3-2D842E9C40DB}"
5959
EndProject
60-
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Service.ProjectCracker.Tool", "src\fsharp\FSharp.Compiler.Service.ProjectCracker.Tool\FSharp.Compiler.Service.ProjectCracker.Tool.fsproj", "{B1BDD96D-47E1-4E65-8107-FBAE23A06DB4}"
60+
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Service.ProjectCrackerTool", "src\fsharp\FSharp.Compiler.Service.ProjectCrackerTool\FSharp.Compiler.Service.ProjectCrackerTool.fsproj", "{B1BDD96D-47E1-4E65-8107-FBAE23A06DB4}"
6161
EndProject
6262
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Service.ProjectCracker", "src\fsharp\FSharp.Compiler.Service.ProjectCracker\FSharp.Compiler.Service.ProjectCracker.fsproj", "{893C3CD9-5AF8-4027-A667-21E62FC2C703}"
6363
EndProject

RELEASE_NOTES.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#### 2.0.0.0-beta
2-
* Feature #470, #478, #479 - Move ProjectCracker to separate nuget package and DLL, used ProjectCracker.Tool.exe to run
2+
* Feature #470, #478, #479 - Move ProjectCracker to separate nuget package and DLL, used ProjectCrackerTool.exe to run
33
* Feature #463 - Expose slot signatures of members in object expressions
44
* Feature #469, #475 - Add EvalExpressionNonThrowing, EvalInteractionNonThrowing, EvalScriptNonThrowing
55
* Fix #456 - FCS makes calls to kernel32.dll when running on OSX

nuget/projectcracker.template

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ iconurl https://raw.github.com/fsharp/FSharp.Compiler.Service/master/misc/logo.p
1212
tags
1313
F#, fsharp, msbuild, editor
1414
files
15-
../bin/v4.5/FSharp.Compiler.Service.ProjectCracker.Tool.exe ==> lib/net45
16-
../bin/v4.5/FSharp.Compiler.Service.ProjectCracker.Tool.?db ==> lib/net45
17-
../bin/v4.5/FSharp.Compiler.Service.ProjectCracker.Tool.exe.?db ==> lib/net45
15+
../bin/v4.5/FSharp.Compiler.Service.ProjectCrackerTool.exe ==> lib/net45
16+
../bin/v4.5/FSharp.Compiler.Service.ProjectCrackerTool.?db ==> lib/net45
17+
../bin/v4.5/FSharp.Compiler.Service.ProjectCrackerTool.exe.?db ==> lib/net45
1818
../bin/v4.5/FSharp.Compiler.Service.ProjectCracker.dll ==> lib/net45
1919
../bin/v4.5/FSharp.Compiler.Service.ProjectCracker.xml ==> lib/net45
2020
../bin/v4.5/FSharp.Compiler.Service.ProjectCracker.?db ==> lib/net45

src/fsharp/FSharp.Compiler.Service.ProjectCracker/FSharp.Compiler.Service.ProjectCracker.fsproj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,16 @@
4343
<Reference Include="System" />
4444
<Reference Include="System.Core" />
4545
<Reference Include="System.Numerics" />
46+
<Reference Include="System.Runtime.Serialization" />
47+
<Reference Include="System.Xml" />
4648
</ItemGroup>
4749
<ItemGroup>
50+
<Compile Include="..\FSharp.Compiler.Service.ProjectCrackerTool\ProjectCrackerOptions.fs">
51+
<Link>ProjectCrackerOptions.fs</Link>
52+
</Compile>
4853
<Compile Include="ProjectCracker.fs" />
4954
</ItemGroup>
5055
<ItemGroup>
51-
<ProjectReference Include="..\FSharp.Compiler.Service.ProjectCracker.Tool\FSharp.Compiler.Service.ProjectCracker.Tool.fsproj">
52-
<Name>FSharp.Compiler.Service.ProjectCracker.Tool</Name>
53-
<Project>{b1bdd96d-47e1-4e65-8107-fbae23a06db4}</Project>
54-
<Private>True</Private>
55-
</ProjectReference>
5656
<ProjectReference Include="..\FSharp.Compiler.Service\FSharp.Compiler.Service.fsproj">
5757
<Name>FSharp.Compiler.Service</Name>
5858
<Project>{2e4d67b4-522d-4cf7-97e4-ba940f0b18f3}</Project>

src/fsharp/FSharp.Compiler.Service.ProjectCracker/ProjectCracker.fs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
namespace Microsoft.FSharp.Compiler.SourceCodeServices
22

3+
open System.Runtime.Serialization.Json
4+
open System.Runtime
35
open System.Diagnostics
46
open System.Text
57
open System.IO
68
open System
7-
open System.Runtime
89

910
type ProjectCracker =
1011

@@ -14,7 +15,7 @@ type ProjectCracker =
1415
let enableLogging = defaultArg enableLogging true
1516
let logMap = ref Map.empty
1617

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 =
1819
let referencedProjects = Array.map (fun (a, b) -> a, convert b) opts.ReferencedProjectOptions
1920
logMap := Map.add opts.ProjectFile opts.LogOutput !logMap
2021
{ ProjectFileName = opts.ProjectFile
@@ -34,16 +35,15 @@ type ProjectCracker =
3435
let codebase = Path.GetDirectoryName(Uri(typeof<ProjectCracker>.Assembly.CodeBase).LocalPath)
3536

3637
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")
3839
p.StartInfo.Arguments <- arguments.ToString()
3940
p.StartInfo.UseShellExecute <- false
4041
p.StartInfo.CreateNoWindow <- true
4142
p.StartInfo.RedirectStandardOutput <- true
4243
ignore <| p.Start()
4344

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
4747

4848
convert opts, !logMap
4949

File renamed without changes.
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,18 @@
77
<SchemaVersion>2.0</SchemaVersion>
88
<ProjectGuid>b1bdd96d-47e1-4e65-8107-fbae23a06db4</ProjectGuid>
99
<OutputType>Exe</OutputType>
10-
<RootNamespace>FSharp.Compiler.Service.ProjectCracker.Tool</RootNamespace>
11-
<AssemblyName>FSharp.Compiler.Service.ProjectCracker.Tool</AssemblyName>
10+
<RootNamespace>FSharp.Compiler.Service.ProjectCrackerTool</RootNamespace>
11+
<AssemblyName>FSharp.Compiler.Service.ProjectCrackerTool</AssemblyName>
1212
<TargetFrameworkVersion Condition=" '$(TargetFrameworkVersion)' == '' ">v4.5</TargetFrameworkVersion>
1313
<TargetFSharpCoreVersion>4.3.0.0</TargetFSharpCoreVersion>
1414
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\..\</SolutionDir>
15-
<Name>FSharp.Compiler.Service.ProjectCracker.Tool</Name>
15+
<Name>FSharp.Compiler.Service.ProjectCrackerTool</Name>
1616
<OtherFlags>$(OtherFlags) --staticlink:FSharp.Core</OtherFlags>
1717
<NoWarn>$(NoWarn);40</NoWarn>
1818
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
19-
<Name>FSharp.Compiler.Service.ProjectCracker.Tool</Name>
19+
<Name>FSharp.Compiler.Service.ProjectCrackerTool</Name>
2020
<OutputPath>..\..\..\bin\$(TargetFrameworkVersion)</OutputPath>
21-
<DocumentationFile>..\..\..\bin\$(TargetFrameworkVersion)\FSharp.Compiler.Service.ProjectCracker.Tool.xml</DocumentationFile>
21+
<DocumentationFile>..\..\..\bin\$(TargetFrameworkVersion)\FSharp.Compiler.Service.ProjectCrackerTool.xml</DocumentationFile>
2222
</PropertyGroup>
2323
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
2424
<DebugSymbols>true</DebugSymbols>
@@ -56,6 +56,7 @@
5656
</Choose>
5757
<Import Project="$(FSharpTargetsPath)" />
5858
<ItemGroup>
59+
<Compile Include="ProjectCrackerOptions.fs" />
5960
<Compile Include="Program.fs" />
6061
<None Include="App.config" />
6162
</ItemGroup>

src/fsharp/FSharp.Compiler.Service.ProjectCracker.Tool/Program.fs renamed to src/fsharp/FSharp.Compiler.Service.ProjectCrackerTool/Program.fs

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace Microsoft.FSharp.Compiler.SourceCodeServices.ProjectCracker.Tool
1+
namespace Microsoft.FSharp.Compiler.SourceCodeServices.ProjectCrackerTool
22

33
open Microsoft.Build.Framework
44
open Microsoft.Build.Utilities
@@ -7,14 +7,7 @@ open System.IO
77
open System
88
open System.Reflection
99
open System.Runtime.Serialization.Formatters.Binary
10-
11-
type ProjectOptions =
12-
{
13-
ProjectFile: string
14-
Options: string[]
15-
ReferencedProjectOptions: (string * ProjectOptions)[]
16-
LogOutput: string
17-
}
10+
open System.Runtime.Serialization.Json
1811

1912
module Program =
2013
let runningOnMono =
@@ -450,7 +443,6 @@ module Program =
450443
if text then
451444
printfn "%A" opts
452445
else
453-
let fmt = new BinaryFormatter()
454-
use out = new StreamWriter(System.Console.OpenStandardOutput())
455-
fmt.Serialize(out.BaseStream, opts)
446+
let ser = new DataContractJsonSerializer(typeof<ProjectOptions>)
447+
ser.WriteObject(Console.OpenStandardOutput(), opts)
456448
ret
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace Microsoft.FSharp.Compiler.SourceCodeServices.ProjectCrackerTool
2+
3+
type ProjectOptions =
4+
{
5+
ProjectFile: string
6+
Options: string[]
7+
ReferencedProjectOptions: (string * ProjectOptions)[]
8+
LogOutput: string
9+
}

tests/service/ExprTests.fs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
#if INTERACTIVE
33
#r "../../bin/v4.5/FSharp.Compiler.Service.dll"
44
#r "../../bin/v4.5/FSharp.Compiler.Service.ProjectCracker.dll"
5-
#r "../../bin/v4.5/FSharp.Compiler.Service.ProjectCracker.Tool.exe"
65
#r "../../packages/NUnit/lib/nunit.framework.dll"
76
#load "FsUnit.fs"
87
#load "Common.fs"

0 commit comments

Comments
 (0)