C#编写COM组件 
软件:Microsoft VisualStudio 2010

1、新建一个类库项目

2、将Class1.cs改为我们想要的名字(例如:MyClass.cs)

问是否同时给类改名,确定

3、修改Properties目录下面的AssemblyInfo.cs

ComVisible属性设置为true

改成下图

4、项目->MyLib属性

切换到“生成”选项卡,在底部位置,勾选“为COM互操作注册”

切换到“签名”选项卡

勾选“为程序集签名”

在下面的下拉框里面选择“<新建...>”

5、在弹出的对话框里面,输入MyKey。。或者随便取个名字

去掉“使用密码保护文件(P)”的选项

6、开始编码,任何一个公开的类,必须有一个 I开通的接口定义

C# Code

[csharp] view plain copy
 
using System;  
using System.Collections.Generic;  
using System.Text;  
using System.Runtime.InteropServices;  
  
namespace MyLib  
{  
    [ComVisible(true)]  
    [Guid("35A5CE1E-551C-41EC-81D4-005318550119")]  
    public interface IMyClass  
    {  
        void Initialize();  
        void Dispose();  
        int Add(int x, int y);  
    }  
    [ComVisible(true)]  
    [Guid("F0239BF9-0A6E-49A6-8853-BADE1B95E66F")]  
    [ProgId("MyLib.MyClass")]  
    public class MyClass : IMyClass  
    {  
        public void Initialize()  
        {  
            // nothing to do  
        }  
  
        public void Dispose()  
        {  
            // nothing to do  
        }  
  
        public int Add(int x, int y)  
        {  
            return x + y;  
        }  
    }  
}

7、GUID属性里面的那个字符串,在“工具”菜单下面,“创建 GUID”

选择 [GUID(“xxxxxxxxxx-xxxx….xxxxxx”)],然后复制

8、编译&注册

编译:生成->生成解决方案(F6)。如果没有生成.tlb文件,需要用管理员身份打开Visual Studio 2010,然后重新编译

注册过程:

开始→所有程序→Microsoft Visual Sutdio 2010→Visual Studio Tools→Visual Studio命令提示符(2010)〖注:以管理员身份运行〗

在命令提示符下面,进入Dll所在的目录

C:\Windows\system32>cd/d E:\MyLib\MyLib\bin\Debug

用 gacutil /i MyLib.dll 将这个DLL加入的全局缓存里

E:\MyLib\MyLib\bin\Debug>gacutil/i mylib.dll

然后用 regasm MyLib.dll 注册这个dll

E:\MyLib\MyLib\bin\Debug>regasmmylib.dll

---------------------
作者:kingmax54212008
来源:CSDN
原文:https://blog.csdn.net/kingmax54212008/article/details/73604195
版权声明:本文为博主原创文章,转载请附上博文链接!

C# 生成 COM控件的更多相关文章

  1. WPF-控件-DataTemplate生成的控件

    <Window x:Class="由DataTemplate生成的控件.MainWindow" xmlns="http://schemas.microsoft.co ...

  2. WPF-控件-ControlTemplate生成的控件

    <Window x:Class="由ControlTemplate生成的控件.MainWindow" xmlns="http://schemas.microsoft ...

  3. Swift - 生成各种控件的工厂类(包含标签,按钮,输入框等)

    在iOS开发中,页面里有时会大量的用到一些控件,如果要一个个单独创建再设置样式的话就显得很麻烦.我们可以创建一个生成各种控件的工厂类,这样在需要的时候调用下就可以了. 下面以一个自定义的工厂类为例,其 ...

  4. 动态生成PictureBox控件,涉及:PictureBox控件和flowLayoutPanel面板

    一.概述 flowLayoutPanel面板是一系列控件的容器,有关详细的使用方法留待以后总结. 二.问题提出 问题提出:点击按钮,扫描指定文件夹并将其中的所有图片放在flowLayoutPanel面 ...

  5. C#导出 Excel 时, 生成 CheckBox 控件

    在使用 Microsoft.Office.Interop.Excel 组件导出Excel 表格时,要把导出前的  CheckBox 控件一同导出到 excel 表格中,对于这个功能 看似很简单,但 M ...

  6. VS2010如何生成ActiveX控件测试容器

    VS2010中默认没有ActiveX控件测试容器TSTCON.exe,而是微软把这个文件放到了例子程序中,需要用户自己编译: 具体方法为: 在VS2010的安装目录中找到以下目录Samples\205 ...

  7. Winform中生成自动控件

    场景: 前几天项目需要模拟数据,但是实际设备还没有接上,就自己用Winform搭建了一个数据模拟器,生成数据给平台.这里又一个需求,就是从数据库中找出设备,然后自动生成控件,勾选就表示开启该设备,能上 ...

  8. SQL C# nvarchar类型转换为int类型 多表查询的问题,查询结果到新表,TXT数据读取到控件和数据库,生成在控件中的数据如何存到TXT文件中

    在数据库时候我设计了学生的分数为nvarchar(50),是为了在从TXT文件中读取数据插入到数据库表时候方便,但是在后期由于涉及到统计问题,比如求平均值等,需要int类型才可以,方法是:Conver ...

  9. 第二章实例:动态生成View控件例子---小球跟随手指滑动

    package mydefault.packge; import android.app.Activity; import android.content.Context; import androi ...

随机推荐

  1. K8s(2)-部署应用

    一旦运行了Kubernetes集群,就可以在其上部署容器化应用程序.为此,您需要创建Kubernetes Deployment配置.Deployment指示Kubernetes如何创建和更新应用程序的 ...

  2. 《Spring实战》学习笔记-第五章:构建Spring web应用

    之前一直在看<Spring实战>第三版,看到第五章时发现很多东西已经过时被废弃了,于是现在开始读<Spring实战>第四版了,章节安排与之前不同了,里面应用的应该是最新的技术. ...

  3. 零拷贝sendfile解析

    传统方式read/write send/recv 在传统的文件传输里面(read/write方式),在实现上事实上是比較复杂的,须要经过多次上下文的切换.我们看一下例如以下两行代码: 1. read( ...

  4. ASP.NET MVC+HighCharts开发统计图表

    HighCharts是开源的Web图表js组件,与D3.js一样,经常用于数据可视化.HighCharts图表类型丰富,功能非常强大,是很好的数据可视化解决方案,其官方网站为:http://www.h ...

  5. Kali Linux安装

    Kali Linux 安装过程参考:https://blog.csdn.net/qq_40950957/article/details/80468030 安装完成后,apt-get install 安 ...

  6. python中unicode 和 str相互转化

    python中的str对象其实就是"8-bit string" ,字节字符串,本质上类似java中的byte[]. 而python中的unicode对象应该才是等同于java中的S ...

  7. poj 3304

    我老人家要开始玩几何了! .这个题有点自闭. 就是问是否存在一条直线经过所有了n条线段,(有交点). 我老人家愚昧不可救药,想了想决定先求出来 这两条直线的交点,然后看是否在线段上.但是一直写不对.. ...

  8. memoization提升递归效率

    从开通博客到目前为止,也有一年了,刚开始的写了一篇工作的感想,然后就一直不知道写什么,看园子里的文章实在是很专业,怕自己写的太水.但是,写一些东西总归是好的,于是就当作是记笔记一样,开始写第一篇技术类 ...

  9. oracle sqlplus命令详解

    涉及到的知识要点 a.带有一个&的替换变量的用法b.带有两个&的替换变量用法c.define命令用法d.accept命令用法e.定制SQL*Plus环境f.在glogin.sql文件中 ...

  10. laravel5.4+vue+element简单搭建(gulp+laravel Elixir)(转)

    如今laravel来到5.4版本,更方便引入vue了,具体步骤如下: 下图为我动到的文件 1.下载laravel5.4 2.命令行(laravel5.4目录下):composer install 3. ...