100165392.htm

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

HTM
79
字号


<!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>
	
        13.1  程序集的含义
</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="100165392.htm">
                        13.1  程序集的含义
                    </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='100165392.htm'><font color='red'>13.1  程序集的含义</font></a></h1>
                        <div id="divRelateNode" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165389.htm'>12.2.1  ASP.NET Web Matrix Project</a></div><div style='float:right;width:49%'>·<a href='100165390.htm'>12.2.2  WinCV</a></div><div style='float:left;width:49%'>·<a href='100165391.htm'>12.3  小结</a></div><div style='float:right;width:49%'>·<a href='100165393.htm'>13.1.1  DLL-Hell的解决方案</a></div><div style='float:left;width:49%'>·<a href='100165394.htm'>13.1.2  程序集的特性</a></div><div style='float:right;width:49%'>·<a href='100165395.htm'>13.1.3  应用程序域和程序集</a></div></div>
                    </div>
                </div>
                </div>
            <!-- main -->
            <div id="main">
                <div id="text"> <link href="css.css" rel="stylesheet" type="text/css" /><p class="MsoNormal"><span style="FONT-FAMILY: 宋体">本章介绍程序集。程序集是</span><span lang="EN-US">.NET</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: 7pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></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: 7pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></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: 7pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体">公共语言规范</span><span lang="EN-US">(Common Language Specification) </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: 7pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体">如何共享程序集</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">本章首先概述程序集的含义。</span></p>
<h3 style="MARGIN-TOP: 11.4pt; MARGIN-LEFT: 0cm; MARGIN-RIGHT: 0cm; FTEL: 11.4pt"><a ftel="_Toc507815115"><span lang="ES">13.1&nbsp; </span></a><span style="FONT-FAMILY: 楷体_GB2312">程序集</span><span style="FONT-FAMILY: 楷体_GB2312">的含义</span><span lang="ES"> </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">DLL</span><span style="FONT-FAMILY: 宋体">导出全局函数,</span><span lang="EN-US">COM DLL</span><span style="FONT-FAMILY: 宋体">导出</span><span lang="EN-US">COM</span><span style="FONT-FAMILY: 宋体">类。</span><span lang="EN-US">Microsoft</span><span style="FONT-FAMILY: 宋体">使用短语</span><span lang="EN-US">DLL-Hell</span><span style="FONT-FAMILY: 宋体">来描述与</span><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">相关的问题。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">应用程序中断通常是因为新安装的应用程序重写了另一个应用程序使用的</span><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">。有时安装时用一个新</span><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">替代旧</span><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">也会发生应用程序中断的情况,因为安装程序不能正确地检查版本,或者版本设置不正确。旧</span><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">用新版本替代而发生程序中断的情况比较多见。一般情况下,这不应是一个问题,新</span><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">应与旧版本向后兼容,但事实是常常出现不兼容情况。</span></p>
<p class="MsoNormal"><span lang="EN-US">Windows 2000</span><span style="FONT-FAMILY: 宋体">引入了并行特性,允许在应用程序的目录中安装多个</span><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">。利用这种并行功能,已安装的共享</span><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">的不同版本就可以安装在该应用程序的目录中。重新编写</span><span lang="EN-US">LoadLibrary() Win32 API</span><span style="FONT-FAMILY: 宋体">调用,使它先在应用程序目录中查找</span><span lang="EN-US">.local</span><span style="FONT-FAMILY: 宋体">文件。如果找到这个文件,</span><span lang="EN-US">API</span><span style="FONT-FAMILY: 宋体">会首先检查</span><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">是否在应用程序所在的目录下。再使用其他机制查找共享的</span><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">,这也会修改注册表中</span><span lang="EN-US">COM DLL</span><span style="FONT-FAMILY: 宋体">的固定路径。并行是一种事后补救措施,不能解决所有的问题,同时也引入了一些新的</span><span lang="EN-US">COM DLL</span><span style="FONT-FAMILY: 宋体">问题。</span><span lang="EN-US">Windows 2000</span><span style="FONT-FAMILY: 宋体">及以后的</span><span lang="EN-US">Windows</span><span style="FONT-FAMILY: 宋体">操作系统版本处理</span><span lang="EN-US">DLL-Hell</span><span style="FONT-FAMILY: 宋体">的另一个特性是文件保护:系统</span><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">不会被未授权的团体重写。所有这些功能所处理的都是问题本身,而非其源头。</span></p>
<p class="MsoNormal"><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">的版本问题产生的原因是不知道每个应用程序需要哪个特定的</span><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">版本。使用传统的</span><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">结构不能跟踪或加强这种依赖关系。</span><span lang="EN-US">COM DLL</span><span style="FONT-FAMILY: 宋体">似乎可以解决许多</span><span lang="EN-US">DLL</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></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">并行处理也支持</span><span lang="EN-US">COM DLL</span><span style="FONT-FAMILY: 宋体">。如果没有试用并行功能的</span><span lang="EN-US">COM DLL</span><span style="FONT-FAMILY: 宋体">,就会以为这仅是一种窃用。在使用并行的</span><span lang="EN-US">COM DLL</span><span style="FONT-FAMILY: 宋体">时,会产生新的问题。如果不卸载旧版本,而是用新的</span><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">覆盖旧版本,当同一组件的两个版本使用不同的线程配置时,会发生什么情况?配置信息从最后一个安装的版本中调用。问题的产生是因为</span><span lang="EN-US">COM</span><span style="FONT-FAMILY: 宋体">组件的配置没有存储在组件自身的</span><span lang="EN-US">DLL</span><span style="FONT-FAMILY: 宋体">中,而是存储在注册表中。</span></p></div>
                <!-- page -->
                <div class="page" style="text-align: center">
                    <a href="100165391.htm">上一页</a>&nbsp;&nbsp;&nbsp;<a href="index.html">首页</a>&nbsp;&nbsp;&nbsp;<a href="100165393.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='100165392.htm'><font color='red'>13.1  程序集的含义</font></a></h1>
                        <div id="divRealteNod2" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165389.htm'>12.2.1  ASP.NET Web Matrix Project</a></div><div style='float:right;width:49%'>·<a href='100165390.htm'>12.2.2  WinCV</a></div><div style='float:left;width:49%'>·<a href='100165391.htm'>12.3  小结</a></div><div style='float:right;width:49%'>·<a href='100165393.htm'>13.1.1  DLL-Hell的解决方案</a></div><div style='float:left;width:49%'>·<a href='100165394.htm'>13.1.2  程序集的特性</a></div><div style='float:right;width:49%'>·<a href='100165395.htm'>13.1.3  应用程序域和程序集</a></div></div>
                    </div>
                </div>
                </div></div>
   
</body>
</html>

⌨️ 快捷键说明

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