【发布时间】:2011-10-09 09:39:48
【问题描述】:
我写了一个单元测试。被测代码引用了 Microsoft.Office.Interop.Excel.dll。
测试在我的机器上运行良好,但在构建服务器上失败。它在 Excel 应用程序被实例化的那一行失败:
var application = new Application { Visible = Visible };
错误是:
System.Runtime.InteropServices.COMException:
Retrieving the COM class factory for component with CLSID
{00024500-0000-0000-C000-000000000046} failed due to the following error:
80040154 Class not registered
这是否意味着我必须在我的构建服务器上安装可再发行主互操作程序集?如果是这样,我是否还需要在构建服务器上安装 Excel?
编辑: Microsoft.Office.Interop.Excel.dll 包含在我的解决方案中,并从那里引用。
【问题讨论】:
-
如果您的测试需要程序集存在,那么显然它需要在运行测试的机器上。还是你在问别的?您也许可以在该机器上注册单个 DLL,而不必安装 Excel。使用 dependency walker 检查 DLL 的依赖关系。
-
我很确定您必须在构建服务器上安装 Office 才能使其正常工作。
-
@Peter 谢谢,我已经编辑了我的答案以澄清。我已经尝试注册 dll,但我得到“找不到 DllRegisterServer 入口点。无法注册此文件”,就像这个人一样:serverfault.com/questions/59431/…
-
您必须在该计算机上安装 Office。 不要尝试注册任何东西,你没有编写 COM 服务器,只是一个 COM 客户端。