工作中實際處理問題用到的,寫下來記錄下,怕到時候原文連結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比較好)
2.重命名類名(這個根據你的實際情況修改就行),在類裡面引入“ System.Runtime.InteropServices”命名空間
3.給程式設定簽名(應該是防止浏覽器阻止控件運作的,由于我們的使用者都會把我們網站加入信任清單,這步對我影響不大)
選中你的項目,右鍵->屬性,選中簽名頁籤,勾選為程式集簽名,然後建立名稱密鑰檔案。
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值(這一步在我這改不改沒有差別)
7.編譯控件,并注冊控件
注冊指令(不同于MFC開發的OCX,此控件不能用RegSvr32注冊):
C:\Windows\Microsoft.NET\Framework\v2.0.50727>regasm /codebase <dll全路徑>
取消注冊的指令: regasm /u <dll全路徑>
8.到此dll開發可以算結束了,親測這些步驟在VS2015上也同樣可以通過。
包裝控件到安裝封包件中。
公司電腦沒有VS2010,家裡電腦被老婆關機了,晚上回去再補寫。。。