示例#1
0
 public void Reload()
 {
     References.Clear();
     ProjectReferences.Clear();
     BuildConfigurations.Clear();
     _parse();
 }
示例#2
0
        public override bool Execute()
        {
            LoadConfiguration();

            List <string> targetFrameworks = new List <string>();

            foreach (string buildConfiguration in BuildConfigurations.Where(c => !string.IsNullOrWhiteSpace(c)))
            {
                // parse the specified configuration applying any independent properties from the BuildConfiguration.
                Configuration configuration = ConfigurationFactory.ParseConfiguration(buildConfiguration);

                if (!configuration.GetProperties().TryGetValue("TargetFramework", out string targetFramework))
                {
                    Log.LogError($"Could not derive a TargetFramework from BuildConfiguration '{buildConfiguration}'.");
                }

                if (!targetFrameworks.Contains(targetFramework))
                {
                    targetFrameworks.Add(targetFramework);
                }
            }

            TargetFrameworks = string.Join(";", targetFrameworks);

            return(!Log.HasLoggedErrors);
        }
        public override bool Execute()
        {
            LoadConfiguration();

            var supportedProjectConfigurations = new HashSet <Configuration>(
                BuildConfigurations.Where(c => !string.IsNullOrWhiteSpace(c)).Select(c => ConfigurationFactory.ParseConfiguration(c)),
                Configuration.CompatibleComparer);

            var buildConfiguration = ConfigurationFactory.ParseConfiguration(BuildConfiguration);

            var compatibleConfigurations = ConfigurationFactory.GetCompatibleConfigurations(buildConfiguration, DoNotAllowCompatibleValues);

            var bestConfiguration = compatibleConfigurations.FirstOrDefault(c => supportedProjectConfigurations.Contains(c));

            if (bestConfiguration == null)
            {
                Log.LogMessage($"Could not find any applicable configuration for '{buildConfiguration}' among projectConfigurations {string.Join(", ", supportedProjectConfigurations.Select(c => c.ToString()))}");
                Log.LogMessage(MessageImportance.Low, $"Compatible configurations: {string.Join(", ", compatibleConfigurations.Select(c => c.ToString()))}");
            }
            else
            {
                Log.LogMessage(MessageImportance.Low, $"Chose configuration {bestConfiguration}");
                BestConfiguration = new TaskItem(bestConfiguration.ToString(), (IDictionary)bestConfiguration.GetProperties());
            }

            return(!Log.HasLoggedErrors);
        }