100165416.htm

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

HTM
215
字号
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">现在,可以使用实用程序</span><span lang="EN-US">gacutil</span><span style="FONT-FAMILY: 宋体">把发布人的策略程序集添加到全局程序集缓存器中:</span></p>
<p class="a6" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 8.15pt"><strong><span lang="EN-US">gacutil &ndash;i policy.1.0. SharedDemo.dll</span></strong></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">现在,可以删除位于客户应用程序目录上的应用程序配置文件,并启动该客户应用程序。尽管客户程序集引用的是</span><span lang="EN-US">1.0.1318.24054</span><span style="FONT-FAMILY: 宋体">,但由于有了发布人策略,所以我们使用共享程序集的新版本</span><span lang="EN-US">1.1.1330.27636</span><span style="FONT-FAMILY: 宋体">。</span></p>
<p class="MsoNormal"><span lang="EN-US">(4) </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></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">使用</span><span lang="EN-US">.NET Framework</span><span style="FONT-FAMILY: 宋体">配置工具,可以取消对</span><span lang="EN-US">Enable Publisher Policy</span><span style="FONT-FAMILY: 宋体">复选框的选择,重写发布人策略,如图</span><span lang="EN-US">13-40</span><span style="FONT-FAMILY: 宋体">所示。</span></p>
<p align="center"><span lang="EN-US"><img height="300" src="13/image050.jpg" width="275" alt="" /></span></p>
<p style="FTEL: 8.15pt" align="center"><span style="FONT-FAMILY: 宋体">图</span><span lang="EN-US">&nbsp; 13-40</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">用</span><span lang="EN-US">.NET Framework Configuration</span><span style="FONT-FAMILY: 宋体">禁用发布人策略,得到的配置文件将包含</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">元素</span><span lang="EN-US">&lt;publisherPolicy&gt;</span><span style="FONT-FAMILY: 宋体">和属性</span><span lang="EN-US">apply=&quot;no&quot;</span><span style="FONT-FAMILY: 宋体">。</span></p>
<p class="a6" style="MARGIN-TOP: 8.15pt"><a ftel="publisherPolicy1"><span lang="EN-US">&lt;?xml version=&quot;1.0&quot;?&gt;</span></a></p>
<p class="a6"><span lang="EN-US">&lt;configuration&gt;</span></p>
<p class="a6"><span lang="EN-US">&nbsp; &lt;runtime&gt;</span></p>
<p class="a6"><span lang="EN-US">&nbsp;&nbsp;&nbsp; &lt;assemblyBinding xmlns=&quot;urn:schemas-microsoft-com:asm.v1&quot;&gt;</span></p>
<p class="a6"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;dependentAssembly&gt;</span></p>
<p class="a6"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;assemblyIdentity FTEL=&quot;SharedDemo&quot; publicKeyToken=&quot;be9f9ce7b9a0a62f&quot; /&gt;</span></p>
<p class="2"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;publisherPolicy</span><span lang="EN-US"> apply=&quot;no&quot; /&gt;</span></p>
<p class="a6" style="MARGIN-TOP: 6pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/dependentAssembly&gt;</span></p>
<p class="a6"><span lang="EN-US">&nbsp;&nbsp;&nbsp; &lt;/assemblyBinding&gt;</span></p>
<p class="a6"><span lang="EN-US">&nbsp; &lt;/runtime&gt;</span></p>
<p class="a6" style="FTEL: 8.15pt"><span lang="EN-US">&lt;/configuration&gt;</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">禁用发布人策略,可以在应用程序配置文件中配置不同版本的重定向。</span></p>
<h4><span lang="ES">5. </span><span style="FONT-FAMILY: 黑体">修改应用程序</span></h4>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">如果因为配置错误或新安装的程序集失败,而导致应用程序不运行,可以使用</span><span lang="EN-US">.NET Framework Configuration</span><span style="FONT-FAMILY: 宋体">的一个选项修改</span><span lang="EN-US">.NET</span><span style="FONT-FAMILY: 宋体">应用程序。单击</span><span lang="EN-US">Fix an Application</span><span style="FONT-FAMILY: 宋体">超链接,列出以前运行的所有</span><span lang="EN-US">.NET</span><span style="FONT-FAMILY: 宋体">应用程序,恢复应用程序配置文件的最近版本</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">如图</span><span lang="EN-US">13-41</span><span style="FONT-FAMILY: 宋体">所示</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">,或选择以前能工作的某个特定配置。选择</span><span lang="EN-US">Application SafeMode</span><span style="FONT-FAMILY: 宋体">可以禁用发布人策略。</span></p>
<p align="center"><span lang="ES"><img height="221" src="13/image051.jpg" width="342" alt="" /></span></p>
<p style="FTEL: .0001pt" align="center"><span style="FONT-FAMILY: 宋体">图</span><span lang="EN-US">&nbsp; 13-41</span></p>
<h4><span lang="ES">6. </span><span style="FONT-FAMILY: 黑体">运行库的版本</span></h4>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">在应用程序配置文件中,不仅可以安装和使用程序集的多个版本,还可以安装和使用运行库的多个版本。</span><span lang="EN-US">.NET</span><span style="FONT-FAMILY: 宋体">运行库的</span><span lang="EN-US">1.0</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">1.1(</span><span style="FONT-FAMILY: 宋体">未来</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">版本同时安装在同一个操作系统上。</span><span lang="EN-US">VS.NET 2003</span><span style="FONT-FAMILY: 宋体">默认在</span><span lang="EN-US">.NET 1.1</span><span style="FONT-FAMILY: 宋体">上运行应用程序。在应用程序配置文件中可以指定</span><span lang="EN-US">.NET</span><span style="FONT-FAMILY: 宋体">的版本。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">使用</span><span lang="EN-US">.NET 1.0</span><span style="FONT-FAMILY: 宋体">建立的应用程序可以不加修改地在在</span><span lang="EN-US">.NET 1.1</span><span style="FONT-FAMILY: 宋体">上运行。如果操作系统安装了运行库的两个版本,应用程序就运行在建立它时使用的版本上。但是,如果操作系统仅安装了</span><span lang="EN-US">1.1</span><span style="FONT-FAMILY: 宋体">版本,而应用程序是使用</span><span lang="EN-US">1.0</span><span style="FONT-FAMILY: 宋体">版本建立的,就会使用</span><span lang="EN-US">1.1</span><span style="FONT-FAMILY: 宋体">新版本运行该应用程序。注册键</span><span lang="EN-US">HKEY_LICAL_MACHINE\Software\Microsoft\.NETFramework\policy</span><span style="FONT-FAMILY: 宋体">列出了某个运行库的版本范围。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">如果应用程序是使用</span><span lang="EN-US">.NET 1.1</span><span style="FONT-FAMILY: 宋体">版本建立的,只要其中不包含只能在</span><span lang="EN-US">.NET 1.1</span><span style="FONT-FAMILY: 宋体">上使用的类和方法,它也可以不加修改地在在</span><span lang="EN-US">.NET 1.0</span><span style="FONT-FAMILY: 宋体">上运行。为此,需要应用程序配置文件。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">在应用程序配置文件中,不仅可以重新定向引用程序集的版本,还可以定义运行库所需的版本。在一台机器上可以安装不同的</span><span lang="EN-US">.NET</span><span style="FONT-FAMILY: 宋体">运行库版本。在应用程序配置文件中可以指定应用程序需要的版本。元素</span><span lang="EN-US">&lt;supportedVersion&gt;</span><span style="FONT-FAMILY: 宋体">标记了应用程序支持的运行库版本:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt"><span lang="EN-US">&lt;?xml version=&quot;1.0&quot;?&gt;</span></p>
<p class="2"><span lang="EN-US">&lt;configuration&gt;</span></p>
<p class="2"><span lang="EN-US">&nbsp;&nbsp; &lt;startup&gt;</span></p>
<p class="2"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt; supportedVersion version=&quot;v1.1.4322&quot; /&gt;</span></p>
<p class="2" style="FTEL: 46.2pt"><span lang="EN-US">&lt;supportedVersion version=&quot;v1.0.3512&quot; /&gt;</span></p>
<p class="2"><span lang="EN-US">&nbsp;&nbsp; &lt;/startup&gt;</span></p>
<p class="2" style="FTEL: 8.15pt"><span lang="EN-US">&lt;/configuration&gt;</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">但是,在</span><span lang="EN-US">.NET 1.0</span><span style="FONT-FAMILY: 宋体">中,用</span><span lang="EN-US">&lt;requiredRuntime&gt;</span><span style="FONT-FAMILY: 宋体">元素代替</span><span lang="EN-US">&lt;supportedVersion&gt;</span><span style="FONT-FAMILY: 宋体">元素,以指定需要的运行库版本。在项目的属性中配置</span><span lang="EN-US">.NET Framework</span><span style="FONT-FAMILY: 宋体">版本</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">如图</span><span lang="EN-US">13-42</span><span style="FONT-FAMILY: 宋体">所示</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">会添加</span><span lang="EN-US">&lt;supportedVersion&gt;</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">&lt;requiredRuntime&gt;</span><span style="FONT-FAMILY: 宋体">元素,以及前面讨论的程序集绑定信息。</span></p>
<p align="center"><span lang="ES"><img height="226" src="13/image052.jpg" width="306" alt="" /></span></p>
<p style="FTEL: 8.15pt" align="center"><span style="FONT-FAMILY: 宋体">图</span><span lang="EN-US">&nbsp; 13-42</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt"><span lang="EN-US">&lt;?xml version=&quot;1.0&quot;?&gt;</span></p>
<p class="2"><span lang="EN-US">&lt;configuration&gt;</span></p>
<p class="2"><span lang="EN-US">&nbsp;&nbsp; &nbsp;&lt;startup&gt;</span></p>
<p class="2"><span lang="EN-US">&nbsp; &lt;supportedRuntime version=&quot;v1.1.4322&quot; /&gt;</span></p>
<p class="2" style="FTEL: 27.65pt"><span lang="EN-US">&lt;supportedRuntime version=&quot;v1.0.3705&quot; /&gt;</span></p>
<p class="2"><span lang="EN-US">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;requiredRuntime version&gt;&quot;v1.0.3512&quot; /&gt; safeMode=&quot;true&quot; /&gt;</span></p>
<p class="2" style="FTEL: 36.85pt"><span lang="EN-US">&lt;/startup&gt;</span></p>
<p class="2" style="FTEL: 8.15pt"><span lang="EN-US">&lt;/configuration&gt;</span></p>
<p class="a3" style="MARGIN-TOP: 8.15pt; FTEL: 21.45pt"><span style="FONT-FAMILY: 黑体">注意:</span></p>
<p class="a1" style="FTEL: 21.45pt"><span lang="EN-US">&lt;requiredRuntime&gt;</span><span style="FONT-FAMILY: 楷体_GB2312">并没有否决</span><span lang="EN-US">&lt;supportedRuntime&gt;</span><span style="FONT-FAMILY: 楷体_GB2312">的配置,因为</span><span lang="EN-US">&lt;requiredRuntime&gt;</span><span style="FONT-FAMILY: 楷体_GB2312">仅用于</span><span lang="EN-US">.NET 1.0</span><span style="FONT-FAMILY: 楷体_GB2312">,而</span><span lang="EN-US">&lt;supportedRuntime&gt;</span><span style="FONT-FAMILY: 楷体_GB2312">可用于</span><span lang="EN-US">.NET 1.1</span><span style="FONT-FAMILY: 楷体_GB2312">和后续版本。</span></p></div>
                <!-- page -->
                <div class="page" style="text-align: center">
                    <a href="100165415.htm">上一页</a>&nbsp;&nbsp;&nbsp;<a href="index.html">首页</a>&nbsp;&nbsp;&nbsp;<a href="100165417.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='100165416.htm'><font color='red'>13.6.2  版本问题</font></a></h1>
                        <div id="divRealteNod2" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165413.htm'>13.5.2  创建共享程序集</a></div><div style='float:right;width:49%'>·<a href='100165414.htm'>13.6  配置</a></div><div style='float:left;width:49%'>·<a href='100165415.htm'>13.6.1  配置类别</a></div><div style='float:right;width:49%'>·<a href='100165417.htm'>13.6.3  配置目录</a></div><div style='float:left;width:49%'>·<a href='100165418.htm'>13.7  小结</a></div><div style='float:right;width:49%'>·<a href='100165419.htm'>14.1  代码访问的安全性</a></div></div>
                    </div>
                </div>
                </div></div>
   
</body>
</html>

⌨️ 快捷键说明

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