//加载配置文件
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. asp.net webapi 自托管插件式服务

    webapi问世已久,稀里糊涂的人哪它都当mvc来使,毕竟已mvc使用级别的经验就可以应对webapi. webapi和mvc在asp.net5时代合体了,这告诉我们,其实 它俩还是有区别的,要不现在 ...

  2. 给iOS开发新手送点福利,简述UISlide的属性和用法

    UISlide属性 1.   minimumValue  : 当值可以改变时,滑块可以滑动到最小位置的值,默认为0.0 _slider.minimumValue = 10.0; 2.   maximu ...

  3. Running Your App(运行你的应用程序)

    如果你按照上一篇课程创建了android项目,它将包含helloworld的源文件,让你可以立即运行你的应用程序. 你如何运行你的应用程序app依赖于两件事: 你是否拥有一台真正的android设备 ...

  4. 像素(PX)转其它长度单位(mm、cm...)

    今天想把px转成mm为单位,因像素跟其它单位比值的大小会跟屏幕设置的分辨率大小而不定,因此不能以固定的数值去计算. 解决方法是 页面上放一个高度为1mm的隐藏块 <div id="di ...

  5. Meet Solr

    you should have a solid understanding of Solr's query and indexing capabilities, including how to pe ...

  6. VLC播放RTSP视频延迟问题 (转)

    原帖地址:http://blog.chinaunix.net/uid-26611383-id-3755283.html ======================================== ...

  7. 迷你MVVM框架 avalonjs 学习教程1、引入avalon

    avalon是国内最强大的MVVM框架,没有之一,虽然淘宝KISSY团队也搞了两个MVVM框架,但都无疾而终.其他的MVVM框架都没几个.也只有外国人与像我这样闲的架构师才有时间钻研这东西.我很早之前 ...

  8. HBase安装和启动

    目录 认识HBase 前期准备 1. 解压HBase 2. 修改3个配置文件(配置文件目录:hbase-0.96.2-hadoop2/conf/) 3. 将hadoop的hdfs-site.xml和c ...

  9. 简单API练手:(1)复制自身程序到windows目录和系统目录下;(2)获得系统的相关信息。

    1.复制自身程序到windows目录和系统目录下: #include <windows.h> #include <stdio.h> #include <string.h& ...

  10. 博客搬家到blog.wu8685.com

    博客园算是我最开始来的地方了吧,当时还在学校,为了找工作会看一些理论方面的东西,所以写的都是偏理论的心得. 后来参加了工作,开始忙起来,也就没有时间来更新了.其实忙都是借口,这点还是需要反思的. 大概 ...