我们创建了一个 C# 类库程序集并使其 COM 可见,以便能够从 PHP 调用其方法。这曾经可以正常工作,但现在我们想将它安装在 Windows Server 2008 服务器上,并且我们一直遇到错误“类未注册”。
为了排除任何依赖问题,我在 C# 中制作了一个很小的测试类库。类库是为任何 CPU 构建的,它是 COM 可见的(在 AssemblyInfo.cs 中也将 COMVisible 设置为 true)。测试类库只包含一个类和一种方法。该类称为TestLib,命名空间也称为TestLib。该方法称为 Test 并且只返回一个字符串。
我们所做的如下: - 构建 TestLib.dll - 将其复制到 Windows Server 2008 机器 - 将 dll 注册为:regasm /codebase TestLib.dll - regasm 工具返回成功消息 - 在 PHP 中,我们只是尝试创建一个新的 COM 实例:
try
{
$test = new COM("TestLib.TestLib");
}
catch (Exception $e)
{
die($e->getMessage());
}
- 当我们从浏览器或命令行 (php -f test.php) 调用此测试脚本时,在这两种情况下都会出现错误“未注册类”
我还尝试使用 gacutil -i 将 TestLib 添加到 GAC,但无济于事;仍然类未注册错误。
然后我尝试使用 .NET 2.0 而不是 4.0 作为目标框架编译测试库,结果相同。.NET framework 4.0 顺便安装在服务器上。
有任何想法吗?