我們創建了一個C#類庫程序集,並使其可以從PHP調用其方法。這用於正常工作,但現在我們希望將它安裝在Windows Server 2008服務器上,並且我們繼續步入錯誤「Class not registered」。類未註冊錯誤來自PHP
爲了排除任何依賴性問題,我在C#中創建了一個小小的測試類庫。類庫是爲任何CPU構建的,並且它是COM可見的(在AssemblyInfo.cs中也將COMVisible設置爲true)。測試類庫僅包含一個具有一個方法的類。該類稱爲TestLib,名稱空間也稱爲TestLib。該方法被稱爲Test,並且只返回一個字符串。
我們所做的是: - 建成TestLib.dll - 它複製到Windows Server 2008的計算機 - 與註冊的dll:regasm /基本代碼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編譯testlibrary作爲目標框架,結果相同。順便說一句,.NET框架4.0安裝在服務器上。
任何想法?