C# 生成 COM控件
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控件的更多相关文章
- WPF-控件-DataTemplate生成的控件
<Window x:Class="由DataTemplate生成的控件.MainWindow" xmlns="http://schemas.microsoft.co ...
- WPF-控件-ControlTemplate生成的控件
<Window x:Class="由ControlTemplate生成的控件.MainWindow" xmlns="http://schemas.microsoft ...
- Swift - 生成各种控件的工厂类(包含标签,按钮,输入框等)
在iOS开发中,页面里有时会大量的用到一些控件,如果要一个个单独创建再设置样式的话就显得很麻烦.我们可以创建一个生成各种控件的工厂类,这样在需要的时候调用下就可以了. 下面以一个自定义的工厂类为例,其 ...
- 动态生成PictureBox控件,涉及:PictureBox控件和flowLayoutPanel面板
一.概述 flowLayoutPanel面板是一系列控件的容器,有关详细的使用方法留待以后总结. 二.问题提出 问题提出:点击按钮,扫描指定文件夹并将其中的所有图片放在flowLayoutPanel面 ...
- C#导出 Excel 时, 生成 CheckBox 控件
在使用 Microsoft.Office.Interop.Excel 组件导出Excel 表格时,要把导出前的 CheckBox 控件一同导出到 excel 表格中,对于这个功能 看似很简单,但 M ...
- VS2010如何生成ActiveX控件测试容器
VS2010中默认没有ActiveX控件测试容器TSTCON.exe,而是微软把这个文件放到了例子程序中,需要用户自己编译: 具体方法为: 在VS2010的安装目录中找到以下目录Samples\205 ...
- Winform中生成自动控件
场景: 前几天项目需要模拟数据,但是实际设备还没有接上,就自己用Winform搭建了一个数据模拟器,生成数据给平台.这里又一个需求,就是从数据库中找出设备,然后自动生成控件,勾选就表示开启该设备,能上 ...
- SQL C# nvarchar类型转换为int类型 多表查询的问题,查询结果到新表,TXT数据读取到控件和数据库,生成在控件中的数据如何存到TXT文件中
在数据库时候我设计了学生的分数为nvarchar(50),是为了在从TXT文件中读取数据插入到数据库表时候方便,但是在后期由于涉及到统计问题,比如求平均值等,需要int类型才可以,方法是:Conver ...
- 第二章实例:动态生成View控件例子---小球跟随手指滑动
package mydefault.packge; import android.app.Activity; import android.content.Context; import androi ...
随机推荐
- 22状态模式State
一.什么是状态模式 State模式也叫状态模式,是行为设计模式的 一种.State模式允许通过改变对象的内部状态 而改变对象的行为,这个对象表现得就好像修改 了它的类一样. 二.状态模式的应用场景 状 ...
- [原]CentOS7安装Rancher2.1并部署kubernetes (二)---部署kubernetes
################## Rancher v2.1.7 + Kubernetes 1.13.4 ################ ##################### ...
- 线程的简述Thread
为什么有进程? 原来操作系统只能处理一件任务,有了进程就可以让操作系统处理多个任务.因为进程与进程之间是完全隔离的,涉及到了内存空间.数据的切换,所以就有了进程的概念. 已经有了进程,为什么还要线程? ...
- 初始化后,composer安装
在项目目录下输入composer install(保证要有composer.json的前提下)
- .Net逆向初学习
前一段时间逆向一个程序时发现是.net的,然后用OD和IDA都调试不了,最后上网查了一下原来.net的逆向要用专门的工具.这里推荐大家一篇文章去了解一下逆向.net的一些工具简介:http://www ...
- 前端上传 base64 编码图片到七牛云存储
参考文档 如何上传base64编码图片到七牛云 调试过程 文档中分别有 java 和 html 的 demo,可以根据文档示例调试. 下面是我调试的过程,可以作为参考,特别注意的是,如果需要给文件起名 ...
- java_工厂模式
定义: 初学者总是把所有的代码写在一个类里面,这样是非常危险的,因为所有错误集中在一个类里了,而且代码一长,调试就很困难 所以参照工厂流水线,分车间分模块来写代码,在实际操作中也就是说将代码模块化,封 ...
- SQL执行计划解读
声明 5.6中desc看不到show warnings,也看不到filtered列 5.7的desc等于5.6的desc extended,这样可以看show warnings,5.6中filtere ...
- EFM32G232F64时钟树
1.为了熟悉MCU的时钟树,先看看EFM32G232F64的CMU(ClockManagementUnit) 时钟管理单元(CMU)用于管控晶振(时钟源)和各个时钟节点.出于降低功耗和启动时间的目的, ...
- SpringBoot-将servlet容器变成undertow测试tomcat吞吐量
将Servlet容器变成Undertow 默认情况下,Spring Boot 使用 Tomcat 来作为内嵌的 Servlet 容器 可以将 Web 服务器切换到 Undertow 来提高应用性能.U ...