(十九)程序集
来源:互联网 发布:淘宝待收货订单生成器 编辑:程序博客网 时间:2024/05/21 11:13
程序集是.net应用程序的部署单元,可以包含一个或多个程序集,通常扩展名为exe或dll.与本地exe和dll不同的是,它包含元数据,描述了程序集中定义的所有类型及其成员信息.还提供了程序集中文件的相关信息、版本信息和所使用的程序及信息.它是自我描述的安装单元
.net运行库允许一个进程中有多个CLR版本(2和4),多个应用程序域运行在一个进程中,而每个应用程序加载到一个应用程序域中,即多个应用程序运行在一个进程中,(可保证安全?通过不安全代码可访问整个进程空间.)
程序集结构
程序集元数据、类型元数据、MSIL代码、资源
程序集清单是元数据的一部分,描述了程序集和引用它所需要的所有信息,列出依赖关系,许可等.
程序集可以使用ILDASM查看,它是一个MSIL反汇编程序
动态加载使用Assembly类的静态方法Load();
动态编译C#代码
using System.Reflection;using System.IO;using System.CodeDom.Compiler;using Microsoft.CSharp; CompilerResults results = null; using (var provider = new CSharpCodeProvider()) { var options = new CompilerParameters(); options.GenerateInMemory = true; results = provider.CompileAssemblyFromSource(options, "int a;"); } if (results.Errors.HasErrors == false) { var temp = Console.Out; var writer = new StringWriter(); Console.SetOut(writer); var driverType = results.CompiledAssembly.GetType("Driver"); driverType.InvokeMember("Run", BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.Public, null, null, null); Console.SetOut(temp); writer.ToString(); }
应用程序域
AppDomain类用于创建和终止应用程序域,加载和卸载程序集和类型,以及枚举应用程序域中的程序集和线程.
AppDomain.CurrentDomain.FriendlyName;//应用程序域名称AppDomain.CreateDomain("New AppDomain").ExecuteAssembly("AssemblyA.exe");//创建一个新的应用程序域,加载程序集AppDomain aDomain = AppDomain.CreateDomain("New AppDomain");aDomain.CreateInstance("AssmblyA", "Wrox.ProCSharp.Assemblies.Demo". true, BindingFlags.CreateInstance, null, new object[] {7,3},null,null);//加载程序集中类的实例
在运行库宿主上,会自动创建应用程序域,多数应用程序仅有默认的应用程序域,Asp.net为运行在Web服务器上的每个Web应用程序创建一个应用程序域.卸载程序集只能通过终止应用程序域来进行.
共享程序集
必须使用强名全局唯一地标识共享程序集,一般安装在全局程序集缓存(GAC)中.
使用本机映像生成器Ngen.exe,可以在安装期间把IL代码便以为本机代码,可增加程序启动速度.
0 0
- (十九)程序集
- 十九
- 十九
- 十九
- 十九
- 微信小程序把玩(十九)radio组件
- 每天一个C++小程序(十九)--桶排序
- opencv程序十九:基于帧间差分法的区域目标入侵检测
- 微信小程序把玩(二十九)video组件
- 二十九、在storm上运行python程序(修正)
- 一个屌丝程序猿的人生(十九)
- 一个屌丝程序猿的人生(二十九)
- 一个屌丝程序猿的人生(十九)
- 算法题练习系列之(十九): 程序运行时间
- C语言函数集(十九)
- 马士兵struts2视频教程第二十九集
- 马士兵struts2视频教程第三十九集
- 马士兵struts2视频教程第四十九集
- 中国创新公司TOP10:小米第一腾讯百度上榜
- Notification 支持可视组件
- Unity代码混淆方案
- Prim's Minimal Spanning Tree_Prim(最小生成树的Prim算法)
- JDK,JRE,JVM区别与联系
- (十九)程序集
- Fragment获取Activity,Activity获取Fragment
- AtomicStampedReference解决ABA问题
- IBM SPSS Modeler 和spss statistics有什么不同
- Jtree的使用方法-swing 一共很多个例子--添加节点--先序遍历
- 真心爱一个人时,神马都是浮云
- hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- 给B处添加链接,整个统计情况dataWindow更新
- UILabel Category 计算UILabel内容大小