旋风

Communication comes from our hears and heads! my msn:youpeizun@hotmail.com


导航

Component组件初步学习

Posted on 2006-04-02 23:02  xuanfeng  阅读(556)  评论(0编辑  收藏  举报
第一次学习的例子是从微软网站下载的一个例子
http://download.microsoft.com/download/f/c/5/fc59614c-f610-4ab5-a9bb-82b784741313/COMPlusComponentSample.exe
这里总结一下所学的知识:如果有会不对之处请大家多教: 

组件首先要符合两个条件:

1.       是类库

2.       要承ServiceComponent

3.       要用SN.EXE为该程序集创建密钥文件

4.       要用Gacutil –I DLL文件添加到全集程序缓冲区中

5.要用Regsvcs 注册该DLL文件.

接下来谈一下怎么一步步创建一个组件:

第一创建一个输出为类库的程序集:



using System;
using System.EnterpriseServices;
using System.Windows.Forms;

namespace ServerComponents
{
    
    
public class Class1:ServicedComponent
    
{
        
public Class1()
        
{
            
        }

        
public void Msg()
        
{
         MessageBox.Show(
"susseccefull!");
        }

    }

}

 

第二步,用SN.创建密钥文件:

在某些方面2003命令提示符下,把开Debug把开,把密钥文件放在Debug目录里面:

:sn -k c:\firstComponent\ServerComponent\bin\Debug\sn.snk

第三步:

配制程序集信息文件:在AcceblyInfo.CS文件里添加(不要删除系统自动生成的)

using System.EnterpriseServices;
[assembly: ApplicationActivation(ActivationOption.Server)]
//[assembly: ApplicationID("96D7999B-439B-4aea-9A06-DF8E3BE5CAB")]
[assembly: ApplicationName("My First Text Componet")]
[assembly: Description(
"An example of creating a COM+ application from .NET")]
[assembly: AssemblyDelaySign(
false)]
[assembly: AssemblyKeyFile(
@"C:\firstComponent\ServerComponent\bin\Debug\sn.snk")]
[assembly: AssemblyKeyName(
"sn.snk")
[assembly:ApplicationAccessControl(
true)]

 

(注意AssemblyKeyFile@"C:\firstComponent\ServerComponent\bin\Debug\sn.snk"

中的路径要根据你所创建的密钥文件路径)

 

第四步:生成解决方案,可以看到在Debug目录下看到ServerComponts.DLL文件

第五步:把ServerComponts.DL放到全局缓冲区中;执行命令:

gacutil-I C:\firstComponent\ServerComponent\bin\Debug\ServerComponts.DLL

 

 

这个步骤后可以在系统的Accemblys目录下找到

Windows\Accembly 或winnt\Accembly 下可以找到ServerComponts文件

 

第六部:注册ServerComponts.DL 执行命令

Regsvcs C:\firstComponent\ServerComponent\bin\Debug\ServerComponts.DLL

后可以在组件服务里面找到名为"My First Text Componet"的组件;

可以用MMC控制台打开组件服务,或者控制台\计算机管理,找到组件服务来查看.至此该组件就可以用啦.

在要用的程项目里面添加引用就可以用啦,就像用系统组件一样.