首先新建一个AutofacModuleRegister类并继承Autofac.Module。

public class AutofacModuleRegister : Autofac.Module

 {

     protected override void Load(ContainerBuilder builder)

     {

         var basePath = AppContext.BaseDirectory;

         var servicesDllFile = Path.Combine(basePath, "Services.dll");

         var repositoryDllFile = Path.Combine(basePath, "Repository.dll");

         if (!(File.Exists(servicesDllFile) && File.Exists(repositoryDllFile)))

         {

             var msg = "Repository.dll和service.dll 丢失,因为项目解耦了,所以需要先F6编译,再F5运行,请检查 bin 文件夹,并拷贝。";

             Log.Error(msg);

             throw new Exception(msg);

         }

         // 获取 Service.dll 程序集服务,并注册

         var assemblysServices = Assembly.LoadFrom(servicesDllFile);

         builder.RegisterAssemblyTypes(assemblysServices).AsImplementedInterfaces().InstancePerDependency();

         // 获取 Repository.dll 程序集服务,并注册

         var assemblysRepository = Assembly.LoadFrom(repositoryDllFile);

         builder.RegisterAssemblyTypes(assemblysRepository).AsImplementedInterfaces().InstancePerDependency();

     }

 }

2.在program.cs中注册自定义的Autofac配置文件。

var builder = WebApplication.CreateBuilder(args);

// 1、配置host与容器

builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory())

            .ConfigureContainer<ContainerBuilder>(builder =>

            {

              builder.RegisterModule(new AutofacModuleRegister());

            });

源码地址:https://github.com/cplmlm/BasicFramework

.net 8项目通过Autofac获取程序集服务并注册的更多相关文章

  1. C#获取程序集的版本号和最后编译时间

    C#获取程序集的版本号:string ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToStrin ...

  2. C#反射实例应用--------获取程序集信息和通过类名创建类实例

    AppDomain.CurrentDomain.GetAssemblies();获取程序集,但是获取的只是已经加载的dll,引用的获取不到. System.Reflection.Assembly.Ge ...

  3. C#反射 获取程序集信息和通过类名创建类实例(转载)

    C#反射获取程序集信息和通过类名创建类实例 . System.Reflection 命名空间:包含通过检查托管代码中程序集.模块.成员.参数和其他实体的元数据来检索其相关信息的类型. Assembly ...

  4. Taurus.MVC 微服务框架 入门开发教程:项目集成:1、服务端:注册中心、网关(提供可运行程序下载)。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  5. WPF 获取程序路径的一些方法,根据程序路径获取程序集信息

    一.WPF 获取程序路径的一些方法方式一 应用程序域 //获取基目录即当前工作目录 string str_1 = System.AppDomain.CurrentDomain.BaseDirector ...

  6. C#中获取程序集版本号的方法

    我的方法: string version = Assembly.GetExecutingAssembly().GetName().Version.ToString();   方法一: public v ...

  7. [翻译]利用C#获取终端服务(Terminal Services)会话的闲置时间

    [翻译]利用C#获取终端服务(Terminal Services)会话的闲置时间 作者:Tuuzed(土仔)   发表于:2008年2月29日版权声明:可以任意转载,转载时请务必以超链接形式标明文章原 ...

  8. Axure如何建立共享项目、如何编辑共享项目、如何获取共享项目

    如果小伙伴是一名编程工作者,我们不可以避免的会和Axure这块软件握手,但是但一个项目需要协同操作的时候,就需要用到项目共享的功能.类似我们的svn,想起机房合作的时候,每天早上来到427的我们,打开 ...

  9. 获取Windows服务下当前路径的方法

    获取Windows服务下当前路径的方法 获取当前运行程序路径 包含exe Assembly.GetExecutingAssembly().Location; D:\xxxxxx\bin\Debug\x ...

  10. 获取AFP服务信息

    获取AFP服务信息   如果苹果系统开放TCP 548端口,说明其开启了AFP服务.这个时候,可以使用Nmap的afp-serverinfo脚本获取对应的服务信息.获取的信息包括服务名.机器类型.AF ...

随机推荐

  1. 从零开始学Flink:揭开实时计算的神秘面纱

    一.为什么需要Flink? 当你在电商平台秒杀商品时,1毫秒的延迟可能导致交易失败:当自动驾驶汽车遇到障碍物时,10毫秒的计算延迟可能酿成事故.这些场景揭示了一个残酷事实:数据的价值随时间呈指数级衰减 ...

  2. 数栈技术分享:利用 Atomic 构建 React 项目工作流,so easy!

    数栈是云原生-站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实时变 ...

  3. 蛟分承影,雁落忘归 —— 袋鼠云一站式全自动化运维管家 ChengYing(承影)正式开源

    ​ 原文地址: 交流蛟分承影,雁落忘归--袋鼠云一站式全自动化运维管家ChengYing(承影)正式开源 技术交流:30537511(钉钉群) 我们兴奋的向大家宣布一个好消息 DTstackCon新成 ...

  4. UFT 关于excel及datatable的处理

    1. excel 2. datatable

  5. 2025 智能制造必看!国内五大 MES 系统排名深度解析

    在 "中国制造 2025" 战略持续推进的背景下,制造企业数字化转型进入深水区.作为连接计划层与控制层的核心枢纽,MES(制造执行系统)已成为实现智能工厂的关键技术.2024 年国 ...

  6. C++ set/multiset容器 学习总结

    -------------------------------------set/multiset容器 set/multiset特性 set/multiset的特性是所有元素会根据元素的值自动进行排序 ...

  7. 开源 vGPU 方案 HAMi 原理分析 Part1:hami-device-plugin-nvidia 实现

    本文为开源的 vGPU 方案 HAMi 实现原理分析第一篇,主要分析 hami-device-plugin-nvidia 实现原理. 之前在 开源 vGPU 方案:HAMi,实现细粒度 GPU 切分 ...

  8. Codeforces Round #688 (Div. 2) ABC题解

    A. Cancel the Trains 签到题,看两边有无相同相对位置出发的,加入计数即可. view code #include<iostream> #include<strin ...

  9. Almost Isometric Mesh Parameterization through Abstract Domains

    简介 上一篇论文中的参数化没看懂看看相关的论文. 介绍 我们对于一个好的参数化被描述为 低扭曲的.保持角度和保持面积. 低复杂度的. TODO

  10. 基于微服务架构,轻量级的ESB平台

    ESB企业服务总线是传统中间件技术与XML.Web服务等技术结合的产物.ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素.但相比传统的单体架构的ESB企业服务总线系统,RestClou ...