Assembly 是编译好的dll  namespace是命名空间,一个Assembly里包含多个namespace 我是这么理解的。

解决方案 »

  1.   

    转一个
    namespace可以理解为逻辑上的函数库(里面包含各类函数),与之对应的是assembly,属于物理上的函数库(即一个个DLL文件)。
    namespace 是有层次的,这就好象书的章节一样,这样在使用namespace中的类和对象时,就比较容易了。象下面这个例子:dim abc As System.IO.StreamReader,一看就知道这是把abc定义为system命名空间下的IO子空间中的StreamReader类。由于各名字空间实际是保存在各程序集(assembly)中的,因此使用名字空间前需要先引用其所在的程序集。
    根据需要也可写 import namespace,这样以后使用namesapce中的类和对象时可省略那一长串路径。比如刚才的例子可以写成这样:
    import System.IO
    dim abc as StreamReader有了namespace后,同名的类和函数就被允许了,因为它们位于不同的namespace中,不会产生冲突!比如System.Web.UI空间下有 TextBox类,而System.Windows.Forms空间下也有一个TextBox类,这两个类的名字完全一致(其实功用也差不多),但你在使用它们的时候,系统能够很好的分辨到底是哪一个,这就是namespace的关系!当然,除了系统的namespace,开发者可以自己定义自己的namespace。其实当你编译一个解决方案时,系统也会用你的项目名称做名字,生成一个namespace,并把你的类(其实每个web页面就是一个类)都放在这个namespace下面! 
      

  2.   

    Assembly  程序集 也就是DLL EXE .... 下面可能有很多个 Namespace 
    Namespace  命名空间..下面有很多个 CLASS+ Assembly
    ----NamespaceA
    ----NamespaceB
    ----NamespaceC也就这样的结构.
      

  3.   

    前者是程序集 
    后者是命名空间 namespace可以理解为逻辑上的函数库(里面包含各类函数),与之对应的是assembly,属于物理上的函数库(即一个个DLL文件)。 
    namespace是有层次的,这就好象书的章节一样,这样在使用namespace中的类和对象时,就比较容易了。象下面这个例子:dim abc As System.IO.StreamReader,一看就知道这是把abc定义为system命名空间下的IO子空间中的StreamReader类。 由于各名字空间实际是保存在各程序集(assembly)中的,因此使用名字空间前需要先引用其所在的程序集。 
    根据需要也可写 import namespace,这样以后使用namesapce中的类和对象时可省略那一长串路径。比如刚才的例子可以写成这样: 
    import System.IO 
    dim abc as StreamReader 有了namespace后,同名的类和函数就被允许了,因为它们位于不同的namespace中,不会产生冲突!比如System.Web.UI空间下有TextBox类,而System.Windows.Forms空间下也有一个TextBox类,这两个类的名字完全一致(其实功用也差不多),但你在使用它们的时候,系统能够很好的分辨到底是哪一个,这就是namespace的关系! 当然,除了系统的namespace,开发者可以自己定义自己的namespace。其实当你编译一个解决方案时,系统也会用你的项目名称做名字,生成一个namespace,并把你的类(其实每个web页面就是一个类)都放在这个namespace下面!
      

  4.   

    Assembly :程序集:
    .net 程序的执行经过两个步骤。
    首先编译为MSIL,或者IL就是中间语言,
    这个跟平台无关,跟操作系统无关的2进制代码。
    然后执行的时候有一个JIT编译器将其编译为机器代码。这样程序得以执行,
    程序集不仅包含msil,还包含元数据,就是一些自描述的内容,比如类型,引用的其他程序集等等,
    还有一些资源。程序集一般在代码中跟反射一起出现。
     
    namespace:
    命名空间。
    就是用来区分各个类的一个框框。避免类名字的冲突。
    虽然俩个类名称相同,但是只要命名空间不一样,就能正常使用。一个命名空间可以包含多个程序集,一个程序集也可以跨越多个命名空间。还有就是命名空间引用的问题也要注意下。
      

  5.   

    namespace 关键字用于声明一个范围。此命名空间范围允许您组织代码并为您提供了创建全局唯一类型的方法
    命名空间名可以是任何合法的标识符。命名空间名可以包含句号。 
    即使未显式声明命名空间,也会创建默认命名空间。该未命名的命名空间(有时称为全局命名空间)存在于每一个文件中。全局命名空间中的任何标识符都可用于命名的命名空间中。 
    命名空间隐式具有公共访问权,并且这是不可修改的。 
    assembly配件,程序集(assembly)是包含编译好的、面向.NET Framework的代码的逻辑单元。程序集是完全自我描述性的,也是一个逻辑单元而不是物理单元,它可以存储在多个文件中(动态程序集的确存储在内存中,而不是存储在文件中)。如果一个程序集存储在多个文件中,其中就会有一个包含入口点的主文件,该文件描述了程序集中的其他文件。
      

  6.   

    "一个命名空间可以包含多个程序集"------可以理解为不同的程序集里面可以有同一个命名空间
    对于一个解决方案下的有多个项目的情况,
    比如启动项目A,从属项目B和C
    项目A,B,C可以使用一个名字空间,这个时候在项目A中将B,C引用进来以后,就可以直接在A中使用B,C中的类了。
    如果A,B,C可以并非使用一个名字空间,这个时候在项目A中将B,C引用进来以后,需要在A中每个程序文件开始行加上引入名字空间的程序(import ...)后,
    才可以在A中使用B,C中的类了
    "一个程序集也可以跨越多个命名空间"------可以理解为程序集里面可以有多个命名空间。
    换而言之
    基本上一个项目可以生成一个程序集,而一个项目中肯定是可以有多个名字空间
      

  7.   

    Assembly信息里包括的东西更多.比如:版本信息.
      

  8.   

    Assembly信息里包括的东西更多.比如:版本信息.