100165733.htm

来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 154 行

HTM
154
字号


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
	
        28.4.5  COM注册
</title></head>
<body>
    <div class="area">

        

        <div class="col1">
            <div class="lineBlue">
            </div>
            <!-- title -->
            <div class="arcTitle">
                <h1>
                    <a href="../16">
                        C#高级编程(第3版)【全文连载】
                    </a>
                </h1>
                <div style="text-align: center; font-size: 15px">
                    <a href="100165733.htm">
                        28.4.5  COM注册
                    </a>
                </div>
                <div style="text-align: center; font-size: 15px">
                    <a class="url" href="../../default.htm">http://book.csdn.net/</a>
                    2006-10-13 14:41:00
                </div>
                <div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
                    <div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
                        图书导读
                    </div>
                    <div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
                        <!--导读-->
                        <h1 id="divCurrentNode" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165733.htm'><font color='red'>28.4.5  COM注册</font></a></h1>
                        <div id="divRelateNode" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165730.htm'>28.4.2  创建.NET组件</a></div><div style='float:right;width:49%'>·<a href='100165731.htm'>28.4.3  创建类型库</a></div><div style='float:left;width:49%'>·<a href='100165732.htm'>28.4.4  COM互操作特性</a></div><div style='float:right;width:49%'>·<a href='100165734.htm'>28.4.6  创建COM客户程序</a></div><div style='float:left;width:49%'>·<a href='100165735.htm'>28.4.7  添加连接点</a></div><div style='float:right;width:49%'>·<a href='100165736.htm'>28.4.8  用sink对象创建客户</a></div></div>
                    </div>
                </div>
                </div>
            <!-- main -->
            <div id="main">
                <div id="text"> <link href="css.css" rel="stylesheet" type="text/css" /><h3 style='margin-top:8.15pt;margin-right:0cm;FTEL:8.15pt;margin-left:
0cm'><span lang=EN-US>28.4.5&nbsp; COM</span><span style='font-family:黑体'>注册</span></h3>

<p class=MsoNormal><span style='font-family:宋体'>在</span><span lang=EN-US>.NET</span><span
style='font-family:宋体'>组件用作</span><span lang=EN-US>COM</span><span
style='font-family:宋体'>对象之前,需要在注册表中配置它。另外,如果不希望把程序集复制到客户应用程序所在的目录下,还需要把程序集安装在全局程序集缓存中。全局程序集缓存详见第</span><span
lang=EN-US>13</span><span style='font-family:宋体'>章。</span></p>

<p class=MsoNormal><span style='font-family:宋体'>要把程序集安装在全局程序集缓存中,必须用强名称实用工具创建一个键对</span><span
lang=EN-US>(key pair)</span><span style='font-family:宋体'>:</span></p>

<p class=a5 style='margin-top:8.15pt;margin-right:0cm;FTEL:8.15pt;
margin-left:21.45pt;FTEL:18.45pt'><b><span lang=EN-US>sn -k mykey.snk</span></b></p>

<p class=MsoNormal><span style='font-family:宋体'>把键文件添加到文件</span><span
lang=EN-US>AssemblyInfo.cs</span><span style='font-family:宋体'>的特性</span><span
lang=EN-US>AssemblyKeyFile</span><span style='font-family:宋体'>中:</span></p>

<p class=a5 style='margin-top:8.15pt;margin-right:0cm;FTEL:8.15pt;
margin-left:21.45pt;FTEL:18.45pt;background:#F2F2F2'><span lang=EN-US>[assembly:
AssemblyKeyFile(&quot;../../mykey.snk&quot;)]</span></p>

<p class=MsoNormal><span style='font-family:宋体'>在全局程序集缓存中注册程序集:</span></p>

<p class=a5 style='margin-top:8.15pt;margin-right:0cm;FTEL:8.15pt;
margin-left:21.45pt;FTEL:18.45pt'><b><span lang=EN-US>gacutil –i dotnetcomponent.dll</span></b></p>

<p class=MsoNormal><span style='font-family:宋体'>现在可以使用</span><span lang=EN-US>regasm</span><span
style='font-family:宋体'>实用工具在注册表中配置组件了。选项</span><span lang=EN-US>/tlb</span><span
style='font-family:宋体'>可以提取类型库,在注册表中配置类型库:</span></p>

<p class=a5 style='margin-top:8.15pt;margin-right:0cm;FTEL:8.15pt;
margin-left:21.45pt;FTEL:18.45pt'><b><span lang=EN-US>regasm dotnetcomponent.dll
/tlb</span></b></p>

<p class=MsoNormal><span style='font-family:宋体'>下面将列出写入注册表中的</span><span
lang=EN-US>.NET</span><span style='font-family:宋体'>组件信息。所有的</span><span
lang=EN-US>COM</span><span style='font-family:宋体'>信息都在</span><span lang=EN-US>HKEY_CLASSES_
ROOT(HKCR)</span><span style='font-family:宋体'>选项中。进入这个选项,写入</span><span
lang=EN-US>progid(</span><span style='font-family:宋体'>在本例中,是</span><span
lang=EN-US>Wrox.DotNetComponent)</span><span style='font-family:宋体'>和</span><span
lang=EN-US>CLSID</span><span style='font-family:宋体'>。</span></p>

<p class=MsoNormal><span style='font-family:宋体'>键</span><span lang=EN-US>HKCR\CLSID\{CLSID}\InProcServer32</span><span
style='font-family:宋体'>有如下选项:</span></p>

<p class=1 style='margin-left:37.55pt;FTEL:-16.1pt'><span lang=EN-US>●<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
lang=EN-US>mscoree.dll</span><span style='font-family:宋体'>:它表示</span><span
lang=EN-US>CCW</span><span style='font-family:宋体'>。这是一个真正的</span><span
lang=EN-US>COM</span><span style='font-family:宋体'>对象,负责存储</span><span
lang=EN-US>.NET</span><span style='font-family:宋体'>组件。这个</span><span
lang=EN-US>COM</span><span style='font-family:宋体'>对象访问</span><span lang=EN-US>.NET</span><span
style='font-family:宋体'>组件,为客户提供</span><span lang=EN-US>COM</span><span
style='font-family:宋体'>行为。通过一般的</span><span lang=EN-US>COM</span><span
style='font-family:宋体'>实例化机制从客户上加载和实例化文件</span><span lang=EN-US>mscoree.dll</span><span
style='font-family:宋体'>。</span></p>

<p class=1 style='margin-left:37.55pt;FTEL:-16.1pt'><span lang=EN-US>●<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
lang=EN-US>ThreadingModel=Both</span><span style='font-family:宋体'>:这是</span><span
lang=EN-US>mscoree.dll COM</span><span style='font-family:宋体'>对象的一个特性。这个组件以支持</span><span
lang=EN-US>STA</span><span style='font-family:宋体'>和</span><span lang=EN-US>MTA</span><span
style='font-family:宋体'>的方式编写。</span></p>

<p class=1 style='margin-left:37.55pt;FTEL:-16.1pt'><span lang=EN-US>●<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
lang=EN-US>Assembly= DotNetComponent, Version=1.0.1321.33886, Culture=neutral,
PublicKeyToken = 5cd57c93b4d9c41a</span><span style='font-family:宋体'>:</span><span
lang=EN-US>Assembly</span><span style='font-family:宋体'>的值存储了程序集的全名,其中包括版本号和公钥令牌,所以程序集可以惟一地识别出来。这里注册的程序集将通过</span><span
lang=EN-US>mscoree.dll</span><span style='font-family:宋体'>加载。</span></p>

<p class=1 style='margin-left:37.55pt;FTEL:-16.1pt'><span lang=EN-US>●<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
lang=EN-US>Class=Wrox.ProCSharp.COMInterop.Server. DotNetComponent</span><span
style='font-family:宋体'>:类名也由</span><span lang=EN-US>mscoree.dll</span><span
style='font-family:宋体'>使用。这是要被实例化的类。</span></p>

<p class=1 style='margin-left:37.55pt;FTEL:-16.1pt'><span lang=EN-US>●<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
lang=EN-US>RuntimeVersion=v1.1.4322</span><span style='font-family:宋体'>:注册项</span><span
lang=EN-US>RuntimeVersion</span><span style='font-family:宋体'>指定要用于存储</span><span
lang=EN-US>.NET</span><span style='font-family:宋体'>程序集的</span><span lang=EN-US>.NET</span><span
style='font-family:宋体'>运行库的版本。</span></p>



</div>
                <!-- page -->
                <div class="page" style="text-align: center">
                    <a href="100165732.htm">上一页</a>&nbsp;&nbsp;&nbsp;<a href="index.html">首页</a>&nbsp;&nbsp;&nbsp;<a href="100165734.htm">下一页</a>
                </div>
                <div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
                    <div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
                        图书导读
                    </div>
                    <div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
                        <!--导读-->
                        <h1 id="divCurrentNode2" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165733.htm'><font color='red'>28.4.5  COM注册</font></a></h1>
                        <div id="divRealteNod2" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165730.htm'>28.4.2  创建.NET组件</a></div><div style='float:right;width:49%'>·<a href='100165731.htm'>28.4.3  创建类型库</a></div><div style='float:left;width:49%'>·<a href='100165732.htm'>28.4.4  COM互操作特性</a></div><div style='float:right;width:49%'>·<a href='100165734.htm'>28.4.6  创建COM客户程序</a></div><div style='float:left;width:49%'>·<a href='100165735.htm'>28.4.7  添加连接点</a></div><div style='float:right;width:49%'>·<a href='100165736.htm'>28.4.8  用sink对象创建客户</a></div></div>
                    </div>
                </div>
                </div>
        </div>
</body>
</html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?