天道酬勤

.Net Frame 演示 by Leeson [TM]

导航

.Net Framework Programming 读书笔记(2)

[2005-05-04]

2.1 .Net框架部署目标

Dll hell(DLL地狱);注册表;安全问题 代码访问安全(code access security)

2.2 将类型生成为模块

包含各种类型的源代码文件变成一个可部署的文件。

一个托管PE文件包含4部分:PE表头、CLR表头、元数据和IL代码。
元数据表划分为3类:定义表、引用表和清单表

ildasm.exe /adv ...

2.3 将模块组合为程序集

对于App.exe 文件,不仅仅含有元数据的PE文件,他还是一个程序集(assebmly)。

程序集是CLR操作的对象。特征:
--程序集定义了可重用的类型。
--程序集标识有一个版本号。
--程序集可以包含与之相关的安全信息
把程序集视为一个逻辑上的EXE或者DLL将有助于对他的理解。

多文件程序集原因:
--将类型实现在不同的文件中,允许在互联网下增量下载。
--按需要向程序集中添加/删除资源和数据文件。
--包含不同语言实现的类型。(我们可以对每个模块进行ILDasm.exe 获取IL源代码,然后ILAsm.exe传入所有的IL源代码文件。这个技巧要求编译器产生的只是IL代码,所以对VisualC++ 之类的编译器不适用)

可以创建单独的PE文件,让他仅仅包括清单。

命令开关:/t[arget]:exe;/t[arget]:win;/t[arget]:library
注意:/t[arget]:module产生一个不包括清单的元数据PE文件,总是得到DLL文件,它必须被添加到程序集中。

另外,VisualStudio .Net(IDE) 不支持创建多文件程序集,必须使用命令行工具。


[2005-05-05]

很少使用的类型编译为一个模块:

 csc /t:module RUT.cs

经常使用的类型编译为一个模块,作为程序清单的保存者:

 csc /out:JeffTypes.dll /t:library /addmodule:RUT.netmodule PUT.cs
(把RUT.netmodule文件作为程序集的一部分对待,其中的公有导出类型加入到ExportedTypeDef清单元数据表中)。

  2.3.1使用VisualStudio.NET IDE为项目添加程序集引用(界面操作)

  2.3.2使用程序集链接器 (AL.exe),典型的用于解决本地化问题。

    如:csc /t:module RUT.cs
 csc /t:module FUT.cs
 al /out:JeffTypes.dll /t:library FUT.netmodule RUT.netmodule

生成了第三个文件JeffTypes.dll文件是个很小的Dll PE文件;程序集链接器不能将多个文件组合成一个;
    如:csc /t:module /r:JeffTypes.dll App.cs
 al /out:App.exe /t:exe /main:App.Main app.netmodule

  2.3.3在程序集中包含资源文件

使用AL.EXE 创建程序集:
 /embed[resource]将资源文件(非PE文件)添加到程序集中。
 /link[resource]将只更新清单中的MainfestResourceDef表和FileDef表,资源文件不会嵌入程序集PE文件。


2.4 程序集版本资源信息

使用IDE环境为:AssemblyInfo.cs(vb...)文件

使用AL.EXE参阅命令行开关及定制特性。

2.5 语言文化

语言文化中性(cultrue neutral),卫星程序集(satellite assembly)

2.6 简单应用程序集部署(私有部署程序集)

本地目录下的类型。CLR不会加载另一个仅仅提供同名的类型的程序集。

2.7 简单管理控制(配置)

XX(程序.exe).config配置文件,按照规定格式编写:<?xml version="1.0" ...>...<>

一个应用程序可以控制它的基目录和子目录,但不能控制其它目录。

Machine.config文件中的设置会覆盖特定应用程序的配置文件中相应的设置。GUI 工具.Net Framework Configuration

posted on 2005-07-11 21:20  我自横刀哈哈笑  阅读(177)  评论(0)    收藏  举报