示例#1
0
        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
        }