OpenXML SDK在.NET应用中触发InvalidProgramException求助
.NET 9中使用OpenXML SDK触发InvalidProgramException问题
环境与问题
- .NET 9应用,使用OpenXML SDK 2.9.1版本,所有NuGet包均为最新版
- 调用自定义方法
AddColumnValue时触发错误,错误信息:
Common Language Runtime detected an invalid program. - System.InvalidProgramException: Common Language Runtime detected an invalid program.
出错代码
private void AddColumnValue(string columnValue, Row row) { Cell cell = new Cell(); cell.DataType = CellValues.String; cell.CellValue = new CellValue(columnValue); row.AppendChild(cell); }
已排查操作
- 推测错误由
Row参数触发 - 清理所有二进制文件(包括NuGet缓存)
- 更换多个.NET版本测试:.NET 8、.NET 6、.NET Standard 2.1/2.0
- 更换不同版本的OpenXML SDK
- 重写代码后仍抛出相同异常,目前无解决思路
堆栈跟踪
Common Language Runtime detected an invalid program. - System.InvalidProgramException: Common Language Runtime detected an invalid program. at HcmErpOpenXmlHelpers.Services.ExcelWriterService.AddColumnValue(String columnValue, Row row) at HcmErpOpenXmlHelpers.Services.ExcelWriterService.AddRow(String[] values) in C:\tfs\HcmErpUtil\HcmErpUtilOpenXmlHelpers2\Services\ExcelWriterService.cs:line 98 at HcmErpOpenXmlHelpers.Services.ExcelWriterService.GenerateExcelFile[T](String fileName, List`1 list, String[] headers, Func`4 valueAdapterFunc) in C:\tfs\HcmErpUtil\HcmErpUtilOpenXmlHelpers2\Services\ExcelWriterService.cs:line 69 at HcmErpUtilQlikviewFileUpdater.Services.QlikViewFileUpdateService.UpdateQlikViewFileAsync(String csvFileName, String excelFileName, CancellationToken cancellationToken) in C:\tfs\HcmErpUtil\HcmErpUtilQlikviewFileUpdater\Services\QlikViewFileUpdateService.cs:line 66 at HcmErpUtilFacade.UseCases.UpdateQlikViewFile(String csvFileName, String excelFileName, CancellationToken cancellationToken) in C:\tfs\HcmErpUtil\HcmErpUtilFacade\UseCases.cs:line 90 at HcmErpUtilConsole.HostedService.<>c__DisplayClass14_0.<SetupUpdateQlikViewFiles>b__0() in C:\tfs\HcmErpUtil\HcmErpUtilConsole\HostedService.cs:line 254 at McMaster.Extensions.CommandLineUtils.CommandLineApplication.<>c__DisplayClass143_0.<OnExecute>b__0(CancellationToken _) at McMaster.Extensions.CommandLineUtils.CommandLineApplication.ExecuteAsync(String[] args, CancellationToken cancellationToken) at HcmErpUtilConsole.HostedService.ExecuteAsync(CancellationToken unusedCancellationToken) in C:\tfs\HcmErpUtil\HcmErpUtilConsole\HostedService.cs:line 66
备注:除AddColumnValue方法含Row参数外,堆栈跟踪仅涉及自有代码。
内容的提问来源于stack exchange,提问作者Soeren Dalby
相关产品推荐
相关产品推荐

