// Internal for testing
        internal static ProjectConfiguration GetProjectConfiguration(
            ProjectInstance projectInstance,
            IEnumerable <ProjectConfigurationProvider> projectConfigurationProviders)
        {
            if (projectInstance == null)
            {
                throw new ArgumentNullException(nameof(projectInstance));
            }

            if (projectConfigurationProviders == null)
            {
                throw new ArgumentNullException(nameof(projectConfigurationProviders));
            }

            var projectCapabilities = projectInstance
                                      .GetItems(ProjectCapabilityItemType)
                                      .Select(capability => capability.EvaluatedInclude)
                                      .ToList();

            var context = new ProjectConfigurationProviderContext(projectCapabilities, projectInstance);

            foreach (var projectConfigurationProvider in projectConfigurationProviders)
            {
                if (projectConfigurationProvider.TryResolveConfiguration(context, out var configuration))
                {
                    return(configuration);
                }
            }

            if (FallbackConfigurationProvider.Instance.TryResolveConfiguration(context, out var fallbackConfiguration))
            {
                return(fallbackConfiguration);
            }

            return(null);
        }
Ejemplo n.º 2
0
 public abstract bool TryResolveConfiguration(ProjectConfigurationProviderContext context, out ProjectConfiguration configuration);