[发明专利]用于托管程序集的增量式生成的方法和系统有效
申请号: | 201210053833.5 | 申请日: | 2012-03-02 |
公开(公告)号: | CN102707982B | 公开(公告)日: | 2017-06-09 |
发明(设计)人: | G·A·P·伊巴拉;P·维拉森 | 申请(专利权)人: | 微软技术许可有限责任公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 上海专利商标事务所有限公司31100 | 代理人: | 蔡悦 |
地址: | 美国华*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 托管 汇编 增量 生成 | ||
1.一种用于增量式地生成托管程序集的计算机实现的方法,所述计算机实现的方法包括执行计算机实现的操作,所述操作用于:
生成包括多个类型(204、702、704)的主程序集(202、700);
检测所述多个类型(204、702、704)中的特定类型(704)的类型改变;
生成包括反映该特定类型(704)的类型改变的已改变的类型(210、712)的新程序集(208、710);以及
用来自所述新程序集(208、710)的已改变的类型(210、712)来替换所述主程序集(202、700)中的该特定类型(704)。
2.如权利要求1所述的计算机实现的方法,其特征在于,所述已改变的类型引用来自所述主程序集的多个类型中的至少一个其他类型。
3.如权利要求2所述的计算机实现的方法,其特征在于,所述主程序集包括单个动态链接库(.dll)文件,该单个动态链接库文件包括公共中间语言(CIL)代码以及程序集清单。
4.如权利要求1所述的计算机实现的方法,其特征在于,生成所述主程序集和所述新程序集包括,利用.NET框架类库(FCL)的System.Reflection.Emit命名空间内的中间语言代码生成器(IL生成器)类来生成所述主程序集和所述新程序集。
5.如权利要求1所述的计算机实现的方法,其特征在于,用来自所述新程序集的已改变的类型来替换所述主程序集中的特定类型包括,利用由公共编译器基础结构(CCI)框架所提供的功能、用来自所述新程序集的已改变的类型来替换所述主程序集中的特定类型。
6.一种用于托管程序集的增量式生成的方法,包括:
将以托管编程语言编写的源代码(102)编译成公共中间语言(CIL)代码和元数据,由此生成程序集(116、500),所述程序集(116、500)包括:
包含程序集清单(122)的动态链接库(.dll)文件(502),所述程序集清单(122)包括所述元数据,以及
包括所述CIL代码的多个.net模块文件(124、126、504、510);
将所述程序集(116、500)表示在文件系统的第一位置中;
检测所述多个.net模块文件(124、126、504、510)中的一.net模块文件(124、510)内的类型改变;
响应于检测到所述类型改变,重新生成在其中已检测到所述类型改变的该.net模块文件(124、510),由此形成重新生成的.net模块文件(136、528);
生成包括所述重新生成的.net模块文件(136、528)的临时程序集(134、530);
将所述临时程序集(134、530)表示在所述文件系统的第二位置中;
从所述文件系统的第二位置复制所述重新生成的.net模块文件(136、528);
用从所述文件系统的第二位置所复制的重新生成的.net模块文件(136、528)来替换所述文件系统的第一位置中的.net模块文件(124、510);以及
重新生成包括所述程序集(116、500)的程序集清单(122)的.dll文件(502)。
7.如权利要求6所述的方法,其特征在于,生成程序集以及生成临时程序集包括:利用.NET框架类库(FCL)的System.Reflection.Emit命名空间内的中间语言代码生成器(IL生成器)类来生成所述程序集以及生成所述临时程序集。
8.如权利要求6所述的方法,其特征在于,重新生成包含所述程序集的程序集清单的.dll文件包括:利用由公共编译器基础结构(CCI)框架提供的功能来重新生成所述程序集清单以形成重新生成的程序集清单。
9.如权利要求6所述的方法,其特征在于,重新生成.net模块文件包括:重新生成引用所述多个.net模块文件中的至少一个的.net模块文件,该.net模块文件依赖于所述多个.net模块文件中的所述至少一个。
10.如权利要求6所述的方法,其特征在于,还包括:
生成多个调试文件,所述多个调试文件中的每一个与所述多个.net模块文件中的一个相关联;以及
重新生成所述多个调试文件中与该.net模块文件相关联的调试文件。
11.一种用于托管程序集的增量式生成的系统,包括:
用于将以托管编程语言编写的源代码(102)编译成公共中间语言(CIL)代码和元数据,由此生成程序集(116、500)的装置,所述程序集(116、500)包括:
包含程序集清单(122)的动态链接库(.dll)文件(502),所述程序集清单(122)包括所述元数据,以及
包括所述CIL代码的多个.net模块文件(124、126、504、510);
用于将所述程序集(116、500)表示在文件系统的第一位置中的装置;
用于检测所述多个.net模块文件(124、126、504、510)中的一.net模块文件(124、510)内的类型改变的装置;
用于响应于检测到所述类型改变,重新生成在其中已检测到所述类型改变的该.net模块文件(124、510),由此形成重新生成的.net模块文件(136、528)的装置;
用于生成包括所述重新生成的.net模块文件(136、528)的临时程序集(134、530)的装置;
用于将所述临时程序集(134、530)表示在所述文件系统的第二位置中的装置;
用于从所述文件系统的第二位置复制所述重新生成的.net模块文件(136、528)的装置;
用于用从所述文件系统的第二位置所复制的重新生成的.net模块文件(136、528)来替换所述文件系统的第一位置中的.net模块文件(124、510)的装置;以及
用于重新生成包括所述程序集(116、500)的程序集清单(122)的.dll文件(502)的装置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210053833.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:用于咨询服务网络的游戏档案
- 下一篇:气压模式浅埋暗挖法盾构