| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | 
							- using System.Reflection;
 
- public static class AppDomainExtents
 
- {
 
-     /// <summary>
 
-     /// 获取AppDomain所有程序集(先扫描exe目录,然后递归检测exe的依赖)
 
-     /// </summary>
 
-     /// <param name="domain"></param>
 
-     /// <param name="prefix">程序集前缀</param>
 
-     /// <remarks>如果某个dll被反射加载,同时程序被发布为自包含的单个exe程序,这种dll目前检测不到</remarks>
 
-     /// <returns></returns>
 
-     public static Assembly[] GetAllAssemblies(this AppDomain domain, string prefix = "ips")
 
-     {
 
-         Dictionary<string, Assembly> dic = new Dictionary<string, Assembly>();
 
-         var exe = Assembly.GetEntryAssembly();
 
-         dic[exe.FullName] = exe;
 
-         var files = Directory.GetFiles(domain.BaseDirectory, prefix + "*.dll", SearchOption.AllDirectories);
 
-         foreach (var item in files)
 
-         {
 
-             //如果一个dll在项目中被反射加载,这种情况需要需要从目录中检索dll
 
-             var assembly = Assembly.LoadFrom(item);
 
-             dic[assembly.FullName] = assembly;
 
-         }
 
-         domain.GetAssemblies().ToList().ForEach(i =>
 
-         {
 
-             if (dic.ContainsKey(i.FullName)) return;
 
-             if (i.FullName != null && i.FullName.ToUpper().StartsWith(prefix.ToUpper()))
 
-                 dic[i.FullName] = i;
 
-             GetReferanceAssemblies(i, dic, prefix);
 
-         });
 
-         var res = dic.Values.OrderBy(p => p.FullName).ToArray();
 
-         return res;
 
-     }
 
-     static void GetReferanceAssemblies(Assembly assembly, Dictionary<string, Assembly> dic, string prefix)
 
-     {
 
-         assembly.GetReferencedAssemblies().ToList().ForEach(i =>
 
-         {
 
-             if (dic.ContainsKey(i.FullName)) return;
 
-             if (i.Name == null || !i.Name.ToUpper().StartsWith(prefix.ToUpper())) return;
 
-             var ass = Assembly.Load(i);
 
-             dic[i.FullName] = ass;
 
-             GetReferanceAssemblies(ass, dic, prefix);
 
-         });
 
-     }
 
- }
 
 
  |