天天看點

使用C#在VS2010上開發Com控件給JS調用,基于NET2.0建立ActiveX控件DLL包裝控件到安裝封包件中。         

工作中實際處理問題用到的,寫下來記錄下,怕到時候原文連結404了,順便幫助同樣遇到這個問題的人。

原文連結:https://blogs.msdn.microsoft.com/asiatech/2011/12/05/how-to-develop-and-deploy-activex-control-in-c/

想要不遇到什麼問題順利過關請先準備好VS2010開發工具,當然使用後續版本同樣能完成COM控件的開發,并且也可以正常使用,但是這篇文章并不會告訴你高于VS2010版本怎麼去做這個COM的安裝包。(以下内容為谷歌自動翻譯結果,部分截圖是用的VS2015和VS2010差别不大。手動滑稽)

建立ActiveX控件DLL

在托管環境中,沒有OCX控件。是以,我們需要建構一個DLL控件。

1.在“ Visual Studio 2010”中,使用“ Visual C#”建立一個新的庫項目。(注意上面的架構版本可以根據你的需求自己調整,不過既然都用Com控件了肯定是針對IE浏覽器,一般都比較老還是用2.0比較好)

使用C#在VS2010上開發Com控件給JS調用,基于NET2.0建立ActiveX控件DLL包裝控件到安裝封包件中。         

2.重命名類名(這個根據你的實際情況修改就行),在類裡面引入“ System.Runtime.InteropServices”命名空間

3.給程式設定簽名(應該是防止浏覽器阻止控件運作的,由于我們的使用者都會把我們網站加入信任清單,這步對我影響不大)

選中你的項目,右鍵->屬性,選中簽名頁籤,勾選為程式集簽名,然後建立名稱密鑰檔案。

使用C#在VS2010上開發Com控件給JS調用,基于NET2.0建立ActiveX控件DLL包裝控件到安裝封包件中。         

4.選擇“ 工具 -> 建立GUID ”以建立新的GUID(這個GUID就是後面浏覽器上需要用到的CLSID)

5.       添加 “ProgId”, “Guid”, “ComVisible” 到你的類上, 并且實作你的邏輯

using System;

using System.Runtime.InteropServices;

namespace DemoCSharpActiveX

{

    /// <summary>

    /// Demo HelloWorld class

    /// </summary>

    [ProgId("DemoCSharpActiveX.HelloWorld")]

    [ClassInterface(ClassInterfaceType.AutoDual)]

    [Guid("415D09B9-3C9F-43F4-BB5C-C056263EF270")]

    [ComVisible(true)]

    public class HelloWord

    {

        [ComVisible(true)]

        public String SayHello()

        {

            return "Hello World!";

        }

    }

}

6. 修改AssemblyInfo.cs檔案總的ComVisible為true,并修改GUID為你的GUID值(這一步在我這改不改沒有差別)

使用C#在VS2010上開發Com控件給JS調用,基于NET2.0建立ActiveX控件DLL包裝控件到安裝封包件中。         

7.編譯控件,并注冊控件

注冊指令(不同于MFC開發的OCX,此控件不能用RegSvr32注冊):

C:\Windows\Microsoft.NET\Framework\v2.0.50727>regasm /codebase <dll全路徑>

取消注冊的指令: regasm /u <dll全路徑>

8.到此dll開發可以算結束了,親測這些步驟在VS2015上也同樣可以通過。

包裝控件到安裝封包件中。         

公司電腦沒有VS2010,家裡電腦被老婆關機了,晚上回去再補寫。。。

繼續閱讀