架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 270|回复: 0

[资料] .Net Core 获取项目所有程序集,排除Microsoft、Nuget包

[复制链接]
发表于 2019-11-20 10:04:14
zu
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Reflection;
  5. using System.Text;
  6. using System.Runtime.Loader;
  7. using Microsoft.Extensions.DependencyModel;

  8. namespace Itsvse.Common
  9. {
  10.     public class RuntimeHelper
  11.     {
  12.         /// <summary>
  13.         /// 获取项目程序集,排除所有的系统程序集(Microsoft.***、System.***等)、Nuget下载包
  14.         /// </summary>
  15.         /// <returns></returns>
  16.         public static IList<Assembly> GetAllAssemblies(string projectName=null)
  17.         {
  18.             var list = new List<Assembly>();
  19.             var deps = DependencyContext.Default;
  20.             var libs = deps.CompileLibraries.Where(lib => !lib.Serviceable && lib.Type != "package");//排除所有的系统程序集、Nuget下载包
  21.             if (projectName != null) libs = libs.Where(x => x.Name.StartsWith(projectName));
  22.             foreach (var lib in libs)
  23.             {
  24.                 try
  25.                 {
  26.                     var assembly = AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(lib.Name));
  27.                     list.Add(assembly);
  28.                 }
  29.                 catch (Exception)
  30.                 {
  31.                     // ignored
  32.                 }
  33.             }
  34.             return list;
  35.         }
  36.     }
  37. }
复制代码






上一篇:在MVC 中使用 autofac 实现自动注册
下一篇:Docker 安装运行 Redis 缓存
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2020-1-25 12:54

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表