2010-04-10 14 views

Antwort

2

Sie können es im Code tun GetReferencedAssemblies() Montageverfahren mit:

public void GetDependentAssemblies(Assembly assembly) 
{ 
    var assembliesPaths = new[] { 
            @"c:\dlls\assembly1.dll", 
            @"c:\dlls\assembly2.dll" 
           }; 

    IEnumerable<Assembly> dependantAssemblies = assembliesPaths 
     .Select(path => Assembly.ReflectionOnlyLoadFrom(path)) 
     .Where(folderAssembly => 
        { 
         var fullNames = folderAssembly.GetReferencedAssemblies() 
                .Select(name => name.FullName); 
         return fullNames.Contains(assembly.GetName().FullName); 
        }); 
} 
+0

Danke. Siehe meine Antwort für eine kleine Optimierung. – ripper234

1

ich nur ein bisschen @ Elisas Antwort geändert:

public static IEnumerable<Assembly> GetDependentAssemblies(string assemblyName, string assembliesPath) 
    { 

     var assembliesPaths = Directory.GetFiles(assembliesPath, "*.dll"); 

     return assembliesPaths 
      .Select(Assembly.ReflectionOnlyLoadFrom) 
      .Where(folderAssembly => 
      { 
       var fullNames = folderAssembly.GetReferencedAssemblies() 
              .Select(name => name.FullName); 
       return fullNames.Where(x => 
         x.ToLower().Contains(assemblyName.ToLower())).Count() > 0; 
      }); 
    } 
Verwandte Themen