@@ -30,22 +30,6 @@ public async Task Build()
30
30
var dataSource = _pluginManager . Resolve < IDataSource > ( _project . DataSource . Name ) ;
31
31
await dataSource . InitData ( ) ;
32
32
33
- //foreach (var buildKV in _project.BuildTasks)
34
- //{
35
- // _logger.LogInformation($"-------- BuildTask:{buildKV.Key} Start! ---------");
36
- // var output = buildKV.Value.Output;
37
- // var buildContext = new BuildContext
38
- // {
39
- // PluginManager = _pluginManager,
40
- // Project = _project,
41
- // DataSource = dataSource,
42
- // BuildKey = buildKV.Key,
43
- // Build = buildKV.Value,
44
- // Output = output?.Copy()
45
- // };
46
- // await _pluginManager.Resolve<IBuildTask>(buildKV.Value.Type).Build(buildContext);
47
- // _logger.LogInformation($"-------- BuildTask:{buildKV.Key} End! ---------");
48
- //}
49
33
BuildContext [ ] contexts = _project . BuildTasks . Select ( d => new BuildContext
50
34
{
51
35
PluginManager = _pluginManager ,
@@ -57,21 +41,24 @@ public async Task Build()
57
41
} ) . ToArray ( ) ;
58
42
foreach ( var context in contexts )
59
43
{
60
- context . DependOn = contexts . Where ( d => d . Build . DependOn . Contains ( d . BuildKey ) ) . ToArray ( ) ;
44
+ context . DependOn = contexts . Where ( d => context . Build . DependOn != null && context . Build . DependOn . Contains ( d . BuildKey ) ) . ToArray ( ) ;
61
45
}
46
+
62
47
countdown . Reset ( ) ;
63
48
foreach ( var context in contexts )
64
49
{
65
- context . BuildTask = Task . Factory . StartNew ( this . BuildTask , null , TaskCreationOptions . LongRunning ) ;
50
+ context . BuildTask = Task . Factory . StartNew ( this . BuildTask , context , TaskCreationOptions . LongRunning ) ;
66
51
}
67
52
68
53
countdown . Signal ( ) ;
54
+
55
+ await Task . WhenAll ( contexts . Select ( d => d . BuildTask ) . ToArray ( ) ) ;
69
56
}
70
57
private async void BuildTask ( object obj )
71
58
{
72
- countdown . Wait ( ) ;
73
59
var context = ( BuildContext ) obj ;
74
60
_logger . LogInformation ( $ "-------- BuildTask:{ context . BuildKey } Wait! ---------") ;
61
+ countdown . Wait ( ) ;
75
62
//等待依赖任务
76
63
if ( context . DependOn != null )
77
64
{
0 commit comments