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);
}
}