public async ValueTask <TargetFrameworkMoniker> SelectTargetFrameworkAsync(IProject project, CancellationToken token) { if (project is null) { throw new ArgumentNullException(nameof(project)); } var appBase = _selectorOptions.TargetTfmSupport switch { UpgradeTarget.Current => _selectorOptions.Current, UpgradeTarget.Preview => _selectorOptions.Preview, UpgradeTarget.LTS => _selectorOptions.LTS, _ => _selectorOptions.LTS, }; var current = GetDefaultTargetFrameworkMoniker(project); if (!_comparer.TryParse(appBase, out var appBaseTfm)) { throw new InvalidOperationException("Invalid app base TFM"); } var updater = new FilterState(_comparer, project, current, appBaseTfm, _logger) { Components = await project.GetComponentsAsync(token).ConfigureAwait(false), }; foreach (var selector in _selectors) { selector.Process(updater); } return(updater.Current); }
public IEnumerator <TargetFrameworkMoniker> GetEnumerator() { foreach (var tfm in RawValues) { if (_comparer.TryParse(tfm, out var parsed)) { yield return(parsed); } } }