System.IO.Compression.Brotli.dll 是 .NET 生态中承载 Brotli 无损压缩算法的托管程序集,自 .NET Core 2.1 / .NET Standard 2.1 起纳入基础类库,.NET Framework 则需通过 NuGet 包 System.IO.Compression.Brotli 引入。它实现了 RFC 7932 定义的 Brotli 数据格式,并对外暴露 BrotliStream、BrotliEncoder、BrotliDecoder 等类型,为上层提供统一的流式压缩与解压缩能力。其内部通过 P/Invoke 调用 System.IO.Compression.Native(即 libbrotli)完成熵编码、静态字典匹配与滑动窗口计算,托管层主要负责缓冲区管理、参数校验与异常包装。
BrotliStream 支持 Compress 与 Decompress 两种模式,可按数据块写入与读取;BrotliEncoder.TryCompress 与 BrotliDecoder.TryDecompress 适合一次性处理小体量字节数组。窗口大小与质量等级可通过 CompressionLevel 选取,用于平衡压缩率与 CPU 开销。典型场景包括:HTTP 响应采用 Content-Encoding: br、CDN 对静态资源预压缩生成 .br 文件、日志与冷数据归档落盘,以及 WebAssembly 程序集的分发传输等。
运行时找不到程序集时抛出 FileNotFoundException 或 FileLoadException;版本或公钥标记不匹配时出现 BadImageFormatException。
凡引用 BrotliStream 的代码路径,在首次加载类型阶段即触发 TypeLoadException,导致初始化中断。
ASP.NET Core 启用 ResponseCompression 的 br 提供程序时,请求会在压缩环节失败并返回 500。
未随发布目录复制该程序集(如缺少 NuGet 引用或 CopyLocalLockFileAssemblies 未生效)时,表现为本地调试正常、部署后崩溃。
基于反射动态解析 Brotli 类型的插件体系会因加载失败而静默降级,压缩功能退化为未压缩或回退到 GZip。
通过 NuGet 显式引用对应包,确认输出目录中存在该 DLL 及其原生依赖 System.IO.Compression.Native;使目标框架版本与运行时保持一致,避免多版本冲突;在部署流水线中加入程序集清单校验,可提前发现缺失。