Пример #1
0
        public static void CreateConfigurationsForAllProjectTargets(IEnumerable <string> targets, Project project)
        {
            Microsoft.VisualStudio.Shell.ThreadHelper.ThrowIfNotOnUIThread();

            if (targets == null || !targets.Any())
            {
                return;
            }

            //*****create a 'target-specific build' solution configuration if not available

            Solution solution = project.DTE.Solution;

            SolutionConfigurations solutionConfigurations      = solution.SolutionBuild.SolutionConfigurations;
            SolutionConfiguration2 targetSpecificConfiguration = solutionConfigurations.OfType <SolutionConfiguration2>()
                                                                 .Where(config => config.Name.Equals(targetBuildConfigName)).FirstOrDefault();

            if (targetSpecificConfiguration == null)
            {
                targetSpecificConfiguration = solutionConfigurations.Add(targetBuildConfigName, string.Empty, false) as SolutionConfiguration2;
                if (targetSpecificConfiguration == null)
                {
                    return;
                }
            }

            foreach (string target in targets)
            {
                CreateConfigurationsForTarget(target, project);
            }

            //***** set project configuration for solution configuration

            foreach (SolutionContext context in targetSpecificConfiguration.SolutionContexts)
            {
                if (context.ProjectName == project.UniqueName)
                {
                    if (context.ConfigurationName.Equals("Release - all Targets", StringComparison.OrdinalIgnoreCase) ||
                        context.ConfigurationName.Equals("Debug - all Targets", StringComparison.OrdinalIgnoreCase))
                    {
                        context.ConfigurationName = string.Format(releaseConfigurationNameRaw, targets.First());
                        break;
                    }
                }
            }
        }
Пример #2
0
        public AsyncCodeConfiguration ConfigureSolution(string solutionFilePath, Action <IFluentSolutionConfiguration> action)
        {
            if (solutionFilePath == null)
            {
                throw new ArgumentNullException(nameof(solutionFilePath));
            }
            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }
            if (!File.Exists(solutionFilePath))
            {
                throw new FileNotFoundException($"Solution not found. Path:'{solutionFilePath}'");
            }
            var solutionConfig = SolutionConfigurations.FirstOrDefault(o => o.Path == solutionFilePath);

            if (solutionConfig == null)
            {
                solutionConfig = new SolutionConfiguration(solutionFilePath);
                SolutionConfigurations.Add(solutionConfig);
            }
            action(solutionConfig);
            return(this);
        }