首页 > 解决方案 > 当我在 azure devops 管道中运行构建(vstest)时无法打开 Excel

问题描述

我正在使用 Microsoft.Office.Interop.Excel 打开 excel 工作簿来为给定项目执行一些自动化操作。当我运行我的构建时,我遇到了这个错误

System.Runtime.InteropServices.COMException:检索具有 CLSID {00024500-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败,原因是以下错误:80040154 未注册类(来自 HRESULT 的异常:0x80040154 (REGDB_E_CLASSNOTREG))。

这来自我的视觉工作室中的这段代码。excel.Application x1app = new excel.Application();

我可以在本地运行测试,但是当我在 azure devops 中运行它时,它不起作用。我相信这是因为 devops 内部没有 excel,因此无法执行代码。

  1. 有什么办法可以在仍然使用互操作的同时解决这个错误?
  2. 除了 EPPlus 之外,我还有其他选择吗?

    excel.Application x1app = new excel.Application(); x1app.SheetsInNewWorkbook = 1; x1app.Visible = true; excel.Workbook x1workbook = x1app.Workbooks.Open(); excel.Workbook NewWorkBook = x1app.Workbooks.Add(); for (sheets) { excel._Worksheet x1worksheet = x1workbook.Sheets[x]; x1worksheet.Copy(Type.Missing, After: NewWorkBook.Sheets[x - 3]); } Thread.Sleep(2000);

我应该能够在 devops 上成功运行构建

标签: c#excelazure-devopstfsbuild

解决方案


根据您的描述,您正在执行的操作需要在构建代理上安装 Excel。

如果你在 Azure DevOps 中使用主机生成代理。好像机器上没有安装。您可以找到安装在 Azure Pipelines 托管代理池中的计算机上的完整软件列表,例如此Azure Pipelines Hosted VS2017 映像

作为一种解决方法,如果 Microsoft 托管的代理不能满足您的需求,那么您可以部署自己的自托管代理

只需确保您的自托管代理环境与您的本地开发环境相同。

此外,您对excel的详细使用情况并不完全清楚。您也可以尝试使用 openxml。请在此处查看类似的问题:如何在 VSTS 中构建包含 Excel 创建的项目?


推荐阅读