2016年1月29日 星期五

將.NET的DLL註冊到主機供ASP使用


  1. 在此用合併PDF的Library(iTextSharp)作為範例。
  2. 新增一個類別庫的專案,將iTextSharp.dll加入至專案。
  3. 屬性裡的組件名稱及註冊COM的Module要為[NameSpace].[ClassName]
    • EX:NameSpace -> ASPCOM,ClassName -> Merge
    • 組件名稱 -> ASPCOM.Merge
    • 編譯出來的DLL要注意是否為此名稱
  4. 在Class裡將要運用的命名空間引入
    • 主要要引用System.Runtime.InteropServices
    • 另外此範例要運用iTextSharp,所以引用iTextSharp.text及iTextSharp.text.pdf
  5. 接著設定NameSpace及Class的名稱,在Class上加上屬性

    • VB:
      <ComVisible(True)> _
    • C#:
      [ComVisible(True)]
  6. 在專案的屬性裡要設定兩個地方
    • 編譯->勾選"註冊COM Interop"
    • 簽署->勾選"簽署組件"->新增一個簽署的名稱
  7. 完成後把專案建置起來
  8. 再來做手動註冊,假設建置完的DLL叫MyDLL.dll
    • 使用最高權限開啟cmd
    • 為了執行gactil指令,將目錄切換到C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin
    • 在cmd底下執行 gactil /i MyDLL.dll
    • 為了執行regam.exe,將目錄切換到C:\Windows\Microsoft.NET\Framework\v2.0.50727
    • 在cmd底下執行 regasm.exe MyDLL.dll /tlb:MyDLL.tlb /register
    • 如果要取消註冊,regasm.exe MyDLL.dll /tlb:MyDLL.tlb /unregister
  9. 參考網址

1 則留言 :

  1. 關於:為了執行regam.exe,將目錄切換到C:\Windows\Microsoft.NET\Framework\v2.0.50727
    這部分如果換成v4.0的版本是可行的嗎?

    回覆刪除