.NET 技术FAQ(三)-----元件

3. 元件
3.1
什么是元件?
元件有时被描述为一个逻辑上的 .EXE .DLL它可以是任何一个应用程序 (有一个主入口点) 或库。一个元件由一个或多个文件组成 (dllexehtml 文件等等),表示一组资源、类型定义以及这些类型的实现。一个元件也可以包含对其它元件的引用。这些资源、类型和引用在称为清单的一个数据块中描述。清单是元件的一部分,这样一来元件就是自描述的。
元件的一个重要方面使他们是一个类型的唯一标志的一部分。类型的唯一标志是将它所在的元件和类型名组合在一起得到的。这就是说,例如,如果元件 A 输出了一个称为 T 的类型,同时元件 B 输出了一个也称为 T 的类型,.NET 运行库将它们视为完全不同的两个类型。此外,不要混淆元件和命名空间命名空间仅仅是组织类型名字的一种层次化方法。对于运行库,不论使用哪一个命名空间来组织名字,类型名就是类型名。从运行库来看,是元件加上类型名 (无论类型名属于哪个命名空间) 唯一地标识出一个类型。
元件在 .NET 的安全方面也很重要许多安全限制是在元件的边界上实施的。
最后,元件是 .NET 中版本控制的单元详情见下文。
 
3.2
怎样创建元件?
创建元件最简单的方法是直接使用 .NET 编译器。例如,以下 C# 程序:
public class CTest
{
 public CTest()
 {
  System.Console.WriteLine( "Hello from CTest" );
 }
}
能用以下方法编译为一个库元件 (dll)
csc /t:library ctest.cs
通过运行 .NET SDK 所带的“IL 反汇编工具,你能看到元件的内容。
另外你也能把你的源代码编译成模块,然后使用元件连接器 (al.exe) 将模块组合成一个元件。对 C# 编译器,/target:module 开关可以指定产生模块而不是元件。
 
3.3
私有元件和共享元件有什么不同?
空间分配和可见性:私有元件通常由一个应用程序使用,被存储到这个应用程序的目录或其下的子目录之下。共享元件通常存储到全局的元件缓冲区中,这里是 .NET 运行库维护的元件的储藏所。共享元件通常是许多应用程序都要用到的代码库,例如 .NET 框架类。
 
版本控制:运行库只对共享元件实施版本约束,而不对私有元件实施。
 
3.4
元件如何相互找到?
通过寻找目录路径。有几个因素会影响路径 (比如 AppDomain 宿主、应用程序配置文件等),但对于私有元件,搜索路径通常是应用程序的目录及其子目录。对于共享元件,搜索路径通常和私有元件的一样,再加上共享元件缓冲区。
 
3.5
元件版本如何起作用?
每个元件由一个称为兼容性版本的版本号。同样,对元件的引用 (从另一个元件) 包括被引用元件的名称和版本。
版本号有四个数字部分 (例如 5.5.2.33)。前两部分不相同的元件被视为不兼容的。如果前两部分相同,但第三部分不同,元件被认为可能兼容。如果仅仅第四部分不同,则元件被视为是兼容的。然而,这只是默认的指导方针 版本策略决定施用这些规则的范围。版本策略可以在应用程序配置文件中指定。
记住:版本控制仅仅针对于共享元件,而不对私有元件。

你可能感兴趣的:(.net,C#,存储,dll,library,编译器)