使用C#在VS2010上开发Com控件给JS调用,基于NET2.0

工作中实际处理问题用到的,写下来记录下,怕到时候原文链接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

2.重命名类名(这个根据你的实际情况修改就行),在类里面引入“ System.Runtime.InteropServices”命名空间

 

3.给程序设置签名(应该是防止浏览器阻止控件运行的,由于我们的用户都会把我们网站加入信任列表,这步对我影响不大)

选中你的项目,右键->属性,选中签名选项卡,勾选为程序集签名,然后新建名称**文件。

使用C#在VS2010上开发Com控件给JS调用,基于NET2.0

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

 

7.编译控件,并注册控件

注册命令(不同于MFC开发的OCX,此控件不能用RegSvr32注册):
C:\Windows\Microsoft.NET\Framework\v2.0.50727>regasm /codebase <dll全路径>

取消注册的命令: regasm /u <dll全路径>

8.到此dll开发可以算结束了,亲测这些步骤在VS2015上也同样可以通过。

 

包装控件到安装包文件中。         

公司电脑没有VS2010,家里电脑被老婆关机了,晚上回去再补写。。。