• 热门专题

获取一个DLL引用的所有程序集

作者:abbit8's Blog  发布日期:2012-07-18 11:14:35
Tag标签:DLL引用  程序集  
  • 你需要得到被一个特定的程序集所引用的所有程序集。这个信息可以告诉你这个程序集是否在引用一个或多个你所创建的程序集,或者你的程序集是否在引用其他特定的程序集。

    解决方法:

    使用Assembly.GetReferencedAssemblies方法去得到一个程序集所引用的程序集。例如:

     

    public static string[] BuildDependentAssemblyList(string path, List<string> assemblies)
    {
      // 维护一个本程序集需要的程序集列表
      if (assemblies == null)
        assemblies = new List<string>();
    
      // 是否已经包含这个路径的程序了
      if (assemblies.Contains(path) == true)     
    
        return (new string[0]);   
    
      Assembly asm = null;
      // 检查这个路径
        // 看是一个程序名还是一个路径
      if ((path.IndexOf(Path.DirectorySeparatorChar, 0, path.Length) != -1) || (path.IndexOf(Path.AltDirectorySeparatorChar, 0, path.Length) != -1)) {
         // 从这个路径加载程序集 www.it165.net
         asm = Assembly.ReflectionOnlyLoadFrom(path);
       }
      else
      {
        // 是一个程序集名称
        asm = Assembly.ReflectionOnlyLoad(path);
      }
    
      // 把程序集添加到列表中
      if (asm != null)
      {
      assemblies.Add(path);
      }
      // 获取所引用的程序集
      AssemblyName[] imports = asm.GetReferencedAssemblies();
    
      // 遍历所有的引用,并进行递归
      foreach (AssemblyName asmName in imports) {
         BuildDependentAssemblyList(asmName.FullName, assemblies);
      }
    
       string[] temp = new string[assemblies.Count];
       assemblies.CopyTo(temp, 0);
       return (temp);
     }
    
    

    这段代码返回一个包含有原程序集、所有其引用的程序集和这些程序集依赖的其他程序集的string数组。

延伸阅读:

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规