安装

July 25, 2026 · View on GitHub

AspectCore 按职责拆分成多个 NuGet 包:核心库负责 AOP 与容器,集成包负责对接各种宿主和第三方容器,编译期引擎单独发布。本页说明每个包的用途、支持的目标框架,以及如何按场景选包。

核心库

用途何时需要
AspectCore.Abstractions契约层:AspectContextIInterceptorAbstractInterceptorAttributeIAspectConfigurationIServiceContext 等抽象与特性。通常由其他包间接引入;只想引用契约做扩展时直接安装。
AspectCore.CoreDynamicProxy 运行时引擎 + 内置 IoC 容器(ServiceContext / IServiceResolver)。需要独立使用动态代理或内置容器时。
AspectCore.Extensions.Reflection独立的高性能反射扩展(GetReflector()),不依赖 AOP。只需要快速反射调用时可单独使用。

集成包

用途
AspectCore.Extensions.DependencyInjectionMicrosoft.Extensions.DependencyInjection 集成:ConfigureDynamicProxy(...) 配置拦截器、DynamicProxyServiceProviderFactory 接管容器。
AspectCore.Extensions.Autofac与 Autofac 集成:ContainerBuilder.RegisterDynamicProxy(...)
AspectCore.Extensions.Windsor与 Castle Windsor 集成:container.AddAspectCoreFacility(...)
AspectCore.Extensions.LightInject与 LightInject 集成:container.RegisterDynamicProxy(...)
AspectCore.Extensions.Hosting与泛型主机集成:IHostBuilder.UseServiceContext() / UseDynamicProxy()
AspectCore.Extensions.AspNetCoreASP.NET Core 场景下的扩展支持。
AspectCore.Extensions.ConfigurationIConfiguration 注入配置值:AddConfigurationInject()
AspectCore.Extensions.DataValidation数据校验基础设施(抽象与拦截器)。
AspectCore.Extensions.DataAnnotations基于 System.ComponentModel.DataAnnotations 的校验实现:AddDataAnnotations(...)
AspectCore.Extensions.CastleCompatCastle DynamicProxy 兼容层(shim),为存量 Castle 代码提供向 AspectCore 渐进迁移的适配。

编译期引擎

用途
AspectCore.SourceGenerator编译期 Source Generator AOP 引擎,以 analyzer 方式引用,在编译时生成代理类型。属于显式 opt-in,默认不改变运行时行为。

Source Generator 是运行时 DynamicProxy 之外的另一套引擎。两者的差异与选型见两套引擎对比与选型

目标框架

包类别目标框架
核心库与大部分集成包(AspectCore.AbstractionsAspectCore.CoreAspectCore.Extensions.ReflectionAspectCore.Extensions.DependencyInjection、Autofac/Windsor/LightInject/Hosting、Configuration、DataAnnotations 等)net10.0net9.0net8.0net6.0
AspectCore.Extensions.AspNetCorenet10.0net9.0net8.0net6.0
AspectCore.Extensions.CastleCompatnet10.0net9.0net8.0
AspectCore.SourceGeneratornetstandard2.0(analyzer 约定)

以上框架列表来自各包 .csprojTargetFrameworks。核心库与集成包最低支持 net6.0AspectCore.SourceGenerator 作为 Roslyn 分析器需以 netstandard2.0 供编译器加载。

安装命令

以 .NET CLI 为例(Package Manager 控制台把 dotnet add package 换成 Install-Package 即可):

# 与 Microsoft.Extensions.DependencyInjection 集成(最常见的入口)
dotnet add package AspectCore.Extensions.DependencyInjection

# 仅使用动态代理或内置容器
dotnet add package AspectCore.Core

# 仅使用高性能反射扩展
dotnet add package AspectCore.Extensions.Reflection

AspectCore.Extensions.DependencyInjection 会通过依赖自动引入 AspectCore.CoreAspectCore.Abstractions,一般无需单独安装。

如何选包

  • ASP.NET Core / 泛型主机应用,使用内置容器:装 AspectCore.Extensions.DependencyInjection。这是绝大多数场景的起点,直接看快速上手
  • 已经在用 Autofac / Windsor / LightInject:装对应的集成包,见第三方容器
  • 不需要 DI,只想手动创建代理对象:装 AspectCore.Core,用 ProxyGeneratorBuilder 独立生成代理。
  • 只想要比原生反射更快的反射调用:单独装 AspectCore.Extensions.Reflection,见反射扩展
  • 需要编译期代理、降低代理生成期动态代码依赖:额外引用 AspectCore.SourceGenerator,见Source Generator 编译时引擎

下一步

  • 快速上手 — 五分钟跑通第一个拦截器。
  • 核心概念 — 理解拦截器、代理、切面上下文等术语。