in Backend/RiderPlugin/ForTea.RiderPlugin/TemplateProcessing/CodeGeneration/Reference/Impl/T4LowLevelReferenceExtractionManager.cs [84:117]
private void ResolveTransitiveDependencies(
[NotNull] IEnumerable<T4AssemblyReferenceInfo> directDependencies,
[NotNull] IModuleReferenceResolveContext resolveContext,
[NotNull] IList<T4AssemblyReferenceInfo> destination
)
{
foreach (var directDependency in directDependencies)
{
if (destination.Any(it => it.FullName == directDependency.FullName)) continue;
destination.Add(directDependency);
var indirectDependencies = AssemblyInfoDatabase
.GetReferencedAssemblyNames(new AssemblyLocation(directDependency.Location))
.SelectNotNull<AssemblyNameInfo, T4AssemblyReferenceInfo>(
assemblyNameInfo =>
{
var resolver = BuildResolver(directDependency);
resolver.ResolveAssembly(assemblyNameInfo, out var path, resolveContext);
if (path == null)
{
var assemblyFromSolution = Solution.GetAllAssemblies()
.FirstOrDefault(assembly => assembly.AssemblyName == assemblyNameInfo);
if (assemblyFromSolution == null) return null;
return new T4AssemblyReferenceInfo(
assemblyFromSolution.FullAssemblyName,
assemblyFromSolution.Location.AssemblyPhysicalPath.NotNull()
);
}
return new T4AssemblyReferenceInfo(assemblyNameInfo.FullName, path.AssemblyPhysicalPath.NotNull());
}
);
ResolveTransitiveDependencies(indirectDependencies, resolveContext, destination);
}
}