网站大量收购独家精品文档,联系QQ:2885784924

C#讲义装配件分析.ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 16 装配件 Windows下可执行程序 装配件特性 * 1 Windows下可执行程序 在.NetFramework环境下,可执行程序以装配件的形式出现。 Windows下的可执行程序:(PE) portable Executable. Exe,dll,ocx,com等。 Exe可独立执行的应用程序。 Dll动态链接库,在运行时刻被链接到其他的进程中。往往输出一些库函数,被其他进程调用。 普通DLL。输出符合(函数,变量,资源等)通过拷贝安装。 COM DLL。在注册表中注册。位置透明。 DLL的问题: 版本冲突。 DLL Hell。 安全性。 * 2 装配件特性 装配件也有两种形式,exe和dll 特性: 自我描述 装配件是自我描述的,不需要注册,不需要类型库或其他的类型说明(.tlb, or .h) 装配件包含描述装配件的元数据。元数据包含一个清单和从装配件中导出的类信息。 装配件的版本依赖性在清单中有记录。 装配件可以并行加载。同一个应用程序可以同时加载某装配件的不同版本。 应用程序使用应用域来确保其独立性 安装简单 只需要拷贝,无需注册(0影响安装) * 3 装配件结构 装配件组成部分 描述装配件的元数据 描述导出类的元数据 MSIL代码 资源 以上部分可以分布在一个文件中,也可以分布在几个文件中。 * 此装配件由一个文件组成。 A.dll 装配件元数据 类型元数据 IL代码 资源 * 装配件 B.dll 装配件元数据 IL代码 资源 C.module 类型元数据 IL代码 资源d.jpg 此装配件由三个文件组成 * 4 装配件清单manifest 是元数据的一部分,描述了装配件以及引用它所需要的全部信息: 装配件信息: 名称,版本,公司名称,文化,商标,公共秘钥等等信息,这些信息可以在代码中使用特性(attribute)的方式指定。 配件模块信息。通常只有一个默认的主模块,但是可以加入多个模块。 配件中包含的类型与资源列表 配件引用其他配件的信息。每一个配件都至少会引用mscorlib配件。这是.NET的核心配件库。 关于元数据的定义规范参见Common Language Infrastructure (CLI)Partition II: Metadata Definition and Semantics 该规范位于FrameworkSDK\Tool Developers Guide\Docs\ 文件夹下的 Partition II Metadata.doc文件 * 通过ILDASM还可以查看装配件所包含的类的全部信息。 名字空间 类 接口 方法 字段 事件 属性等等 而且可以查看这些元素的实现方式。(MSIL语言)MSIL 代码有关所有详细信息,参见 CIL Instruction Set Specification(CIL 通用中间语言指令集规范),该规范位于 FrameworkSDK\Tool Developers Guide\Docs\ 文件夹下的 Partition III CIL.doc 文件中。) * 设置装配件信息: 老版本:AssemblyInfo.cs 新版本:项目属性 应用程序 程序集信息 查看装配件信息 使用ILDASM工具 MSIL disassemble查看。 老版本:在安装目录\SDK\版本号\Bin\ildasm.exe 新版本:c:\program files\microsoft sdks\windows\v7.0a\bin\NETFX 4.0 Tools\ildasm.exe 练习:查看一个exe和dll的装配件信息。 * 5 创建模块 可以直接使用IDE的向导创建装配件,也可以使用命令行方式的编译器命令创建模块。 模块是一个没有装配件特性的dll,但是可以在以后添加到装配件中。配件可以由多个模块组成。默认情形下,一个装配件只有一个模块(一个完整的应用程序可能包含多个配件) 模块可以独立存在。并在以后添加到配件中去。 (一个可执行程序可以链接多个函数库) 模块的生成方法: 使用编译器: Csc /out: a.netmodule /target:module Class1.cs 以上命令把源代码Class1.cs 编译为模块a.netmodule 模块不能直接使用。必须先编译成为dll。 Csc /target:library /addmodule:a.module /out:a.dll * 也可以把两个模块合并程一个dll。 Csc /target:library /addmodule:a.module /addmodule:b.module /out:Two.dll *

文档评论(0)

琼瑶文档 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档