CLR Via C# 3rd 阅读摘要 -- Chapter 2 - Building, Packaging, Deploying, and Administering Applications and Types

 ̄綄美尐妖づ 提交于 2020-02-26 04:05:42

 .Net Framework Deployment Goals

  1. “DLL Hell”问题的由来,以及.NET的安全模型CAS(Code Access Security)。

 Building Types into a Module

 1. winexe, exe, library,csc.exe在编译输出目标时的常用开关:/out;/t[arget];/r[eference];/nostdlib

 2. Response Files的作用,全局和本地的rsp文件;

 3. 编译器在查找/reference依赖文件时的遍历顺序:当前目录->编译器所在目录->/lib开关指定的目录->LIB环境变量指定的目录。 

 A Brief Look at Metadata

 1. 托管PE文件的四个主要部分:PE32(+) Header、CLR Header、Metadata、IL; 

 2. Metadata的3个分类:

  • Definition(ModuleDef,TypeDef,MethodDef,FieldDef,ParamDef,PropertyDef,EventDef);
  • Reference(AssemblyDef,ModuleDef,TypeDef,MemberDef);
  • Manifest(AssemblyDef,FileDef,ManifestResourceDef,ExportTypesDef)。

 3.用ILDASM.exe来看MetaInfo。 

 Combining Modules to Form an Assembly

 1. 程序集的特点:

  • 定义了可重用类型;
  • 有版本号来标记;
  • 有关联的安全信息。

 2. 程序集的作用:可重用类型的逻辑与物理概念分离,是复用、安全、版本的最小单元;

 3.一个程序集可以有多个文件(multifiles assembly),使用多文件程序集的3个原因:

  • 分片出售,下载,安装;
  • 在程序集中加入资源和数据文件;
  • 多语言分别实现。 

 4.  VS Studio IDE不支持多文件程序集,必须使用命令行工具;

 5. 如何输出模块不含有Manifest元数据?/t[arget]:module; 编译器通过/addmodule附加到目标上;

 6. Metadata Tokens 4-bytes的含义,CorHdr.h中的CorTokenType类型。 

 7. 如何在引用对话框中的.NET标签中显示自己的程序集?HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETFramework/AssemblyFolders/MyLibName;

 8. 使用AL.exe,/main: 

 9. 在程序集中加入资源文件:/embed[resource],/link[resource]

 Assembly Version Resource Information

 1. 获得程序集的资源信息:System.Diagnostics.FileVersionInfo's GetVersionInfo;

 2. AssemblyInfo.cs;

 3. 程序集版本号:Major.Minor.Build.Revision。

 Culture

 1. Culture Neutral;

 2. Satellite Assemblies; 

 3. AL.exe /c[ulture]:text。当发布satellite assembly时,应该放在匹配的子目录下,比如:D:\MyApp\en-US。 

 Simple Application Deployment(Privately Deployed Assemblies)

 1. 如何发布程序集,这里讲了非全局发布的情况。

 Simple Administrative Control(Configuration)

 1. 配置文件的比较;

 2. 遍历程序集的策略(为什么这么麻烦呢,给出一条规则,就必须放这起这个名不就行了?) 

 3. Machine.config、Web.config、MyApp.exe.config。

 本章小结

  本章主要介绍了模块、程序集的文件结构,它们之间的关系,部署程序集的方式以及需要注意的问题。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!