WEB开发网
开发学院软件开发C语言 Effective C# 第4章:创建基于二进制的组件 阅读

Effective C# 第4章:创建基于二进制的组件

 2009-02-19 08:16:12 来源:WEB开发网   
核心提示: 确定正确的程序集以后,CLR接来就断定这个程序集是否已经在当前的应用程序中加载,Effective C# 第4章:创建基于二进制的组件(2),如果是,就用原来的,包括完整的版本号,这会让你在后面的升级中更简单的,如果不是,CLR就继承查找程序集

确定正确的程序集以后,CLR接来就断定这个程序集是否已经在当前的应用程序中加载。如果是,就用原来的。如果不是,CLR就继承查找程序集。如果程序是强名称的,CLR就先在全局程序缓存(GAC)中查找,如果不在GAC中,加载器就检测代码目录(codebase directory,译注,这里只是译为代码目录,其实并不是源代码所在的目录)中的配置文件,如果当前代码目录存在,那就是唯一被搜索程的目录了。如果在代码目录中没有找到所要的程序集,那么加载就失败。

如果没有直接的代码目录,加载器会搜索预先设定的目录集:

* 应用程序目录。也就是与主应用程序集同在的位置。

* 语言目录。这是一个在应用程序目录下的子目录,这个目录与当前语言名匹配。

* 程序集子目录。这是一个与程序集同名的子目录,这两个可以组合成这样: [语言]/[程序集名]

* 私有的运行目录(binPath)。这是一个在应用程序配置文件中定义的私有目录。它同样可以和语言和程序集名组合: [bin目录]/[程序集名], 或者[bin目录]/[语言], 还可以是:[bin目录]/[语言]/[程序集名]。

从这个讨论中你应该明白三个内容:第一,只有强名称程序集才能放到GAC中。其次,你可以通过配置文件来修改默认的行为,从而升级程序中个别的强名称程序集。第三,强名称程序集可以阻止对程序集的恶意篡改,从而提供更安全的应用程序。

了解CLR是如何加载程序集的,有利于在实际操作中考虑如何创建和更新组件。首先,你应该使用强名称程序集,把所有的元数据信息都记录下来。当你在VS.net中创建一个项目时,你应该把assemblyInfo.cs文件中的所有属性都填满,包括完整的版本号。这会让你在后面的升级中更简单的。VS.net在assemblyInfo.cs中创建三个不同的部份,首先就是信息报告:

上一页  1 2 3 4  下一页

Tags:Effective 创建 基于

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接