首页 > 其他 > 详细

【CLR Via C#】2 程序集

时间:2014-03-19 23:33:34      阅读:594      评论:0      收藏:0      [点我收藏+]

1 定义:

  • 程序集是net 应用程序的部署单元,是组件服用,以及实施安全策略和版本策略的最小单元。
  •  程序集是包含一个或者多个类型定义文件和资源的集合
    本地dll或exe与程序集不同
         net 程序集包含元数据(注:描述了程序集中定义的所有类型及其成员信息,即方法、属性、事件和字段)

2 结构:

     bubuko.com,布布扣bubuko.com,布布扣
    
  这些结构可以在一个文件中也可以在几个文件中。分布在一个文件中的情况是如上图所示,对于分布到不同文件下,如图2-2
 

3 私有程序集和共享程序集

  • 私有程序集:默认是私有程序集,位于应用程序所在的同一个目录下,或者位于其子目录中。
  • 共享程序集:必须有一个版本号,通常安装在(global assembly cache位于Windows/assembly)。任何程序都可以引用他;一般在一个大型应用程序分布在几个子项目中是,常常需要使用共享程序集。
  • 强名:为了保护共享程序集的唯一性,我们必须在共享程序集上加上密钥。如果密钥不同即使两个组件名称相同也不是同一个组件。
4 创建程序集
 
  对应于上面第二点说明的一个程序集中分别在不同的文件中。这其中模块的作用其一模块能够更快的启动程序集,并且并不是所有类型都在一个文件中;其二在使用多种编程语言来创建一个程序集(如:一个模块用vb编写,另外一个模块用c#编写,并且这两个模块都包括在一个程序集中。如下图的例子,就是印证第二点的多个文件创建程序集
 bubuko.com,布布扣

5 应用程序域

  Dot Net 建立的可执行程序.exe;并没有直接挂载到进程中,而是承载在应用程序域上。应用程序域可以看成轻量级别的进程。一个应用程序域可以装载一个可执行程序exe或者多个程序集。AppDomain 类用于创建和终止应用程序域,加载和卸载程序集和类型,以及枚举应用程序域中的程序集和线程。
  •      对于用AppDomain进行创建应用程序域并且加载程序集,例子如下所示
  
bubuko.com,布布扣
//文件2.cs
using System;
public class Bar
{
    public static void Main()
    {
        Console.WriteLine("Bar");
    }
}
bubuko.com,布布扣
1
2
3
4
5
6
7
8
9
10
11
12
13
//1.cs
using System;
using System.Reflection;
 
public class temp{
     public static void Main()
     {
          AppDomain testDomain=AppDomain.CreateDomain("TestDomain");
          Console.WriteLine(testDomain.FriendlyName);//"TestDomain"
          //通过调用程序集2.exe,并且执行输出“bar”
          testDomain.ExecuteAssembly("2.exe");
     }
}
  • 对于销毁应用程序域可以直接调用:AppDomain.Unload(testDomain);可以直接销毁应用程序域

【CLR Via C#】2 程序集,布布扣,bubuko.com

【CLR Via C#】2 程序集

原文:http://www.cnblogs.com/luge/p/ClR_Via_CSharp_Assembly.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!