コード例 #1
0
 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(directDependency.Location)
                                    .SelectNotNull <AssemblyNameInfo, T4AssemblyReferenceInfo>(
             assemblyNameInfo =>
         {
             var resolver = BuildResolver(directDependency);
             resolver.ResolveAssembly(assemblyNameInfo, out var path, resolveContext);
             if (path == null)
             {
                 return(null);
             }
             return(new T4AssemblyReferenceInfo(assemblyNameInfo.FullName, path));
         }
             );
         ResolveTransitiveDependencies(indirectDependencies, resolveContext, destination);
     }
 }
コード例 #2
0
 public T4LowLevelReferenceExtractionManager(
     Lifetime lifetime,
     [NotNull] AssemblyInfoDatabase assemblyInfoDatabase
     )
 {
     AssemblyInfoDatabase = assemblyInfoDatabase;
     Cache = new RoslynMetadataReferenceCache(lifetime);
 }
コード例 #3
0
        private T4AssemblyReferenceInfo?Resolve([NotNull] FileSystemPath path)
        {
            var info = AssemblyInfoDatabase.GetAssemblyName(path);

            if (info == null)
            {
                return(null);
            }
            return(new T4AssemblyReferenceInfo(info.FullName, path));
        }