C#编写COM组件示例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
J 取稍
■it:rosoft Visual Studio
c#编写组件
3、修改 Properties 目录下面的 Assemblylnfo.cs
问是否同时给类改名,确定
「i 赳逹解决方実的目呈
□心tc
1、新建一个类库项目
悠正在重命名1个丈件°您也想在这亍对代玛元素“口皐丸汁的所有引用的项且中执行重命名吗?
「- Vi»*l M
Studi 9 已安It 的49柢
Wmdowi;
Offic* ^Windows 应用程序 邙类J#
+習意设备
初学者工具包
^Iindswi 校件障 .黑控制色应用程睜 口没备应用谡洋 立£氐住1工件薄
^Outl»ok
序
-茸他语茗
+ Vi lu*l Bhli C 我的崔笛
* VnuU J*
+ ViiukL Ctt
申攢累題机極检
対布式系卿拱方矍 +直纯顼目尖型 FKP Fyoj^cti * iftf 试顶目
用于创建c»食库(丑“的項自
取目类型疋)
▼ X
1解决方秦资瀝管理器-解决方案'畑.
V
為建固亘艮 ...
r
—
J 嬉决方案“NlyLib" Cl 不项引
.-1 耳 I^Lib
■+ 宜 &
』弓I 用
电阪由臣詞心|
Visible 属性设置为True
//将ComVi^bl^设置为£心^使此程序集中的类型
//对C0H 组件不可见.如果需要从口州诂问此程序集中的类型‘ //则将该类挈上的Co^Visibl^屈性设置划讣晒 L assembly : CoirJ/i sible (true)]
4、项目菜单->MyLib 属性 找到“生成”选项卡
HyLib* MyClasE. cs
应用程序
配置(E ):论
常规 - ------
条件編
回定义:
生成束件
调试
5、继续往下,找到“签名”选项卡 勾上“为程序集签名”
在下面的下拉框里面选择“ <新建…〉
签名* 优谒分柝
6在弹出的对话框里面,输入 MyLib 。。或者随便取个名字 去掉
使用密码保护文件的选项
往下看,找到“为In terop
注册”勾上
上为11序薙签容 谱释徑名拆惡旃艾件Of)
孫迟签容后*西目将不g 匡打,也不紐进石调试.
7、开始编码,任何一个公开的类,必须有一个I开通的接口定
义
C# code
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
n amespaceMyLib
{
[Visible( true )]
[Guid( "2CBD3D76-35F1-4f9d-9C1B-9DBFEE412F76"
public in terface IMyClass
{
void In itialize();
void Dispose();
int Add( int x, int y);
}
[Visible( true )]
[Guid( "EA2F140A-108F-47ae-BBD5-83EEE646CC0D "
[ProgId( "MyLib.MyClass")]
public class MyClass : IMyClass
{
public void Initialize()
{
//nothing todo
}
public void Dispose。
{
//nothing todo
}
public int Add( int x, int y)
{
return x + y;
}
}
}
9、编译它
在命令提示符下面,进入
用gacutil /i MyLib.dll 然后用regasm MyLib.dll GUID ”
8、GUID属性里面的那个字符串,在“工具”菜单下面,“创
建选择Registry Format ,然后复制
注意在[Guid("…….这个里面要去掉GUID前后的花括号
Dll所在的目录
将这个DLL加入的全局缓存里
注册这个dll
小C:\fIHDOVS\syste■罷让・d” 陀p
F: \HyLihXJ)inxJte le^se >cd Zd E- XHyLlhxhinMle lease
Fi^HyLibxhinsHele^se>gacutil /i MyLib^d11
piErasoft
fcc»puriyht
腥评u己咸功潘加到缓存中
E;^JlyLibMiin^elflflseJre^asn HsfLib.411 zt lb:MyLih*t lb rtici'osoftCW> .NET Fzn的叶k $呈序集注册延用工号2,0,SB727.42 版枚所S
儂雒辭蠶到隹ZMZWTZ必£Hb “前程序集利类型库
IF: Mlyl i b'dtiift\51e leased
10、在VBScript里面试试。。。
HTML code
Dim o : Set o= CreateObject ("MyLib.MyClass")
o.ln itialize
MsgBox"1 + 2 = " & o.Add( 1,2)
o.Dispose
Set o= Nothi ng
script >