1. 建立一個 C# Class Library ,命名為:HelloWorld
2. 開啟項目的屬性,在點選左邊的 "Application"(就是第一個tab) , 然後點擊 Assembly Information 按鈕 ,在彈出的Dialog中, 必須在底部勾上: Make assembly COM-visible !否則 , 這個dll將不能以COM方式訪問 .( 也可以在代碼中的類聲明中寫上[ComVisible(true)] , 效果一樣,需要增加using System.Runtime.InteropServices;引用)
3. 建立強命名簽名檔案並使用
使用vs.net的“Vsitual Studio .Net工具”-->Vistual Studio .Net命令提示字元,輸入 sn -k d:\HelloWorld.snk斷行符號即建立了強命名簽名檔案
開啟項目的屬性,點選左邊Signing 勾上Sign the assembly 在 Choose a strong name key file:處選擇<Browse> 選擇剛才建立的HelloWorld.snk檔案
4. 建立類庫並編譯成dll
namespace HelloWorld{ [ComVisible(true)] public class Hello { public string Write() { return "Hello World"; } } }
5. 找到dll檔案夾路徑 ,然後使用vs.net的“Vsitual Studio .Net工具”-->Vistual Studio .Net命令提示字元
進入該dll檔案夾下輸入: regasm HelloWorld.dll<斷行符號>。
這時候,這個.dll的.net程式集就變成一個標準的Com組件了,但是還不能用,必須讓它變成全域Com組件.
這個regasm 公用程式將建立一個類型庫並在 Windows 註冊表中對其進行註冊,以使 PhysServer2.dll 中的類對 COM 用戶端可用 .
需要做下面步驟
將程式集添加到全域組件快取中
進入提示符視窗,輸入: gacutil /I HelloWorld.dll<斷行符號>
這時,你的這個dll就被複製到全域組件快取中了.也就是說無論在這個電腦的哪個硬碟上都可以使用此dll組件了.
如果不進行強命名簽名,這一步會提示載入失敗
PHP測試
<?php$r=new Com("HelloWorld.Hello");$s=$r->Write();echo $s;?>