@@ -41,10 +41,7 @@ public ProjectCreator TryBuild(bool restore, string target, out bool result)
41
41
}
42
42
}
43
43
44
- lock ( BuildManager . DefaultBuildManager )
45
- {
46
- result = Project . Build ( target ) ;
47
- }
44
+ Build ( target . ToArrayWithSingleElement ( ) , out result , out _ , out _ ) ;
48
45
49
46
return this ;
50
47
}
@@ -85,10 +82,7 @@ public ProjectCreator TryBuild(bool restore, string target, out bool result, out
85
82
buildOutput = BuildOutput . Create ( ) ;
86
83
}
87
84
88
- lock ( BuildManager . DefaultBuildManager )
89
- {
90
- result = Project . Build ( target , buildOutput . AsEnumerable ( ) ) ;
91
- }
85
+ Build ( target . ToArrayWithSingleElement ( ) , buildOutput , out result , out _ ) ;
92
86
93
87
return this ;
94
88
}
@@ -121,10 +115,7 @@ public ProjectCreator TryBuild(bool restore, out bool result)
121
115
}
122
116
}
123
117
124
- lock ( BuildManager . DefaultBuildManager )
125
- {
126
- result = Project . Build ( ) ;
127
- }
118
+ Build ( null , out result , out _ , out _ ) ;
128
119
129
120
return this ;
130
121
}
@@ -163,10 +154,7 @@ public ProjectCreator TryBuild(bool restore, out bool result, out BuildOutput bu
163
154
buildOutput = BuildOutput . Create ( ) ;
164
155
}
165
156
166
- lock ( BuildManager . DefaultBuildManager )
167
- {
168
- result = Project . Build ( buildOutput . AsEnumerable ( ) ) ;
169
- }
157
+ Build ( null , buildOutput , out result , out _ ) ;
170
158
171
159
return this ;
172
160
}
@@ -236,12 +224,7 @@ public ProjectCreator TryBuild(bool restore, string[] targets, out bool result,
236
224
buildOutput = BuildOutput . Create ( ) ;
237
225
}
238
226
239
- lock ( BuildManager . DefaultBuildManager )
240
- {
241
- ProjectInstance projectInstance = Project . CreateProjectInstance ( ) ;
242
-
243
- result = projectInstance . Build ( targets , buildOutput . AsEnumerable ( ) , out targetOutputs ) ;
244
- }
227
+ Build ( targets , buildOutput , out result , out targetOutputs ) ;
245
228
246
229
return this ;
247
230
}
@@ -352,5 +335,45 @@ public ProjectCreator TryRestore(out bool result, out BuildOutput buildOutput, o
352
335
353
336
return this ;
354
337
}
338
+
339
+ private void Build ( string [ ] targets , out bool result , out BuildOutput buildOutput , out IDictionary < string , TargetResult > targetOutputs )
340
+ {
341
+ buildOutput = BuildOutput . Create ( ) ;
342
+
343
+ Build ( targets , buildOutput , out result , out targetOutputs ) ;
344
+ }
345
+
346
+ private void Build ( string [ ] targets , BuildOutput buildOutput , out bool result , out IDictionary < string , TargetResult > targetOutputs )
347
+ {
348
+ lock ( BuildManager . DefaultBuildManager )
349
+ {
350
+ BuildRequestData restoreRequest = new BuildRequestData (
351
+ ProjectInstance ,
352
+ targetsToBuild : targets ?? ProjectInstance . DefaultTargets . ToArray ( ) ,
353
+ hostServices : null ,
354
+ flags : BuildRequestDataFlags . ReplaceExistingProjectInstance ) ;
355
+
356
+ BuildParameters buildParameters = new BuildParameters
357
+ {
358
+ Loggers = new List < Framework . ILogger > ( ProjectCollection . Loggers . Concat ( buildOutput . AsEnumerable ( ) ) ) ,
359
+ } ;
360
+
361
+ BuildManager . DefaultBuildManager . BeginBuild ( buildParameters ) ;
362
+ try
363
+ {
364
+ BuildSubmission buildSubmission = BuildManager . DefaultBuildManager . PendBuildRequest ( restoreRequest ) ;
365
+
366
+ BuildResult buildResult = buildSubmission . Execute ( ) ;
367
+
368
+ result = buildResult . OverallResult == BuildResultCode . Success ;
369
+
370
+ targetOutputs = buildResult . ResultsByTarget ;
371
+ }
372
+ finally
373
+ {
374
+ BuildManager . DefaultBuildManager . EndBuild ( ) ;
375
+ }
376
+ }
377
+ }
355
378
}
356
379
}
0 commit comments