コード例 #1
0
ファイル: Lookup.cs プロジェクト: enricosada/sln
        /// <summary>
        /// Removes items from the group from the table.
        /// Assumes all the items in the group have the same, provided, type.
        /// </summary>
        private void RemoveItemsFromTableWithBackup(Hashtable table, string name, BuildItemGroup group)
        {
            BuildItemGroup existing = (BuildItemGroup)table[name];

            if (existing != null)
            {
                existing.RemoveItemsWithBackup(group);
            }
        }
コード例 #2
0
        /// <summary>
        /// Merge the current scope down into the base scope. This means applying the adds, removes, modifies, and sets
        /// directly into the item and property tables in this scope.
        /// </summary>
        private void MergeScopeIntoLastScope()
        {
            // End of the line for this object: we are done with add tables, and we want to expose our
            // adds to the world
            if (PrimaryAddTable != null)
            {
                foreach (DictionaryEntry entry in PrimaryAddTable)
                {
                    SecondaryTable = Utilities.CreateTableIfNecessary(SecondaryTable);
                    ImportItemsIntoTable(SecondaryTable, (string)entry.Key, (BuildItemGroup)entry.Value);
                    projectItems.ImportItems((BuildItemGroup)entry.Value);
                }
            }

            if (PrimaryRemoveTable != null)
            {
                foreach (DictionaryEntry entry in PrimaryRemoveTable)
                {
                    SecondaryTable = Utilities.CreateTableIfNecessary(SecondaryTable);
                    RemoveItemsFromTableWithBackup(SecondaryTable, (string)entry.Key, (BuildItemGroup)entry.Value);
                    projectItems.RemoveItemsWithBackup((BuildItemGroup)entry.Value);
                }
            }

            if (PrimaryModifyTable != null)
            {
                foreach (KeyValuePair <string, Dictionary <BuildItem, Dictionary <string, string> > > entry in PrimaryModifyTable)
                {
                    SecondaryTable = Utilities.CreateTableIfNecessary(SecondaryTable);
                    ApplyModificationsToTable(SecondaryTable, entry.Key, entry.Value);
                    // Don't have to touch projectItems -- it contains the same set of items
                }
            }

            if (PrimaryPropertySets != null)
            {
                SecondaryProperties = CreatePropertyGroupIfNecessary(SecondaryProperties);

                // At present, this automatically does a backup of any
                // original persisted property because we're using Output properties.
                SecondaryProperties.ImportProperties(PrimaryPropertySets);
            }
        }