public override bool Execute() { _scripts = new List <ITaskItem>(); if (_webAppPartitioning == false) { return(ExecuteCore(String.Empty, _sources, _resources)); } else { CompilationGroup sharedGroup = new CompilationGroup(); Dictionary <string, CompilationGroup> compilationGroups = new Dictionary <string, CompilationGroup>(StringComparer.OrdinalIgnoreCase); if (_sources != null) { foreach (ITaskItem sourceItem in _sources) { string groupName = CompilationGroup.GetGroupName(sourceItem); CompilationGroup group; if (groupName == CompilationGroup.SharedGroupName) { group = sharedGroup; } else if (compilationGroups.TryGetValue(groupName, out group) == false) { group = new CompilationGroup(); compilationGroups[groupName] = group; } group.Sources.Add(sourceItem); } } if (_resources != null) { foreach (ITaskItem resourceItem in _resources) { string groupName = CompilationGroup.GetGroupName(resourceItem); CompilationGroup group; if (groupName == CompilationGroup.SharedGroupName) { group = sharedGroup; } else if (compilationGroups.TryGetValue(groupName, out group) == false) { group = new CompilationGroup(); compilationGroups[groupName] = group; } group.Resources.Add(resourceItem); } } foreach (KeyValuePair <string, CompilationGroup> group in compilationGroups) { group.Value.Sources.AddRange(sharedGroup.Sources); group.Value.Resources.AddRange(sharedGroup.Resources); bool success = ExecuteCore(group.Key, group.Value.Sources, group.Value.Resources); if (success == false) { return(false); } } return(true); } }
public override bool Execute() { _scripts = new List<ITaskItem>(); #if PARTITIONING if (_webAppPartitioning == false) { #endif return ExecuteCore(String.Empty, _sources, _resources); #if PARTITIONING } else { CompilationGroup sharedGroup = new CompilationGroup(); Dictionary<string, CompilationGroup> compilationGroups = new Dictionary<string, CompilationGroup>(StringComparer.OrdinalIgnoreCase); if (_sources != null) { foreach (ITaskItem sourceItem in _sources) { string groupName = CompilationGroup.GetGroupName(sourceItem); CompilationGroup group; if (groupName == CompilationGroup.SharedGroupName) { group = sharedGroup; } else if (compilationGroups.TryGetValue(groupName, out group) == false) { group = new CompilationGroup(); compilationGroups[groupName] = group; } group.Sources.Add(sourceItem); } } if (_resources != null) { foreach (ITaskItem resourceItem in _resources) { string groupName = CompilationGroup.GetGroupName(resourceItem); CompilationGroup group; if (groupName == CompilationGroup.SharedGroupName) { group = sharedGroup; } else if (compilationGroups.TryGetValue(groupName, out group) == false) { group = new CompilationGroup(); compilationGroups[groupName] = group; } group.Resources.Add(resourceItem); } } foreach (KeyValuePair<string, CompilationGroup> group in compilationGroups) { group.Value.Sources.AddRange(sharedGroup.Sources); group.Value.Resources.AddRange(sharedGroup.Resources); bool success = ExecuteCore(group.Key, group.Value.Sources, group.Value.Resources); if (success == false) { return false; } } return true; } #endif // PARTITIONING }