首先,编译输出的exe是一个由中间语言(il),元数据(metadata)和一个额外的被编译器添加的目标平台的标准可执行文件头(比如win32平台就是加了一个标准win32可执行文件头)组成的pe(portable executable,可移植执行体)文件,而不是传统的二进制可执行文件--虽然他们有着相同的扩展名。中间语言是一组独立于cpu的指令集,它可以被即时编译器jitter翻译成目标平台的本地代码。中间语言代码使得所有microsoft.net平台的高级语言c#,vb.net,vc.net等得以平台独立,以及语言之间实现互操作。元数据是一个内嵌于pe文件的表的集合。
2.安全性
。net提供了一组安全方案。负责进行代码的访问安全性检查。允许我们对保护资源和操作的访问。代码需要经过身份确认和出处鉴别后才能得到不同程度的信任。安全策略是一组可配置的规则,公共语言运行库在决定允许代码执行的操作时遵循此规则。安全策略由管理员设置,并由运行库强制。运行库确保代码只能访问安全策略允许的资源和调用安全策略允许的代码。
每当发生加载程序集的尝试时,运行库就使用安全策略确定授予程序集的权限。在检查了描述程序集标识的信息(称为证据)后,运行库使用安全策略决定代码的信任程度和由此授予程序集的权限。证据包括但不仅限于代码的出版商、它的站点以及它的区域。安全策略还确定授予应用程序域的权限。
安全性参考: