string FindItemConfiguration(List <IExtendedDataItem> chain, string configId)
 {
     for (int n = 0; n < chain.Count - 1; n++)
     {
         CombineConfigurationSet configs = (CombineConfigurationSet)chain[n].ExtendedProperties ["Configurations"];
         if (configs == null)
         {
             return(null);
         }
         SolutionItem         item          = (SolutionItem)chain [n + 1];
         CombineConfiguration combineConfig = configs.GetConfig(configId);
         if (combineConfig == null)
         {
             monitor.ReportWarning("Configuration '" + configId + "' not found in solution item '" + item.Name + "'.");
             return(null);
         }
         string mappedConfigId = combineConfig.GetMappedConfig(item.Name);
         if (mappedConfigId == null)
         {
             return(null);
         }
         if (mappedConfigId != string.Empty)
         {
             configId = mappedConfigId;
         }
     }
     return(configId);
 }
        CombineConfigurationSet CreateCombineConfigurationSet(Solution sol, bool isRoot)
        {
            CombineConfigurationSet cset = new CombineConfigurationSet();

            foreach (SolutionConfiguration conf in sol.Configurations)
            {
                CombineConfiguration cc = new CombineConfiguration();
                cc.Name = conf.Id;
                if (isRoot)
                {
                    cc.SolutionConfiguration = conf;
                }
                cset.Configurations.Add(cc);
            }
            return(cset);
        }
        void CreateCombineConfigurations(SolutionFolder folder)
        {
            IDictionary extendedProperties = folder.ExtendedProperties;

            CombineConfigurationSet configs = CreateCombineConfigurationSet(folder.ParentSolution, folder.IsRoot);

            configs.Active = folder.ParentSolution.DefaultConfigurationId;

            extendedProperties ["Configurations"] = configs;

            foreach (SolutionItem it in folder.Items)
            {
                if (it is SolutionFolder)
                {
                    foreach (SolutionConfiguration conf in folder.ParentSolution.Configurations)
                    {
                        CombineConfiguration      cc = configs.GetConfig(conf.Id);
                        CombineConfigurationEntry ce = new CombineConfigurationEntry(it.Name, true, conf.Id);
                        cc.Entries.Add(ce);
                    }
                    CreateCombineConfigurations((SolutionFolder)it);
                }
                else if (it is SolutionEntityItem)
                {
                    SolutionEntityItem sit = (SolutionEntityItem)it;
                    foreach (SolutionConfiguration conf in folder.ParentSolution.Configurations)
                    {
                        CombineConfiguration       cc  = configs.GetConfig(conf.Id);
                        SolutionConfigurationEntry sce = conf.GetEntryForItem(sit);
                        CombineConfigurationEntry  ce  = null;
                        if (sce == null)
                        {
                            ce = new CombineConfigurationEntry(it.Name, true, conf.Id);
                        }
                        else
                        {
                            ce = new CombineConfigurationEntry(it.Name, sce.Build, sce.ItemConfiguration);
                        }
                        cc.Entries.Add(ce);
                    }
                }
            }
        }
		CombineConfigurationSet CreateCombineConfigurationSet (Solution sol, bool isRoot)
		{
			CombineConfigurationSet cset = new CombineConfigurationSet ();
			foreach (SolutionConfiguration conf in sol.Configurations) {
				CombineConfiguration cc = new CombineConfiguration ();
				cc.Name = conf.Id;
				if (isRoot)
					cc.SolutionConfiguration = conf;
				cset.Configurations.Add (cc);
			}
			return cset;
		}