通过Nuget安装DocumentFormat.OpenXML后无法加载System.IO.Packaging如何解决
问题解决步骤
这个问题是DocumentFormat.OpenXML版本与项目目标框架不兼容、引用来源冲突导致的,具体解决方式如下:
- 第一步:确认项目目标框架,选择对应引用方式
- 若项目基于.NET Framework 4.x开发:System.IO.Packaging默认内置在WindowsBase程序集中,不需要单独安装对应的Nuget包。你当前的报错大概率是安装的OpenXML版本过高,高版本OpenXML会强制依赖Nuget分发的System.IO.Packaging,和内置在WindowsBase中的版本发生冲突。只需要将DocumentFormat.OpenXML降级到2.12.0及以下的兼容版本即可解决。
- 若项目基于.NET Core/.NET 5及以上版本开发:不要添加WindowsBase程序集引用(该程序集是.NET Framework专属),直接在Nuget包管理器中安装与OpenXML版本匹配的System.IO.Packaging包即可,你之前执行
update-package报错是因为你没有先安装这个包,直接执行重装命令才会失败。
- 第二步:清理冲突引用
不要同时保留WindowsBase引用和System.IO.Packaging的Nuget包,二者只留一个即可,否则会出现编译时引用正常、运行时版本不匹配的报错。 - 第三步:缓存清理(若上述操作后仍报错)
关闭Visual Studio,删除项目根目录下的packages文件夹、.vs隐藏文件夹,重启VS后重新还原Nuget包即可解决残留缓存导致的引用异常。
内容的提问来源于stack exchange,提问作者sigil
相关产品推荐
相关产品推荐

