You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建WorksheetPart时触发OpenXML VerificationException问题排查

OpenXML迁移至.NET类库后触发VerificationException错误

问题详情

控制台应用中使用NuGet安装的3.0.2版本OpenXML运行代码完全正常,但将代码迁移到.NET类库项目(同样通过NuGet安装同版本OpenXML)并部署后,调用类库时抛出错误:

VerificationException: Method DocumentFormat.OpenXml.Packaging.OpenXmlPartContainer.AddNewPart: type argument 'DocumentFormat.OpenXml.Packaging.WorksheetPart' violates the constraint of type parameter 'T'

通过注释代码排查,发现报错时无法进入CreateExcel()方法,仅注释WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();这一行后就能正常步入方法,因此确定问题出在该行代码。

相关代码

internal static void CreateRawMtlExcel(List<RawMtl> Mtls, string OutputPath)
{
    using (SpreadsheetDocument package = SpreadsheetDocument.Create(OutputPath, SpreadsheetDocumentType.Workbook))
    {
        CreateExcel(package, Mtls);
    }
}

private static void CreateExcel(SpreadsheetDocument document, List<RawMtl> Mtls)
{
    WorkbookPart workbookPart = document.AddWorkbookPart();
    workbookPart.Workbook = new Workbook();
    WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>(); // 触发错误的行
    
    SheetData sheetData = new SheetData();
    worksheetPart.Worksheet = new Worksheet(sheetData);

    workbookPart.Workbook.Save();
}

解决方案

这类错误本质是程序集版本不兼容或加载冲突,可按以下步骤排查解决:

  • 统一OpenXML版本:确保调用类库的宿主项目(如原控制台应用)也安装了3.0.2版本的OpenXML,避免版本差异导致类型约束校验失败。
  • 清理重建解决方案:删除所有项目的bin、obj目录,清理NuGet缓存后重新编译,解决旧版本程序集残留问题。
  • 匹配目标框架:检查类库与宿主项目的目标框架是否兼容,尽量保持版本一致或确保类库框架版本低于等于宿主项目。
  • 添加程序集绑定重定向:若存在间接依赖的不同版本OpenXML,在宿主项目的配置文件中添加绑定重定向,强制统一使用3.0.2版本:
    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="DocumentFormat.OpenXml" publicKeyToken="8fb06cb64d019a17" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-3.0.2.0" newVersion="3.0.2.0" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>
    
  • 重装NuGet包:卸载类库中的OpenXML包,清理缓存后重新安装,确保包文件完整无损坏。

内容的提问来源于stack exchange,提问作者sdMike77

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 15:32:30