ZXing.dll 是开源条码处理库 ZXing(Zebra Crossing)在 .NET 平台上的移植实现(通常由 ZXing.Net 项目编译产出)所生成的托管程序集。它以纯 C# 编写,不依赖本地原生组件,可被 WinForm、WPF、ASP.NET、控制台程序以及 Unity 等托管宿主直接引用,并通过多目标编译支持 .NET Framework、.NET Core、.NET Standard 与 Xamarin 等运行时。
这是该程序集最核心的能力。内部提供 BarcodeReader / BarcodeReaderGeneric 类,封装 MultiFormatReader,将传入的位图或像素亮度数组(LuminanceSource)依次经过灰度化、局部自适应二值化(HybridBinarizer、GlobalHistogramBinarizer)、条码定位图案搜索、透视校正、模块采样与 Reed-Solomon 纠错,最终还原出字符串或字节数据。支持 QR Code、Data Matrix、Aztec、PDF417、MaxiCode 等二维格式,以及 Code 128、Code 39/93、EAN-8/13、UPC-A/E、ITF、Codabar、RSS 等一维格式。
通过 BarcodeWriter / BarcodeWriterGeneric 及其关联的 MultiFormatWriter,可将任意文本、URL、vCard、Wi-Fi 配置等内容按指定格式渲染成位图或像素矩阵,并支持设置模块尺寸、边距、纠错等级(L/M/Q/H)、字符编码与前景/背景色等参数,常用于票据打印、页面内嵌二维码、标签批量生成等场景。
程序集内置二值化、灰度转换、旋转与倾斜校正、ROI 裁剪、多帧尝试等算法模块,即使图像存在光照不均、模糊、反光或一定角度畸变,也能提高首读率。同时支持只启用部分格式(PossibleFormats)以降低误识与耗时。
公开 IBarcodeReader、IBarcodeWriter、Reader、Writer、ResultPoint 等接口与抽象类型,便于自定义格式处理器、替换图像后端,或与 System.Drawing、SkiaSharp、WPF 等图形栈对接。
① 程序集加载失败。引用方在运行时抛出 FileNotFoundException 或“Could not load file or assembly 'zxing, Version=…'”,若仅在部分代码路径调用,则表现为特定功能触发瞬间崩溃。
② 类型与成员解析异常。已编译代码在 JIT 阶段找不到 BarcodeReader、BarcodeWriter 等类型,引发 TypeLoadException 或 MissingMethodException。
③ 扫码与制码功能全面失效。依赖它的收银、仓储、票据、门禁等模块无法识别或生成二维码、条形码,业务流程中断。
④ 连锁性故障。Web 应用返回 500 错误、WinForm 启动即退出、批处理任务异常终止,日志中大量出现 ReflectionTypeLoadException 与依赖链报错。
常见成因:部署时未随程序发布该文件、NuGet 包未还原、版本号与引用方不匹配、x86/x64 与 AnyCPU 目标不一致、杀毒软件误删或 ClickOnce/安装包打包遗漏。
排查方向:核对输出目录是否存在 zxing.dll、检查绑定重定向与版本策略、重新安装 ZXing.Net 包并确认其依赖(如 System.Drawing.Common)同时到位,必要时启用程序集绑定日志(Fusion Log)定位加载路径。