// 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); }
public abstract bool TryResolveConfiguration(ProjectConfigurationProviderContext context, out ProjectConfiguration configuration);