C#揭秘(图灵程序设计丛书,微软技术系列)(C#3.0 Unleashed with the .Net Framework 3.5)
分類: 图书,计算机与互联网,程序语言与软件开发,语言与开发工具,C语言及其相关,
品牌: 梅奥(Joe Mayo)
基本信息·出版社:人民邮电出版社
·页码:695 页
·出版日期:2010年04月
·ISBN:9787115222213
·条形码:9787115222213
·版本:第1版
·装帧:平装
·开本:16
·正文语种:中文
·丛书名:图灵程序设计丛书,微软技术系列
·外文书名:C#3.0 Unleashed with the .Net Framework 3.5
产品信息有问题吗?请帮我们更新产品信息。
内容简介C#提供了很多强大的特性,特别是通过使用lambda表达式、扩展方法和 LINQ,方便地引入了函数式编程,使C#程序员如虎添翼。本书以C#语言的预备知识开篇,最后以部署代码结束全书,全面深入地讲解了.NET技术的各个知识点,在广度和深度上恰到好处。本书不仅系统地阐述了C#开发相关的重要理论知识,而且还提供了大量的实例和解决常见问题的最佳方案,是.NET开发人员必备的参考书。 本书适合于各层次的.NET开发人员阅读。
目录
目录 第一部分C#基础 第1章.NET平台简介2 1.1.NET是什么2 1.2CLR3 1.2.1为什么CLR如此重要3 1.2.2CLR特性4 1.2.3CLR执行过程4 1.3.NET FCL6 1.4C#和其他.NET语言7 1.5CTS7 1.6CLS7 1.7小结8 第2章C#和Visual Studio 2008概述9 2.1编写一个简单的C#程序9 2.2创建一个VS2008项目12 2.2.1运行新项目向导12 2.2.2理解解决方案和项目14 2.2.3使用VS2008编写代码15 2.2.4生成和运行程序16 2.2.5设置编译器选项18 2.3注释代码19 2.3.1多行注释19 2.3.2单行注释19 2.3.3XML文档注释19 2.4标识符和关键字21 2.4.1标识符21 2.4.2关键字22 2.5约定和风格22 2.6变量和类型23 2.6.1变量23 2.6.2简单类型24 2.7明确赋值27 2.8与程序交互28 2.8.1与控制台屏幕通信28 2.8.2与命令行通信28 2.8.3VS2008中的命令行选项28 2.8.4从程序返回值30 2.9小结30 第3章编写C#表达式和语句31 3.1C#运算符31 3.1.1一元运算符31 3.1.2二元运算符33 3.1.3关系运算符34 3.1.4逻辑运算符36 3.1.5赋值运算符38 3.1.6三元运算符38 3.1.7其他运算符39 3.2语句40 3.3块和作用域40 3.4标签41 3.5运算符优先级和结合性41 3.6选择和循环语句42 3.6.1if语句42 3.6.2switch语句44 3.6.3C#循环45 3.6.4goto语句48 3.6.5break语句49 3.6.6continue语句50 3.6.7return语句50 3.7小结51 第4章理解引用类型和值类型52 4.1引用类型和值类型简介52 4.2统一类型系统53 4.2.1统一类型系统的工作原理53 4.2.2使用object进行通用编程54 4.2.3装箱和拆箱对性能的潜在影响54 4.3引用类型和值类型的内存分配56 4.3.1引用类型内存分配57 4.3.2值类型内存分配58 4.4引用类型和值类型赋值58 4.4.1引用类型赋值58 4.4.2值类型赋值61 4.5引用类型和值类型之间的更多区别62 4.5.1引用类型和值类型继承的区别62 4.5.2引用类型和值类型构建和终结的区别62 4.5.3引用类型和值类型对象大小的考虑63 4.6C#和.NET框架类型63 4.6.1C#别名和CTS63 4.6.2使用System.Guid64 4.6.3操作System.DateTime65 4.7可空类型69 4.8小结70 第5章操作字符串71 5.1C#字符串类型71 5.1.1格式化字符串72 5.1.2比较字符串74 5.1.3检查字符串是否相等75 5.1.4连接字符串75 5.1.5复制字符串76 5.1.6检查字符串内容77 5.1.7提取字符串信息77 5.1.8填充和移除字符串输出78 5.1.9更改字符串内容79 5.1.10分离和结合字符串80 5.1.11操作字符串字符81 5.1.12通过驻留池影响CLR的字符串处理82 5.2StringBuilder类83 5.2.1Append方法83 5.2.2AppendFormat方法83 5.2.3EnsureCapacity方法84 5.2.4ToString()方法84 5.3正则表达式84 5.3.1基本的正则表达式操作85 5.3.2深入了解正则表达式85 5.3.3练习正则表达式的应用程序86 5.4小结88 第6章数组和枚举89 6.1数组89 6.1.1一维数组90 6.1.2多维数组91 6.1.3交错数组92 6.2System.Array类93 6.2.1数组边界93 6.2.2搜索和排序94 6.3使用枚举类型95 6.4System.Enum结构97 6.4.1枚举类型、整型和字符串之间的转换97 6.4.2迭代枚举类型成员98 6.4.3其他System.Enum成员98 6.5小结99 第7章用Visual Studio 2008调试应用程序100 7.1单步调试代码100 7.1.1调试示例程序100 7.1.2设置断点100 7.1.3检查程序状态101 7.1.4单步调试代码103 7.1.5其他必备的调试命令104 7.1.6使用调试器找出程序错误104 7.1.7附加到进程107 7.2小结109 第二部分使用C#面向对象编程 第8章设计对象112 8.1对象成员112 8.2实例和静态成员113 8.3字段113 8.3.1常量字段114 8.3.2readonly字段114 8.4方法114 8.5属性115 8.5.1声明属性115 8.5.2使用属性115 8.5.3自动实现属性116 8.5.4VS2008属性代码段116 8.6索引器116 8.7回顾一下哪里适合使用分部类型117 8.8静态类118 8.9System.Object类118 8.9.1检查对象类型118 8.9.2比较引用119 8.9.3检查相等性119 8.9.4获得散列值119 8.9.5克隆对象120 8.9.6将对象作为字符串使用120 8.10小结121 第9章设计面向对象程序122 9.1继承122 9.1.1基类123 9.1.2调用基类成员123 9.1.3隐藏基类成员124 9.1.4版本控制124 9.1.5密封类126 9.2封装对象内部信息127 9.2.1数据隐藏127 9.2.2使用修饰符支持封装127 9.2.3用于对象的访问修饰符130 9.2.4包含和继承130 9.3多态131 9.3.1仔细查看多态解决的问题131 9.3.2使用多态来解决问题133 9.3.3属性多态135 9.3.4索引器多态135 9.3.5覆写System.Object类成员136 9.4小结138 第10章编写方法和自定义操作符139 10.1方法139 10.1.1定义方法139 10.1.2本地变量140 10.1.3方法参数141 10.2重载方法146 10.3操作符重载147 10.3.1用于自定义类型的算数操作符重载147 10.3.2自定义类型上的逻辑操作符重载149 10.3.3其他操作符重载技巧150 10.4转换和转换操作符重载151 10.4.1隐式转换与显式转换151 10.4.2自定义值类型转换操作符154 10.4.3自定义引用类型转换操作符156 10.5部分方法157 10.6扩展方法158 10.7小结159 第11章错误处理和异常处理161 11.1为什么需要异常处理161 11.2异常处理的语法:try/catch块的基�162 11.3使用finally块确保资源清理163 11.4处理异常164 11.4.1处理不同的异常类型164 11.4.2处理并传递异常165 11.4.3从异常中恢复167 11.5自定义异常169 11.6checked和unchecked语句171 11.7小结173 第12章使用委托和事件进行基于事件的编程174 12.1揭示委托174 12.1.1定义委托175 12.1.2创建委托的方法处理器175 12.1.3在委托上附加处理器175 12.1.4通过委托调用方法176 12.1.5使用委托实现多播176 12.1.6检查委托的相等性178 12.2实现委托推断178 12.3匿名方法179 12.4事件180 12.4.1定义事件处理程序180 12.4.2注册事件181 12.4.3实现事件182 12.4.4触发事件184 12.4.5修改事件的add/remove方法186 12.5小结190 第13章使用命名空间命名和组织类型191 13.1为什么需要命名空间191 13.1.1组织代码192 13.1.2避免命名冲突192 13.2命名空间指令192 13.2.1using指令192 13.2.2别名指令193 13.3创建命名空间194 13.4命名空间成员197 13.5作用域与可见性197 13.6命名空间别名修饰符198 13.7外部命名空间别名199 13.8小结200 第14章抽象类和接口201 14.1抽象类201 14.2抽象类与接口的不同203 14.3实现接口203 14.4定义接口类型204 14.4.1方法204 14.4.2属性204 14.4.3索引205 14.4.4事件205 14.5隐式实现接口205 14.5.1单个类的接口实现205 14.5.2模拟多态行为208 14.6显式实现接口213 14.7接口映射217 14.8接口继承219 14.9小结221 第三部分应用C#高级语言特性 第15章管理对象生命周期224 15.1对象初始化224 15.1.1实例构造函数224 15.1.2构造函数的重载226 15.1.3默认构造函数227 15.1.4私有构造函数227 15.1.5继承和实例化的顺序228 15.1.6静态构造函数228 15.2对象初始化器229 15.3对象终结器229 15.4自动内存管理230 15.4.1内存分配230 15.4.2垃圾收集器揭秘231 15.4.3GC优化231 15.5正确的资源清理方式232 15.5.1终结器带来的问题233 15.5.2Dispose模式233 15.5.3using语句234 15.6和垃圾收集器交互235 15.7小结237 第16章特性与反射238 16.1特性238 16.1.1使用特性239 16.1.2使用多个特性239 16.2特性参数240 16.2.1定位参数240 16.2.2命名参数241 16.3特性目标241 16.4创建自定义特性242 16.5反射245 16.6在特性上反射251 16.6.1动态创建代码251 16.6.2使用Reflection.Emit构建253 16.7小结256 第17章泛型与迭代器257 17.1非泛型集合257 17.2理解泛型的优点258 17.2.1泛型解决的问题258 17.2.2泛型是面向对象的260 17.2.3在数组、非泛型集合和泛型集合之间选择261 17.3构建泛型类型262 17.3.1使用泛型实现单链表262 17.3.2超越集合应用泛型268 17.3.3使用泛型定义类型270 17.4实现迭代器273 17.4.1GetEnumerator迭代器273 17.4.2方法迭代器274 17.4.3属性迭代器275 17.4.4索引迭代器276 17.4.5运算符迭代器276 17.4.6迭代器作为一个值的序列277 17.4.7销毁迭代器278 17.5小结279 第18章lambda表达式和表达式树280 18.1lambda表达式280 18.1.1lambda的语法280 18.1.2使用lambda281 18.1.3委托和lambda282 18.2表达式树285 18.2.1将lambda转换为表达式树285 18.2.2将表达式树转换为lambda286 18.3小结286 第四部分学习LINQ和.NET数据访问 第19章使用LINQ访问数据288 19.1LINQ to Objects289 19.1.1LINQ基本语法289 19.1.2提取投影290 19.1.3筛选数据290 19.1.4给查询结果排序290 19.1.5分组数据291 19.1.6联结数据291 19.1.7使用分组连接构建层次结构291 19.2使用LINQ to SQL查询关系数据292 19.2.1定义DataContext对象292 19.2.2通过DataContext查询295 19.2.3修改DataContext对象295 19.2.4调用存储过程296 19.2.5使用SQL函数297 19.2.6使用存储过程修改数据库297 19.2.7使用分部方法扩展数据处理逻辑299 19.3标准查询运算符301 19.3.1排序运算符301 19.3.2集合运算符302 19.3.3过滤操作符303 19.3.4量词操作符304 19.3.5投影操作符304 19.3.6分割操作符305 19.3.7联结操作符305 19.3.8分组操作符306 19.3.9产生操作符307 19.3.10相等操作符307 19.3.11元素操作符308 19.3.12转换操作符308 19.3.13连接操作符309 19.3.14聚集操作符309 19.4小结310 第20章使用ADO.NET管理数据311 20.1ADO.NET的架构311 20.1.1ADO.NET组件311 20.1.2连接和无连接模式312 20.1.3数据提供者313 20.2建立连接314 20.3查看数据315 20.4操作数据317 20.4.1插入数据317 20.4.2更新数据318 20.4.3删除数据318 20.5调用存储过程319 20.6使用无连接数据319 20.6.1读取数据到DataSet319 20.6.2将对DataSet的修改保存到数据库320 20.7LINQ to DataSet323 20.7.1使用DataTable作为数据源323 20.7.2强类型字段的访问323 20.8小结324 第21章操作XML数据325 21.1XML数据流325 21.2写XML326 21.3读取XML327 21.4使用XML DOM328 21.4.1使用XPathDocument读取XML328 21.4.2使用XmlDocument操作XML329 21.5使用LINQ to XML更容易地操作XML329 21.5.1LINQ to XML中的对象330 21.5.2创建XML文档330 21.5.3使用LINQ to XML操作命名空间331 21.5.4读取XML文档331 21.5.5查询XML文档332 21.5.6修改XML文档332 21.6小结333 第22章使用ADO.NET实体框架创建数据抽象334 22.1实体概览334 22.2使用VS2008创建实体数据模型335 22.3使用实体SQL查询实体337 22.3.1访问实体337 22.3.2查询实体337 22.4创建自定义实体338 22.4.1映射和架构339 22.4.2向模型中添加自定义实体339 22.5LINQ to Entities342 22.5.1查询实体342 22.5.2修改实体数据342 22.6小结344 第23章ADO.NET数据服务在云计算数据中的应用345 23.1在项目中添加ADO.NET数据服务345 23.2通过HTTP URL访问ADO.NET数据服务346 23.2.1查看实体集合346 23.2.2选择实体346 23.2.3筛选实体结果348 23.2.4给实体排序349 23.2.5跨越实体之间的关联350 23.3使用数据服务客户端库编写代码351 23.3.1创建客户端项目351 23.3.2使用WebDataQuery查询实体351 23.3.3添加实体352 23.3.4更新实体352 23.3.5删除实体353 23.3.6使用LINQ to Data Services查询实体353 23.3.7使用WebDataGen.exe生成类354 23.4小结354 第五部分创建桌面用户界面 第24章挖掘控制台应用程序极限358 24.1PasswordGenerator控制台应用程序介绍358 24.2与用户交互359 24.3处理命令行输入360 24.4设置控制台的颜色和位置360 24.5小结362 第25章编写Windows Forms应用程序363 25.1Windows Forms基�363 25.2VS2008对Windows Forms的支持366 25.2.1可视化设计环境366 25.2.2Windows Forms应用程序中的文件366 25.2.3可视化设计器如何工作367 25.3使用Windows Forms控件372 25.4MenuStrip、StatusStrip和ToolStrip控件373 25.5数据网格和数据绑定375 25.5.1建立数据绑定项目375 25.5.2绑定数据到ListBox控件375 25.5.3绑定数据到DataGridView控件376 25.6GDI+要素377 25.6.1Brush、Pen和Graphics对象377 25.6.2字体和绘制文本378 25.7附加窗体和对话框379 25.7.1模式和无模式对话框379 25.7.2窗体通信380 25.7.3通用对话框381 25.8小结383 第26章创建WPF应用程序384 26.1XAML就够了384 26.1.1介绍WPF应用程序385 26.1.2研究XAML385 26.1.3XAML中的控件386 26.2管理布局387 26.2.1控件对齐方式、尺寸和方框模型387 26.2.2Canvas布局388 26.2.3WrapPanel布局389 26.2.4StackPanel布局389 26.2.5UniformGrid布局389 26.2.6Grid布局390 26.2.7DockPanel布局392 26.3WPF控件392 26.3.1Border393 26.3.2Button393 26.3.3CheckBox控件393 26.3.4ComboBox控件393 26.3.5ContentControl控件393 26.3.6DockPanel控件394 26.3.7DocumentViewer控件394 26.3.8Ellipse控件394 26.3.9Expander控件395 26.3.10Frame控件395 26.3.11Grid控件395 26.3.12GridSplitter控件395 26.3.13GroupBox控件396 26.3.14Image控件396 26.3.15Label控件396 26.3.16ListBox控件396 26.3.17ListView控件396 26.3.18MediaElement控件396 26.3.19Menu控件397 26.3.20PasswordBox控件397 26.3.21ProgressBar控件397 26.3.22RadioButton控件397 26.3.23Rectangle控件398 26.3.24RichTextBox控件398 26.3.25ScrollBar控件398 26.3.26ScrollViewer控件398 26.3.27Separator控件399 26.3.28Slider控件399 26.3.29StackPanel控件399 26.3.30StatusBar控件399 26.3.31Tab控件399 26.3.32TextBlock控件400 26.3.33TextBox控件400 26.3.34ToolBar控件400 26.3.35ToolBarPanel控件400 26.3.36ToolBarTray控件400 26.3.37TreeView控件401 26.3.38UniformGrid控件401 26.3.39ViewBox控件401 26.3.40WindowsFormsHost控件401 26.3.41WrapPanel控件402 26.4事件处理402 26.5数据绑定403 26.5.1数据绑定概述403 26.5.2显示数据列表403 26.6使用样式406 26.7小结407 第六部分设计Web用户界面 第27章使用ASP.NET创建Web 应用程序410 27.1Web应用程序模型410 27.1.1ASP.NET页面请求概述410 27.1.2C#代码驻留之地411 27.1.3可伸缩性和状态管理从何而来411 27.1.4如何理解直观性能412 27.1.5我为何使用ASP.NET412 27.2使用VS2008创建ASP.NET项目412 27.3ASP.NET页入门413 27.3.1Web窗体的构成413 27.3.2代码隐藏与页面生命周期415 27.4控件417 27.4.1服务器控件417 27.4.2HTML控件418 27.5状态管理419 27.5.1Application全局状态419 27.5.2在缓存中保存可更新信息419 27.5.3保存单一请求状态420 27.5.4发布Cookie420 27.5.5特定用户信息与Session状态421 27.5.6理解ViewState中的页面状态421 27.5.7页面重用与母版页和自定义控件421 27.6导航424 27.6.1用web.sitemap定义站点布局425 27.6.2Menu控件导航425 27.6.3实现TreeView426 27.6.4使用SiteMapPath添加面包屑导航428 27.7网站主题428 27.7.1设置主题428 27.7.2创建皮肤428 27.7.3创建样式表430 27.8网站安全430 27.9数据绑定431 27.9.1设置业务对象431 27.9.2简单数据绑定432 27.9.3ObjectDataSource与数据绑定432 27.10小结434 第28章用ASP.NET AJAX加强Web应用程序的交互性435 28.1何为AJAX435 28.2设置ASP.NET AJAX站点436 28.3AJAX页面生命周期437 28.4加载自定义脚本库438 28.5ASP.NET AJAX控件439 28.5.1UpdatePanel控件439 28.5.2UpdateProgress控件440 28.5.3Timer控件441 28.6通过JavaScript访问控件441 28.6.1使用JavaScript简化控件ID访问442 28.6.2访问已损坏的ASP.NET控件ID443 28.7通过ASP.NET AJAX调用Web服务446 28.7.1使用Web服务和AJAX的原因与取舍446 28.7.2使用AJAX和Web服务447 28.8小结449 第29章用Silverlight精心制作丰富的Web应用程序451 29.1什么让Silverlight运作451 29.1.1WPF与XAML从何而来451 29.1.2Silverlight如何与ASP.NET、JavaScript和AJAX关联452 29.2在VS2008中启动Silverlight项目452 29.2.1创建Silverlight项目452 29.2.2理解Silverlight项目的各个部分453 29.3用C#处理Silverlight事件455 29.3.1给Silverlight控件事件添加C#处理程序456 29.3.2在Silverlight中处理数据456 29.4媒体播放458 29.4.1给WebForm添加MediaPlayer459 29.4.2用C#操作MediaElement459 29.5动画UI组件461 29.6小结462 第七部分使用.NET技术通信 第30章使用.NET网络通信技术464 30.1实现套接字464 30.1.1套接字服务器464 30.1.2套接字客户端467 30.2与HTTP协作470 30.3执行FTP文件传输471 30.3.1将文件上载到FTP服务器472 30.3.2从FTP服务器获取文件473 30.4发送SMTP邮件475 30.4.1快速发送邮件的方法475 30.4.2发送带有附件的邮件475 30.5小结476 第31章创建Windows服务应用程序477 31.1在VS2008中创建Windows服务项目477 31.1.1运行Windows服务向导477 31.1.2检查Windows服务项目中的文件477 31.2编写Windows服务480 31.2.1可用的Windows服务方法覆写480 31.2.2实现Windows服务方法覆写481 31.2.3配置Windows服务483 31.3安装Windows服务483 31.3.1配置ServiceProcess- Installer484 31.3.2配置ServiceInstaller484 31.3.3部署Windows服务485 31.4创建一个控制器与Windows服务进行通信485 31.5小结487 第32章Remoting488 32.1基本的Remoting488 32.1.1Remoting服务器489 32.1.2Remoting客户端491 32.1.3Remoting安装492 32.2通道496 32.3生存期管理498 32.4小结500 第33章编写传统ASMX Web服务501 33.1Web服务基�501 33.1.1Web服务技术501 33.1.2一个基本的Web服务502 33.1.3查看Web服务信息503 33.2使用Web服务506 33.3小结509 第34章使用WCF创建Web服务510 34.1在VS2008中创建WCF应用程序510 34.2创建Web服务契约511 34.2.1创建WCF Web服务接口512 34.2.2声明ServiceContract特性513 34.2.3声明OperationContract特性514 34.2.4构建数据契约514 34.3实现Web服务逻辑515 34.4配置Web服务517 34.4.1service元素518 34.4.2endpoint元素518 34.4.3behavior元素518 34.5使用Web服务519 34.6创建服务引用519 34.7编写客户端代码调用Web服务520 34.8小结521 第八部分.NET应用程序架构设计示例 第35章使用Visual Studio 2008类设计器524 35.1可视化代码524 35.1.1开始查看对象524 35.1.2查看关联、继承和接口527 35.2使用类设计器创建对象模型528 35.3小结532 第36章C#中的设计模式样例534 36.1设计模式概览534 36.2迭代器模式534 36.2.1实现IEnumerable535 36.2.2实现IEnumerator536 36.2.3在客户代码中使用迭代器539 36.2.4foreach循环中的奇特行为540 36.2.5使用C#迭代器简化迭代器模式543 36.3实现代理模式543 36.3.1一个代理模式的例子544 36.3.2使用代理对象546 36.4实现模板模式547 36.4.1在.NET框架中模板模式是如何使用的547 36.4.2实现模板模式的一个例子547 36.5小结551 第37章创建N级/层系统552 37.1潜在的拖放问题552 37.1.15分钟创建RAD应用程序552 37.1.2危害只是一丁点的生产力吗553 37.2N级/N层介绍554 37.2.1早期的应用程序架构554 37.2.2N层架构554 37.2.3N级架构555 37.2.4架构不应该过于理论556 37.3N层架构的示例556 37.3.1N层/一个程序集架构556 37.3.2N层/多个程序集架构562 37.4小结564 第38章使用WF自动化逻辑565 38.1开启工作流项目565 38.2创建顺序工作流565 38.2.1创建工作流566 38.2.2执行工作流569 38.3创建状态工作流569 38.3.1医院预约工作流概览569 38.3.2创建状态工作流570 38.3.3从主机向工作流通信:实现ExternalDataExchange-Service571 38.3.4处理状态工作流中的事件575 38.4小结578 第九部分体验更多的.NET框架类库 第39章进程和线程管理580 39.1.NET进程支持580 39.1.1启动新进程581 39.1.2使用已有进程583 39.2多线程概述584 39.2.1创建新线程584 39.2.2用更简洁的方式来运行线程中的代码585 39.2.3向线程传递参数585 39.2.4使用线程池585 39.3线程同步586 39.3.1C# lock语句586 39.3.2深入lock:Monitor类587 39.3.3平衡读取器线程和编写器线程间的访问588 39.4小结589 第40章本地化和国际化590 40.1资源文件590 40.1.1创建资源文件590 40.1.2编写资源文件592 40.1.3读取资源文件593 40.1.4转换资源文件594 40.1.5创建图形资源595 40.2多区域设置599 40.2.1实现多区域设置599 40.2.2查找资源603 40.3小结604 第41章互操作(P/Invoke和COM)与不安全代码605 41.1不安全代码605 41.1.1不安全代码是什么意思606 41.1.2指针的用途606 41.1.3sizeof()运算符609 41.1.4栈分配运算符609 41.1.5fixed语句611 41.2平台调用613 41.3.NET与COM通信614 41.3.1早绑定COM组件调用614 41.3.2晚绑定COM组件调用616 41.4将.NET组件作为COM组件616 41.5.NET对COM+服务的支持618 41.5.1事务619 41.5.2JIT激活620 41.5.3对象池621 41.5.4其他服务621 41.6小结622 第42章使用System.Diagnostics中的类型诊断应用623 42.1简单调试624 42.2条件调试625 42.3运行时跟踪627 42.4使用断言628 42.5访问内置的性能计数器629 42.6实现计时器635 42.7构建自定义性能计数器636 42.8使用采样分析性能645 42.9小结653 第十部分部署代码 第43章程序集和版本控制656 43.1程序集内部构成656 43.1.1清单657 43.1.2特性657 43.2程序集功能659 43.2.1标识659 43.2.2范围659 43.2.3版本控制659 43.2.4安全性660 43.3配置660 43.3.1启动配置661 43.3.2运行时配置661 43.4部署663 43.5小结663 第44章代码安全664 44.1基于代码的安全664 44.1.1证据664 44.1.2权限665 44.1.3代码组665 44.1.4安全策略级别666 44.1.5权限请求667 44.1.6实现安全策略669 44.2基于角色的安全671 44.3安全实用工具672 44.4小结673 第45章创建Visual Studio 2008 安装项目674 45.1运行VS2008安装项目向导程序674 45.2更多的安装配置676 45.2.1文件系统配置677 45.2.2创建注册表设置677 45.2.3文件类型678 45.2.4用户界面678 45.2.5启动条件679 45.2.6自定义操作679 45.3小结680 第46章部署桌面应用程序681 46.1通过ClickOnce部署681 46.2配置ClickOnce683 46.3小结684 第47章发布Web应用程序685 47.1剖析Web应用程序685 47.2Web服务器安装685 47.3虚拟目录安装686 47.4Web服务器部署687 47.5从VS2008中发布Web应用程序688 47.6小结689 第十一部分附录 附录A编译程序692 附录B获取.NET框架帮助694
……[看更多目录]