public override IEnumerable Resolve()

in plugin-dotnet-agent/src/main/csharp/TeamCity.Dotnet.TestSuppressor/TeamCity.Dotnet.TestSuppressor/Domain/Targeting/Strategies/SolutionTargetResolvingStrategy.cs [23:60]


    public override IEnumerable<(IFileSystemInfo, TargetType)> Resolve(string target)
    {
        _logger.LogInformation("Resolving target solution: {Target}", target);

        var solutionFile = TryToGetTargetFile(target);
        if (solutionFile == null)
        {
            _logger.LogWarning("Invalid solution target: {Target}", target);
            yield break;
        }

        var (solution, solutionParsingException) = ParseSolution(solutionFile.FullName);
        if (solutionParsingException != null)
        {
            _logger.LogWarning(solutionParsingException,"Target solution {TargetProject} is invalid", solutionFile.FullName);
            yield break;
        }

        foreach (var project in solution!.ProjectsInOrder)
        {
            if (project.ProjectType != SolutionProjectType.KnownToBeMSBuildFormat)
            {
                _logger.LogDebug("Skipping project of unknown type: {Project}", project.AbsolutePath);
                continue;
            }

            var projectFile = FileSystem.FileInfo.New(project.AbsolutePath);
            _logger.LogInformation("Resolved project by target solution: {Project}", projectFile.FullName);
            
            yield return (projectFile, TargetType.Project);
        }
        
        foreach (var msBuildBinlogFile in TryFindMsBuildBinlogFiles(solutionFile))
        {
            _logger.LogInformation("Resolved MSBuild .binlog file next to the target solution: {MsBuildBinlog}", msBuildBinlogFile.FullName);
            yield return (msBuildBinlogFile, TargetType.MsBuildBinlog);
        }
    }