Cp2生成打包部署和管理应用程序和类型 部署问题 DLL Hell;安装的复杂性:安全性:代码访问安全性. csc.exe的简单使用. 元数据 定义表:引用表:清单表: 程序集 重用,版本控制,安全的基本单元: 程序清单Manifest EXE或Dll 逻辑概念,可以是一个物理文件,也可以是多个物理文件. 好处:允许增量:添加资源和数据:使用不同语言实现. 自描述性: module不含清单元素,多文件程序集.VS不支持,命令行支持.CLR不能单独加载模块,必须将模块编译到另外一个程序集中,借助另…
2.1.NET Framework部署目标 Microsoft Windows多年来因不稳定和复杂而口碑不佳.造成的原因:1.应用程序都使用来自微软和厂商的动态链接库(dynamic-link library,DLL),可能互相会干扰破坏.2.安装的复杂性:应用程序安装需要将文件复制到目录.更新注册表.创建快捷方式.不能轻松将应用程序转移到另一天电脑,也无法保证卸载干净.3.安全性:程序可能后台操作一些用户不希望发生的动作,比如下载,执行危险操作等. 附注:.NET Framew正尝试解决DLL…
生成.部署和管理1 如何生成强签名的程序集2 如何把程序集放入GAC中3 延迟签名及其作用4 程序集的版本分哪几部分 1 如何生成强签名的程序集在生成程序集时,CLR提供了两种可选类型:强签名程序集.弱签名程序集. 强签名程序集是一个带有公钥和数字签名的程序集,每个强签名都可以由四个元素来唯一标识,它们分别是:文件名.版本号.语言文化和公钥.这些信息都被包含在程序集的清单之中.相对于强签名程序集,弱签名程序集拥有完全一样的元数据.CLR文件头和程序集清单,唯一不同的是弱签名程序集没有公钥,也不进…
#1 垃圾回收平台的基本工作原理: 访问一个资源所需的具体步骤: 1)调用IL指令newobj,为代表资源的类型分配内存.在C#中使用new操作符,编译器就会自动生成该指令.2)初始化内存,设置资源的初始状态,使资源可用.类型的实例构造器负责设置该初始状态.3)访问类型的成员(可根据需要反复)来使用资源.4)摧毁资源的状态以进行清理.正确清理资源的代码要放在Finalize, Dispose和Close方法.5)释放内存.垃圾回收器独自负责这一步. 托管堆如何知道应用程序不再用一个对象? 托管堆…
CLR(Common Language Runtime)公共语言进行时是一个可由多种编程语言使用的“进行时”. 将源代码编译成托管模块 可用支持CLR的任何语言创建源代码文件,然后用对应的编译器检查语法和分析源代码.无论选择哪个编译器,结果都是托管模块(managed module).托管模块是标准的32位Microsoft Windows可移植执行体(PE32)文件,或者是标准的64位Windows可移植执行体(PE32+)文件,他们都需要CLR才能执行.(注:PE是Portable Exec…
前言 近段时间工作需要用到了这块知识,遂加急补了一下基础,CLR中这一章节反复看了好多遍,得知一二,便记录下来,给自己做一个学习记录,也希望不对地方能够得到补充指点. 1,.托管代码和非托管代码的区别 2.托管堆是什么? 3.托管堆基础,托管堆分配资源 4.内存泄漏 内存溢出.内存损坏 5.C# new操作符分配资源 6.垃圾回收算法 7.代:提升性能 8.垃圾回收触发条件 9.大对象 10.使用需要特殊清理的类型 11.使用包装了本机资源的类型 一.托管代码和非托管代码的区别 托管代码:执行过…
转自:http://www.cnblogs.com/wang_yb/archive/2013/05/23/3095907.html 内核的内存使用不像用户空间那样随意,内核的内存出现错误时也只有靠自己来解决(用户空间的内存错误可以抛给内核来解决). 所有内核的内存管理必须要简洁而且高效. 主要内容: 内存的管理单元 获取内存的方法 获取高端内存 内核内存的分配方式 总结 1. 内存的管理单元 内存最基本的管理单元是页,同时按照内存地址的大小,大致分为3个区. 1.1 页 页的大小与体系结构有关,…
go语言简易web应用 & 二维码生成及解码 & 打包部署 转载请注明出处: https://www.cnblogs.com/funnyzpc/p/10801476.html 前言(闲扯) (20190503)我知道今天会有其他活动,因此我提前买了杯咖啡, (20190504)我知道深夜会完不成博客, 因此我加班到了这个点. 首先需要做的事情,Demo 准备并调试 还需要做的事情,构建github项目 以及要做的事情,README文档编写 最后要做的事情,生成一篇博客 简单WEB应用 话说…
#1 加载程序集 Assembly.Load: public class Assembly { public static Assembly Load(AssemblyName assemblyRef); public static Assembly Load(String assemblyString); } 在内部,Load导致CLR向应用程序集应用一个版本绑定重定向策略,并在GAC中查找程序集.如果传递的是一个弱命名程序集,不会应用版本绑定重定向策略,也不会去GAC中查找程序集. AppD…
1.接口对一组方法签名进行了统一命名.接口还能定义事件.无参属性和有参属性(C#的索引器). 2.c#禁止接口定义任何一种静态成员. 3.C#编译器要求将实现接口的方法标记为public.CLR要求将接口的方法标记为virtual.不将方法显示标记为virtual,编译器会将它们标记为virtual和sealed:这会阻止派生类重写接口方法.将方法显式标记为virtual,编译器就会将方法标记为virtual,使派生类能重写它.派生类不能重写sealed的接口方法.但派生类可重新继承同一个接口,…