1
1
#r @" ../Tools/FAKE/tools/FakeLib.dll"
2
+ #r @" ../Tools/FAKE.Dotnet/tools/Fake.Dotnet.dll"
3
+
2
4
open System
3
5
open Fake
4
6
open Fake.AssemblyInfoFile
7
+ open Fake.Dotnet
5
8
open Fake.Testing .XUnit2
6
9
7
10
let config = getBuildParamOrDefault " config" " Release"
@@ -31,11 +34,13 @@ let buildDir = baseDir @@ "build"
31
34
let landingDocsDir = baseDir @@ " docs" @@ " landing"
32
35
let refDocsDir = baseDir @@ " docs" @@ " reference"
33
36
let srcDir = baseDir @@ " src"
37
+ let testsDir = baseDir @@ " tests"
34
38
let toolsDir = baseDir @@ " tools"
35
39
36
40
let artifactsDir = baseDir @@ " artifacts"
37
41
let binDir = artifactsDir @@ " bin"
38
- let binDir45 = binDir @@ " net45"
42
+ let binDirNet45 = binDir @@ " net45"
43
+ let binDirNetStandard16 = binDir @@ " netstandard16"
39
44
let testResultsDir = artifactsDir @@ " test_results"
40
45
let tempDir = artifactsDir @@ " tmp"
41
46
@@ -46,9 +51,33 @@ let slnFile =
46
51
47
52
let asmFile = srcDir @@ " MongoDB.Shared" @@ " GlobalAssemblyInfo.cs"
48
53
let apiDocsFile = baseDir @@ " Docs" @@ " Api" @@ " CSharpDriverDocs.shfbproj"
49
- let installerFile = baseDir @@ " Installer" @@ " CSharpDriverInstaller.wixproj"
50
54
let versionFile = artifactsDir @@ " version.txt"
51
55
56
+ let dotNetSrcProjects = [
57
+ srcDir @@ " MongoDB.Bson.Dotnet" @@ " project.json"
58
+ srcDir @@ " MongoDB.Driver.Core.Dotnet" @@ " project.json"
59
+ srcDir @@ " MongoDB.Driver.Dotnet" @@ " project.json"
60
+ srcDir @@ " MongoDB.Driver.Legacy.Dotnet" @@ " project.json"
61
+ srcDir @@ " MongoDB.Driver.GridFS.Dotnet" @@ " project.json"
62
+ ]
63
+
64
+ let dotNetTestHelpersProjects = [
65
+ testsDir @@ " MongoDB.Bson.TestHelpers.Dotnet" @@ " project.json"
66
+ testsDir @@ " MongoDB.Driver.Core.TestHelpers.Dotnet" @@ " project.json"
67
+ testsDir @@ " MongoDB.Driver.TestHelpers.Dotnet" @@ " project.json"
68
+ testsDir @@ " MongoDB.Driver.Legacy.TestHelpers.Dotnet" @@ " project.json"
69
+ ]
70
+
71
+ let dotNetTestProjects = [
72
+ testsDir @@ " MongoDB.Bson.Tests.Dotnet" @@ " project.json"
73
+ testsDir @@ " MongoDB.Driver.Core.Tests.Dotnet" @@ " project.json"
74
+ testsDir @@ " MongoDB.Driver.Tests.Dotnet" @@ " project.json"
75
+ testsDir @@ " MongoDB.Driver.Legacy.Tests.Dotnet" @@ " project.json"
76
+ testsDir @@ " MongoDB.Driver.GridFS.Tests.Dotnet" @@ " project.json"
77
+ ]
78
+
79
+ let dotNetProjects = List.concat [ dotNetSrcProjects; dotNetTestHelpersProjects; dotNetTestProjects ]
80
+
52
81
type NuspecFile = { File : string ; Dependencies : string list ; Symbols : bool ; }
53
82
let nuspecFiles =
54
83
[ { File = buildDir @@ " MongoDB.Bson.nuspec" ; Dependencies = []; Symbols = true ; }
@@ -67,7 +96,7 @@ let apiDocsArtifactZipFile = artifactsDir @@ "ApiDocs-" + semVersion + "-html.zi
67
96
let refDocsArtifactZipFile = artifactsDir @@ " RefDocs-" + semVersion + " -html.zip"
68
97
let zipArtifactFile = artifactsDir @@ " CSharpDriver-" + semVersion + " .zip"
69
98
70
- MSBuildDefaults <- { MSBuildDefaults with Verbosity = Some( Minimal) }
99
+ MSBuildDefaults <- { MSBuildDefaults with Verbosity = Some( MSBuildVerbosity. Minimal) }
71
100
72
101
monoArguments <- " --runtime=v4.0.30319"
73
102
@@ -103,7 +132,7 @@ Target "AssemblyInfo" (fun _ ->
103
132
AssemblyMetadata = [ " githash" , githash]})
104
133
)
105
134
106
- Target " Build " ( fun _ ->
135
+ Target " BuildNet45 " ( fun _ ->
107
136
!! " ./**/packages.config"
108
137
|> Seq.iter ( RestorePackage ( fun x -> { x with OutputPath = baseDir @@ " packages" }))
109
138
@@ -115,25 +144,39 @@ Target "Build" (fun _ ->
115
144
properties <- properties @ [ " DefineConstants" , " MONO" ]
116
145
117
146
[ slnFile]
118
- |> MSBuild binDir45 " Build" properties
147
+ |> MSBuild binDirNet45 " Build" properties
119
148
|> Log " Build: "
120
149
)
121
150
122
- Target " Test" ( fun _ ->
123
- if not <| directoryExists binDir45 then new Exception( sprintf " Directory %s does not exist." binDir45) |> raise
151
+ Target " InstallDotnet" ( fun _ ->
152
+ DotnetCliInstall Preview2ToolingOptions
153
+ )
154
+
155
+ Target " BuildNetStandard16" ( fun _ ->
156
+ for project in dotNetProjects do
157
+ DotnetRestore id project
158
+ DotnetCompile ( fun c ->
159
+ { c with
160
+ Configuration = BuildConfiguration.Release
161
+ })
162
+ project
163
+ )
164
+
165
+ Target " TestNet45" ( fun _ ->
166
+ if not <| directoryExists binDirNet45 then new Exception( sprintf " Directory %s does not exist." binDirNet45) |> raise
124
167
ensureDirectory testResultsDir
125
168
126
- let mutable testsDir = !! ( binDir45 @@ " *Tests* .dll" )
169
+ let mutable testDlls = !! ( binDirNet45 @@ " *Tests.dll" )
127
170
if isMono then
128
- testsDir <- testsDir -- ( binDir45 @@ " *VB.Tests* .dll" )
171
+ testDlls <- testDlls -- ( binDirNet45 @@ " *VB.Tests.dll" )
129
172
130
173
let resultsOutputPath = testResultsDir @@ ( getBuildParamOrDefault " testResults" " test-results.xml" )
131
174
let includeTraits =
132
175
match getBuildParamOrDefault " Category" " " with
133
176
| " " -> []
134
177
| category -> [( " Category" , category)]
135
178
136
- testsDir
179
+ testDlls
137
180
|> xUnit2 ( fun p ->
138
181
{ p with
139
182
ErrorLevel = TestRunnerErrorLevel.Error
@@ -144,6 +187,13 @@ Target "Test" (fun _ ->
144
187
})
145
188
)
146
189
190
+ Target " TestNetStandard16" ( fun _ ->
191
+ for project in dotNetTestProjects do
192
+ let args = sprintf " test %s " project
193
+ let result = Dotnet DotnetOptions.Default args
194
+ if not result.OK then failwithf " dotnet test failed with code %i " result.ExitCode
195
+ )
196
+
147
197
Target " RefDocs" ( fun _ ->
148
198
DeleteFile refDocsArtifactZipFile
149
199
ensureDirectory tempDir
@@ -188,7 +238,7 @@ Target "ApiDocs" (fun _ ->
188
238
" HelpFileVersion" , version]
189
239
190
240
[ apiDocsFile]
191
- |> MSBuild binDir45 " " properties
241
+ |> MSBuild binDirNet45 " " properties
192
242
|> Log " Docs: "
193
243
194
244
Rename apiDocsArtifactFile ( tempDir @@ " CSharpDriverDocs.chm" )
@@ -208,21 +258,21 @@ Target "Zip" (fun _ ->
208
258
checkFileExists releaseNotesFile
209
259
210
260
let files =
211
- [ binDir45 @@ " MongoDB.Bson.dll"
212
- binDir45 @@ " MongoDB.Bson.pdb"
213
- binDir45 @@ " MongoDB.Bson.xml"
214
- binDir45 @@ " MongoDB.Driver.Core.dll"
215
- binDir45 @@ " MongoDB.Driver.Core.pdb"
216
- binDir45 @@ " MongoDB.Driver.Core.xml"
217
- binDir45 @@ " MongoDB.Driver.dll"
218
- binDir45 @@ " MongoDB.Driver.pdb"
219
- binDir45 @@ " MongoDB.Driver.xml"
220
- binDir45 @@ " MongoDB.Driver.GridFS.dll"
221
- binDir45 @@ " MongoDB.Driver.GridFS.pdb"
222
- binDir45 @@ " MongoDB.Driver.GridFS.xml"
223
- binDir45 @@ " MongoDB.Driver.Legacy.dll"
224
- binDir45 @@ " MongoDB.Driver.Legacy.pdb"
225
- binDir45 @@ " MongoDB.Driver.Legacy.xml"
261
+ [ binDirNet45 @@ " MongoDB.Bson.dll"
262
+ binDirNet45 @@ " MongoDB.Bson.pdb"
263
+ binDirNet45 @@ " MongoDB.Bson.xml"
264
+ binDirNet45 @@ " MongoDB.Driver.Core.dll"
265
+ binDirNet45 @@ " MongoDB.Driver.Core.pdb"
266
+ binDirNet45 @@ " MongoDB.Driver.Core.xml"
267
+ binDirNet45 @@ " MongoDB.Driver.dll"
268
+ binDirNet45 @@ " MongoDB.Driver.pdb"
269
+ binDirNet45 @@ " MongoDB.Driver.xml"
270
+ binDirNet45 @@ " MongoDB.Driver.GridFS.dll"
271
+ binDirNet45 @@ " MongoDB.Driver.GridFS.pdb"
272
+ binDirNet45 @@ " MongoDB.Driver.GridFS.xml"
273
+ binDirNet45 @@ " MongoDB.Driver.Legacy.dll"
274
+ binDirNet45 @@ " MongoDB.Driver.Legacy.pdb"
275
+ binDirNet45 @@ " MongoDB.Driver.Legacy.xml"
226
276
licenseFile
227
277
releaseNotesFile
228
278
apiDocsArtifactFile ]
@@ -283,11 +333,31 @@ Target "NoOp" DoNothing
283
333
Target " Docs" DoNothing
284
334
Target " Package" DoNothing
285
335
Target " Publish" DoNothing
336
+ Target " Build" DoNothing
337
+ Target " Test" DoNothing
286
338
287
339
" Clean"
288
340
==> " AssemblyInfo"
341
+
342
+ " AssemblyInfo"
343
+ ==> " BuildNet45"
344
+
345
+ " AssemblyInfo"
346
+ ==> " InstallDotnet"
347
+ ==> " BuildNetStandard16"
348
+
349
+ " BuildNet45"
289
350
==> " Build"
290
351
352
+ " BuildNetStandard16"
353
+ ==> " Build"
354
+
355
+ " TestNet45"
356
+ ==> " Test"
357
+
358
+ " TestNetStandard16"
359
+ ==> " Test"
360
+
291
361
" RefDocs"
292
362
==> " ApiDocs"
293
363
==> " Docs"
0 commit comments