到現在為止,除了依賴一些系統提供的類(比如一開始我們就提到的System.Console)類,我們介紹的程序主要都是依靠自身來實現的。但更普遍的情況是,現實世界中的應用程序可能包含許多不同的部分。舉個例子,一個應用程序系統可能需要依賴於許多不同的組件,一些是內部開發的,另一些是從別的軟件開發商處購買的。
使用名字空間和裝配使得這種基於組件的系統成為可能。名字空間提供了一個邏輯上的層次結構體系,它即可以作為應用程序的內部結構體系,也可以作為應用程序的外部結構體系。在作為外部結構體系時,程序中的一些元素可以被導出到其它的程序中。
裝配用於程序的打包(packing)和部署(deployment)。裝配和模塊所扮演的角色類似,都可以作為類型的物理容器。一個裝配可能包含若干個相互獨立的模塊,可以包含許多類型、作用於這些類型上的可執行代碼,以及對其它裝配的引用。
裝配有兩種類型:應用程序和庫。應用程序都有一個入口,通常擴展名為".exe"。庫則不包含入口,通常擴展名為".dll".