public override IEnumerable Resolve()

in plugin-dotnet-agent/src/main/csharp/TeamCity.Dotnet.TestSuppressor/TeamCity.Dotnet.TestSuppressor/Domain/Targeting/Strategies/ProjectTargetResolvingStrategy.cs [24:74]


    public override IEnumerable<(IFileSystemInfo, TargetType)> Resolve(string target)
    {
        _logger.LogInformation("Resolving target project: {Target}", target);
        
        var targetPathSystemInfo = TryToGetTargetFile(target);
        if (targetPathSystemInfo == null)
        {
            _logger.LogWarning("Invalid project target: {Target}", target);
            yield break;
        }
        
        var projectFile = (IFileInfo) targetPathSystemInfo;
        
        var outputAssemblyPathsResult = GetOutputAssemblyPaths(projectFile!);
        if (outputAssemblyPathsResult.IsError)
        {
            _logger.LogWarning(
                outputAssemblyPathsResult.ErrorValue,
                "Target project {TargetProject} is invalid: {Reason}",
                projectFile!.FullName,
                outputAssemblyPathsResult.ErrorValue.Message
            );
            yield break;
        }

        foreach (var outputAssemblyPath in outputAssemblyPathsResult.Value)
        {
            var assemblyFileInfoResult = FileSystem.TryGetFileInfo(outputAssemblyPath);
            if (assemblyFileInfoResult.IsError)
            {
                _logger.LogWarning(
                    assemblyFileInfoResult.ErrorValue,
                    "Evaluated target project output file {TargetProjectOutputFile} not found: {Reason}",
                    projectFile!.FullName,
                    assemblyFileInfoResult.ErrorValue.Message
                );
                yield break;
            }
        
            var assemblyFileInfo = assemblyFileInfoResult.Value;
        
            _logger.LogInformation("Resolved assembly by target project: {Assembly}", assemblyFileInfo.FullName);
            yield return (assemblyFileInfo, TargetType.Assembly);
        }
        
        foreach (var msBuildBinlogFile in TryFindMsBuildBinlogFiles(projectFile))
        {
            _logger.LogInformation("Resolved MSBuild .binlog file next to the target project: {MsBuildBinlog}", msBuildBinlogFile.FullName);
            yield return (msBuildBinlogFile, TargetType.MsBuildBinlog);
        }
    }