标题：C#和.NET2.0实战:平台、语言与框架
编辑推荐        
本书是一部充满传奇色彩的C＃经典著作。它源自一位微软MVP的多年实战经验，最初用法语写成，由O‘Reilly法国公司出版后，一时洛阳纸贵，曾长期雄踞法国．NET图书榜首。英文版未事宣传，却在众多．NET技术专家口口相传之下。成为社区关注的焦点．获得好评如潮。
本书为何如此神奇昵?与市面上大量讲述C#的普通图书不同，它通过6417个切合实际而且可以直接应用的示例程序。不仅全面讨论了C#2．0语言的各种特性，而且深入．NET平台和．NETFramework2．O内部，讲解了诸多技术细节。书中涉及的知识面虽然很宽，但每个主题都具有相当的深度，充分展现了作者罕见的丰富经验和渊博学识。本书的章节设计非常独特，读者可灵活选择阅读顺序，与此同时，书中的引用非常丰富，与MSDN结合，读者能够轻松获取各种知识。
本书示例可以从配套网站http：Hwww．practicaldot．net／下载。
目录        
第1章　.NET简介　
1.1　什么是.NET　
1.1.1　微软软件开发平台　
1.1.2　一组规范　
1.1.3　.NET概览　
1.2　发展历程　
1.2.1　过去　
1.2.2　现在　
1.2.3　未来　
1.3　微软和Windows以外的.NET　
1.3.1　ECMA组织与.NET　
1.3.2　W3C联盟　
1.3.3　Mono项目　
1.3.4　微软SSCLI项目　
1.4　.NET资源链接　
1.4.1　网站　
1.4.2　新闻组　
1.4.3　博客　
第一部分　.NET平台
第2章　程序集、模块和IL语言　
2.1　程序集、模块和资源文件　
2.1.1　程序集和模块　
2.1.2　资源文件　
2.1.3　程序集、模块、类型和资源　
2.1.4　为何对多模块程序集感兴趣　
2.1.5　ILMerge工具　
2.2　模块的剖析　
2.2.1　可移植的可执行文件简介　
2.2.2　模块的结构　
2.2.3　清单的结构　
2.2.4　类型元数据段的结构　
2.3　使用ildasm.exe和Reflector工具分析程序集　
2.3.1　创建需要分析的程序集　
2.3.2　使用ildasm.exe分析模块　
2.3.3　Reflector工具　
2.4　程序集attribute和版本设定　
2.4.1　程序集的标准attribute　
2.4.2　程序集的版本设定　
2.4.3　友元程序集　
2.5　强名称程序集　
2.5.1　简介　
2.5.2　sn.exe工具　
2.5.3　公钥记号　
2.5.4　为程序集签名　
2.5.5　具体示例　
2.5.6　程序集的延迟签名　
2.6　国际化/本地化与卫星程序集　
2.6.1　区域设置和本地化　
2.6.2　资源文件　
2.6.3　在代码中使用资源　
2.6.4　创建卫星程序集　
2.6.5　部署和使用卫星程序集　
2.6.6　避免在资源无法找到时引发异常　
2.6.7　VisualStudio与卫星程序集　
2.6.8　区域设置与字符串格式化　
2.7　IL语言简介　
2.7.1　栈及其特殊的IL指令　
2.7.2　示例1：局部变量与栈　
2.7.3　示例2：方法调用与栈　
2.7.4　用于比较、分支和跳转的IL指令　
2.7.5　IL的面向对象特性　
2.7.6　元数据符号　
第3章　生成、部署以及配置.NET应用程序　
3.1　用MSBuild生成应用程序　
3.2　MSBuild：目标、任务、属性、项与条件　
3.2.1　.proj文件、目标与任务　
3.2.2　属性　
3.2.3　项　
3.2.4　条件　
3.3　高级MSBuild　
3.3.1　增量生成与目标间的依赖　
3.3.2　MSBuild转换　
3.3.3　将一个MSBuild项目分解到多个文件　
3.3.4　VisualStudio2005如何利用MSBuild　
3.3.5　创建自定义MSBuild任务　
3.4　配置文件　
3.4.1　machine.config文件　
3.4.2　标准配置参数　
3.4.3　使用appSettings元素定义配置参数　
3.4.4　使用配置节定义配置参数　
3.4.5　使用VisualStudio2005创建配置节　
3.4.6　配置节的注意事项　
3.5　程序集部署：XCopy与GAC　
3.5.1　XCopy部署　
3.5.2　共享程序集与GAC文件夹　
3.5.3　GAC的并存存储模型是如何解决DLLhell问题的　
3.5.4　并存执行　
3.5.5　查看及编辑GAC文件夹　
3.6　发布者策略程序集　
3.6.1　潜在的问题　
3.6.2　解决方案　
3.6.3　创建发布者策略程序集　
3.7　.NET应用程序部署简介　
3.7.1　MSI、cab、XCopy、ClickOnce和NTD之间的对比　
3.7.2　MSI与ClickOnce的对比　
3.8　使用cab文件部署应用程序　
3.9　使用MSI技术部署应用程序　
3.9.1　添加文件　
3.9.2　安装快捷方式　
3.9.3　在GAC文件夹中添加一个共享程序集　
3.9.4　安装项目属性　
3.9.5　更新注册表　
3.9.6　指定在安装期间执行的自定义动作　
3.9.7　为安装提供一个自定义用户界面　　
3.10　使用ClickOnce技术部署应用程序　
3.10.1　部署文件夹　
3.10.2　为ClickOnce部署做准备　
3.10.3　ClickOnce部署与移动代码安全　
3.10.4　按需安装与下载组　
3.10.5　更新一个使用ClickOnce安装的应用程序　
3.10.6　应用程序所需的CAS权限集的工作机制　
3.10.7　ClickOnce应用程序安装与执行的细节　
3.11　使用无接触部署(NTD)技术部署应用程序　
3.12　如果目标机器上没有安装.NET运行库怎么办　
第4章　CLR　
4.1　应用程序域　
4.1.1　简介　
4.1.2　线程与AppDomain　
4.1.3　卸载AppDomain　
4.1.4　AppDomain和孤立性　
4.1.5　System.AppDomain类　
4.1.6　在一个进程中承载多个应用程序　
4.1.7　在其他AppDomain的上下文中运行代码　
4.1.8　AppDomain类的事件　
4.1.9　在同一个进程的AppDomain之间共享信息　
4.2　在Windows进程内通过运行库宿主加载CLR　
4.2.1　mscorsvr.dll和mscorwks.dll　
4.2.2　mscorlib.dll程序集　
4.2.3　运行库宿主介绍　
4.2.4　在同一台计算机上承载多个版本的CLR　
4.2.5　使用CorBindToRuntimeExO函数加载CLR　
4.2.6　创建一个自定义的运行库宿主　　
4.2.7　在自定义运行库宿主中调整CLR　　
4.2.8　SQLServer2005运行库宿主的特性　
4.3　剖析.NET应用程序的执行状况　
4.4　定位和加载程序集　
4.4.1　CLR何时尝试定位程序集　
4.4.2　CLR使用的定位算法　
4.4.3　配置文件的assemblyBinding元素　
4.4.4　定位算法示意图　
4.4.5　影子复制机制　
4.5　运行库类型解析　
4.5.1　显式或隐式加载程序集　
4.5.2　编译时引用程序集　
4.5.3　示例　
4.5.4　类型解析算法示意图　
4.6　JIT(即时)编译　
4.6.1　可移植的二进制代码　
4.6.2　即时编译技术简介　
4.6.3　ngen.exe工具　
4.6.4　性能计数器与JIT编译　
4.7　垃圾收集器和托管堆　
4.7.1　垃圾收集技术简介　
4.7.2　垃圾收集算法遇到的问题　
4.7.3　.NET的GC　
4.7.4　第一步：寻找根对象　
4.7.5　第二步：建立活动对象树　
4.7.6　第三步：解除分配非活动对象　
4.7.7　第四步：清理堆碎片　
4.7.8　第五步：重新计算托管引用所使用的物理地址　
4.7.9　推荐做法　
4.7.10　针对大对象的特殊堆　
4.7.11　多线程环境下的垃圾收集　
4.7.12　弱引用　
4.7.13　使用System.GC类影响GC的行为　
4.8　提高代码可靠性的机制　
4.8.1　异步异常及托管代码可靠性　
4.8.2　受约束执行区域　
4.8.3　如何定义CER　
4.8.4　内存门　
4.8.5　可靠性契约　
4.8.6　关键终结器　
4.8.7　临界区　
4.9　CLI和CLS　
4.9.1　.NET语言必须满足的要求　
4.9.2　从开发人员的观点看CLI和CLS　
第5章　进程、线程与同步　
5.1　简介　
5.2　进程　
5.2.1　简介　
5.2.2　System.Diagnostics.Process类　
5.2.3　创建和销毁子进程　
5.2.4　避免在一台机器上同时运行同一应用程序的多个实例　
5.2.5　终止当前进程　
5.3　线程　
5.3.1　简介　
5.3.2　受托管的线程与Windows线程　
5.3.3　抢占式多任务处理　
5.3.4　进程与线程的优先级　
5.3.5　System.Threading.Thread类　
5.3.6　创建与联结线程　
5.3.7　挂起线程　
5.3.8　终止线程　
5.3.9　前台线程与后台线程　
5.3.10　受托管线程的状态图　
5.4　访问资源同步简介　
5.4.1　竞态条件　
5.4.2　死锁　
5.5　使用volatile字段与Interlocked类实现同步　　
5.5.1　volatile字段　
5.5.2　System.Threading.Inter-locked类　
5.5.3　Interlocked类提供的其他功能　
5.6　使用System.Threading.Monitor类与C#的lock关键字实现同步　
5.6.1　EnterO方法和ExitO方法　
5.6.2　C#的lock关键字　
5.6.3　SyncRoot模式　
5.6.4　线程安全类　
5.6.5　Monitor.TryEnterO方法　
5.6.6　Monitor类的WaitO方法、PulseO方法以及PulseAllO方法　
5.7　使用Win32对象同步：互斥体、事件与信号量　
5.7.1　共享Win32同步对象　
5.7.2　互斥体　
5.7.3　事件　
5.7.4　信号量　
5.8　利用System.Threading.Reader-WriterLock类实现同步　113
5.9　利用System.Runtime.Remoting.Contexts.SynchronizationAttr-ibute实现同步　
5.9.1　同步域简介　
5.9.2　System.Runtime.Remoting.Contexts.Synchronization与同步域　
5.9.3　重入与同步域　
5.9.4　另一个名为Synchronization的attribute　
5.10　CLR的线程池　
5.10.1　简介　
5.10.2　使用线程池　
5.11　定时器　
5.11.1　System.Timers.Timer类　
5.11.2　System.Threading.Timer类　
5.11.3　System.Windows.Forms.Timer类　
5.12　异步方法调用　
5.12.1　异步委托　
5.12.2　回调方法　
5.12.3　向回调方法传递状态　
5.12.4　one-way调用　
5.13　线程-资源亲缘性　
5.13.1　System.ThreadStatic-Attribute　
5.13.2　线程本地存储(TLS)　
5.13.3　System.ComponentModel.ISynchronizeInvoke接口　
5.14　执行上下文简介　
第6章　安全性　
6.1　代码访问安全性(CAS)概述　
6.1.1　什么是移动代码　
6.1.2　CAS：全局观　
6.1.3　给程序集代码授予权限　
6.1.4　在运行程序集的代码时检查权限　
6.2　CAS：证据和权限　
6.2.1　什么是证据　
6.2.2　.NETFramework所提供的标准证据　
6.2.3　谁提供证据　
6.2.4　权限　
6.2.5　标准权限　
6.2.6　标识权限　
6.2.7　安全权限　
6.2.8　自定义权限　
6.3　CAS：通过应用安全策略根据证据授予权限　
6.3.1　安全策略级别　
6.3.2　剖析安全策略　
6.3.3　用于应用安全策略的算法　
6.3.4　默认安全策略配置　
6.3.5　配置安全策略　
6.4　CAS：FullTrust权限　
6.5　CAS：从源代码进行命令式的权限检查　
6.5.1　CodeAccessPermissions类和PermissionSet类　
6.5.2　DemandO方法　
6.5.3　DenyO方法、RevertDenyO方法、PermitOnlyO方法和RevertPermitOnlyO方法　
6.5.4　AssertO方法和RevertAssertO方法　
6.5.5　FromXmlO方法和ToXmlO方法　
6.5.6　System.Security.IPermission接口　
6.6　CAS：使用attribute进行声明式的权限检查　
6.6.1　加载程序集时调整所授权限集合的attribute　
6.6.2　命令式与声明式的对比　
6.7　CAS：测试和调试移动代码的实用机制　
6.8　CAS：独立存储区权限　
6.9　.NET、Windows用户与角色　
6.9.1　Windows安全简介　
6.9.2　IIdentity接口与IPrincipal接口　
6.9.3　Windows安全标识符　
6.9.4　在底层Windows线程中模拟用户　
6.10　.NET与Windows资源的访问控制　
6.10.1　Windows访问控制简介　
6.10.2　在.NET代码中使用特殊的SD　
6.10.3　在.NET代码中使用通用的SD　
6.11　.NET与角色　
6.11.1　定义应用程序域的主体策略　
6.11.2　检查用户是否属于某个特定角色　
6.11.3　COM+角色　
6.12　.NET与密码学：对称算法　
6.12.1　对称算法概述　
6.12.2　.NETFramework与对称算法　
6.13　.NET与密码学：非对称算法(公钥/私钥)　
6.13.1　非对称算法概述　
6.13.2　安全会话简介　
6.13.3　RSA算法　
6.13.4　非对称算法与数字签名　
6.13.5　.NETFramework与RSA算法　
6.14　数据保护API　
6.14.1　Windows的数据保护API　
6.14.2　System.Security.Crypto-graphy.ProtectedData类　
6.14.3　System.Security.Crypto-graphy.ProtectedMemory类　
6.14.4　System.Security.SecureString类　
6.14.5　保护配置文件中的数据