//加载配置文件
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
ConfigurationManager.Configuration = builder.Build();

#region 反射加载程序集dll到运行时,.net core 2.0不支持引用第三方DLL直接加载 TODO 升级2.0.3 或者Nuget加载
Assembly entry = Assembly.GetEntryAssembly();
string dir = Path.GetDirectoryName(entry.Location);
var dllPath = dir + "\\MongoRepository.Net45.dll";
AssemblyLoadContext.Default.LoadFromAssemblyPath(dllPath);
#endregion

//注册IOC=Autofac  类

public class IocManager

{

private static ILifetimeScope _container;

public static void Initialize(params string[] assemblyNamePattens)

{

ContainerBuilder builder = new ContainerBuilder();

_container = builder.Build();

Initialize(_container, assemblyNamePattens);

}

public static void Initialize(ILifetimeScope container, params string[] assemblyNamePattens)

{

container.Update(builder =>

{

//运行绝对路径=AppDomain.CurrentDomain.BaseDirectory

Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll")

.Where(it => Regex.IsMatch(it, $@"(OA|{assemblyNamePattens.Join("|")})\.[^\\]*\.dll"))

.Each(it => AppDomain.CurrentDomain.Load(Path.GetFileNameWithoutExtension(it)));

//注册IOC

var assembiles = AppDomain.CurrentDomain.GetAssemblies();

//组件筛选使用

/* var assembiles = AppDomain.CurrentDomain.GetAssemblies()//GetReferencingAssemblies()
                        .Where(it => Regex.IsMatch(Path.GetFileNameWithoutExtension(it.Location) + ".dll",
                        $@"(OA|{assemblyNamePattens.Join("|")})\.[^\\]*\.dll")).ToArray(); */

builder.RegisterAssemblyTypes(assembiles)

.Except<IDependencySingleton>()

.Except<IDependencyRequestSingleton>()

.As<IDependency>().AsSelf().AsImplementedInterfaces();

builder.RegisterAssemblyTypes(assembiles)

.Except<IDependencyRequestSingleton>()

.As<IDependencySingleton>().AsSelf().AsImplementedInterfaces().SingleInstance();

builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies())

.As<IDependencyRequestSingleton>().AsSelf().AsImplementedInterfaces()

.InstancePerLifetimeScope();

});

}

public static ILifetimeScope GetContainer()

{

return _container;

}

public static void SetContainer(ILifetimeScope container)
       {
             _container = container;
       }

}

C# 加载配置文件的更多相关文章

  1. spring加载配置文件

    spring加载配置文件 1.把applicationContext.xml直接放在WEB-INF/classes下,spring会采用默认的加载方式2.采用在web.xml中配置ContextLoa ...

  2. spring-自动加载配置文件\使用属性文件注入

    在上一篇jsf环境搭建的基础上 , 加入spring框架 , 先看下目录结构 src/main/resources 这个source folder 放置web项目所需的主要配置,打包时,会自动打包到W ...

  3. powershell创建并加载配置文件

    $pshome :powershell的主目录 $profile :显示 Windows PowerShell 配置文件的路径 test-path $profile :确定是否已经在系统上创建了 Wi ...

  4. java加载配置文件

    有时候一些变量可能会变,但直接写在程序代码中不好,因为有时候需要改的时候要改动源代码,这时候可以使用配置文件来管理.比如数据库中的端口和密码. 1. 把.properties配置文件放在src目录下. ...

  5. 【Nutch2.2.1源代码分析之4】Nutch加载配置文件的方法

    小结: (1)在nutch中,一般通过ToolRunner来运行hadoop job,此方法可以方便的通过ToolRunner.run(Configuration conf,Tool tool,Str ...

  6. Java中加载配置文件的集中方式,以及利用ClassLoader加载文件 .

    我们往常进行文件的加载的时候 用到的都是  FileInputStream进行 文件的加载比如下面一个例子 : InputStream in=FileInputStream("1.prope ...

  7. java动态加载配置文件

    最近项目中需要做定时任务,即定时数据库的备份.定时时间用户可以在界面中配置,要求配置修改好立即生效. 想不到什么好办法.下面是一种实现思路 把用户配置的时间存到properties配置文件中,定时任务 ...

  8. java动态加载配置文件(申明:来源于网络)

    java动态加载配置文件 地址:http://blog.csdn.net/longvs/article/details/9361449

  9. nginx-启动|关闭|重新加载配置文件的命令

    1.1 进入操作目录 D: cd D:\NginxTest\nginx-1.10.2 1.2 启动指令 nginx -c conf\nginx.conf 1.3 关闭指令 nginx -s stop ...

  10. tmux不自动加载配置文件.tmux.conf

    /********************************************************************** * tmux不自动加载配置文件.tmux.conf * ...

随机推荐

  1. 修改jvm xms参数

    http://hi.baidu.com/200770842223/item/9358aad4f3194e1a20e2501b http://www.cnblogs.com/mingforyou/arc ...

  2. flask的第一个例子

    对django有了一些基础了解,现在看看flask,然后如果有时间可以看看 web.py 那么咱们开始flask的第一个例子 先安装flask pip install flask 看官方的教程 我也把 ...

  3. 「小程序JAVA实战」小程序的springboot后台拦截器(61)

    转自:https://idig8.com/2018/09/24/xiaochengxujavashizhanxiaochengxudespringboothoutailanjieqi60/ 之前咱们把 ...

  4. Nginx 系统维护配置

    转自:http://blog.csdn.net/kkgbn/article/details/52153383 tomcat关闭后 请求返回502状态码 error_page /.html; locat ...

  5. Remove “Quick Access” entry in Eclipse Juno

    Here is a quick hack which doesn't require any plugin installation, instead you just need to add a f ...

  6. 15 并发编程-(IO模型)

    一.IO模型介绍 1.阻塞与非阻塞指的是程序的两种运行状态 阻塞:遇到IO就发生阻塞,程序一旦遇到阻塞操作就会停在原地,并且立刻释放CPU资源 非阻塞(就绪态或运行态):没有遇到IO操作,或者通过某种 ...

  7. mysql 塞数据

    ./mysql_.py -H109.105.4.65 -P32773 -uroot -proot.123 --database=test_database --number=10 sysbench - ...

  8. python初步要点

    [python初步要点] #! 用于告诉操作系统去哪里找Python解释器为运行您的程序. 1.print 的输出有以下2种形式,""%()的形式类似于C的printf. 要注意逗 ...

  9. FD_CLOEXEC

    [FD_CLOEXEC] 通过fcntl设置FD_CLOEXEC标志有什么用? close on exec, 意为如果对描述符设置了FD_CLOEXEC,使用execl执行的程序里,此描述符被关闭,不 ...

  10. nat转发

    http://www.revsys.com/writings/quicktips/nat.html https://www.alibabacloud.com/zh/product/nat?spm=a3 ...