您的位置:首页 > 编程语言 > C#

c#生成、打包、部署和管理应用程序类型

2015-11-23 09:07 405 查看
1、可以在应用程序的配置文件中制定一个codeBase元素,从而配置这个应用程序下载程序集。在codeBase元素定义的URL所指向的位置,可找到程序集的所有文件。试图加载程序集的一个文件时,CLR将获取codeBase元素的URL。如果找不到就会抛出一个FileNoteFoundException的异常
2、使用多文件程序集的三点理由:
(1)可用单独文件对类型进行划分;
(2)可在自己的程序集中添加资源或数据文件;
(3)程序集包含的各个类型可以用不同的编程语言来实现。
ILDasm应用程序和 ILAsm应用程序
ILDasm应用程序可以显示元信息!要注意这个工具的使用 Ctrl+M表示显示元数据!
3、假如多个类型能共享相同的版本号和安全性设置,建议将所有这些类型都放到一个文件中,而不要将这些类型分散到多个文件中,更不要分散到多个程序集中。
4、为了生成一个程序集,必须选择自己的一个PE文件作为“清单”的宿主。否则,也可以创建一个单独的PE文件。
5、元数据清单表:


,还有其他的FileDef,MainfestResourceDef , ExportedTypesDef,AssembleRef
FileDef: 作为程序集一部分的每个PE文件和资源文件在这个表中都有一个对应的记录项。

6、程序集的生成:

制定下列任何一个开关,C#编译器都会生成一个程序集,/target:exe /target:winexe /target:library。所有这些开关都会造成编译器生成含有清单元数据表的一个PE文件。最终生成的文件分别是:CUI执行体、GUI执行体、或者DLL
除了这些开关,还有个/target:module。这个开关指示编译器生成一个不包含清单元数据表的PE文件。这样生成的是一个DLL PE文件。CLR要想访问任何类型,必须先将该文件添加到一个程序集中。 .netmodule扩展名。
加载开关:/addmodule
(1) csc /t:module *.cs
(2) csc /out:*dll /t:library /addmodule:*.netmodule *.cs

元数据Token:一个4字节的值,其中,高位字节指明token的类型:0x01=TypeRef 0x02=TypeDef 0x23=AssemblyRef 0x26=FileDef 0x27= ExportedType,token的三个低位字节指明对应的元数据表中的行

7、程序集的使用:
使用 /reference : *.dll编译器开关来使用。

注意:一个方法首次被调用时,CLR会检测作为参数、返回值或者局部变量而被方法引用的类型。然后,CLR尝试加载所引用的程序集中包含了清单的那个文件;如果要访问的类型恰好在这个人间中,CLR会执行内部登记工作,允许这个类型使用。如果清单指出被引用的类型在一个不同文件中,CLR会尝试加载需要的文件,同样执行内部登记,并允许访问该类型。

vs中要使自己的程序集出现在“.NET"选项卡的列表中,要在注册表中添加以下子项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramwork\AssemblyFolders\
MyLibName
然后修改它的默认字符串值,使其引用包含了自己程序集文件的一个目录路径。
HKEY_LOCAL_MACHINE 这个会使用所用用户添加这些程序集;使用HKEY_CURRENT_USER就只能为当前用户添加程序集

8、使用Al.exe工具生成程序集
(1) al /out:*.dll /t:library *.netmodule *.netmodule . 使用/target:exe /target:winexe命令行开关来实现 *.exe文件
(2)可指定将一个模块中的哪个方法作为入口使用。为此,需要在调用al.exe时添加/main命令行开关。
al /out:Program.exe /t:exe /main:Program.Main Program.netmodule Al.exe会生成一个小的全局函数:_EntryPoint

9、使用Al.exe来创建程序集,可以为程序集添加资源文件。
编译器开关,可以使用/embedresource 开关实现。 清单的MainfestResourceDef表会进行相应的更新
编译器开关,可以使用/linkresource开关,不过只会更新清单,指出资源的存在,并指出资源包含在程序集的哪个文件中。资源不会嵌套程序集PE文件。

可以在程序集中嵌入标准的win32资源,为此,只需在使用AL.EXE或者csc.exe时,使用/win32res开关来制定一个.res文件的路径名;除此之外,也可以使用/win32icon开关来制定.ico文件的路径名,从而将一个标准的Win32图标资源快速、简单地嵌入程序集中。

vs中使用的方法:
项目的属性,然后再“应用程序”选项卡中添加资源文件。

10、强程序集的部署方式:部署到GAC中;以私有方式部署;还可部署到只有少数引用程序才知道的目录(需要使用配置文件XML中的codeBase元素来标记一个url)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: