<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_OpenSource</title><subtitle type="text">Love your family! Love yourself! </subtitle><id>http://feed.cnblogs.com/blog/u/10799/rss</id><updated>2011-10-08T00:24:31Z</updated><author><name>Freedom</name><uri>http://www.cnblogs.com/BpLoveGcy/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BpLoveGcy/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/10799/rss"/><entry><id>http://www.cnblogs.com/BpLoveGcy/archive/2010/05/26/1744676.html</id><title type="text">ebook site</title><summary type="text">http://www.wowebook.com/category/e-book/dot-net</summary><published>2010-05-26T11:00:00Z</published><updated>2010-05-26T11:00:00Z</updated><author><name>Freedom</name><uri>http://www.cnblogs.com/BpLoveGcy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/26/1744676.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/26/1744676.html"/><content type="html">http://www.wowebook.com/category/e-book/dot-net&lt;img src="http://www.cnblogs.com/BpLoveGcy/aggbug/1744676.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/26/1744676.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BpLoveGcy/archive/2010/05/26/1744357.html</id><title type="text">XML Namespaces and How They Affect XPath and XSLT</title><summary type="text">ref:http://msdn.microsoft.com/en-us/library/ms950779.aspxHow to use xpath to query the doc, also including namespace.代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHi...</summary><published>2010-05-26T05:11:00Z</published><updated>2010-05-26T05:11:00Z</updated><author><name>Freedom</name><uri>http://www.cnblogs.com/BpLoveGcy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/26/1744357.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/26/1744357.html"/><content type="html">&lt;p&gt;ref:http://msdn.microsoft.com/en-us/library/ms950779.aspx&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;How to use xpath to query the doc, also including namespace.&lt;/p&gt;&lt;p&gt;&lt;span  style="font-family: 'Courier New'; font-size: 13px; "&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"  id="code_img_opened_c2ea742d-345a-45e0-b40c-0d2b599232e4" onclick="cnblogs_code_hide('c2ea742d-345a-45e0-b40c-0d2b599232e4',event)"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('c2ea742d-345a-45e0-b40c-0d2b599232e4')"&gt;&lt;div id="cnblogs_code_open_c2ea742d-345a-45e0-b40c-0d2b599232e4"&gt;&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="utf-8"&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TestSite&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="http://schemas.microsoft.com/windows/ProtocolsTest/2007/07/TestConfig"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;xmlns:xsi&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;xsi:schemaLocation&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="http://schemas.microsoft.com/windows/ProtocolsTest/2007/07/TestConfig&amp;nbsp;http://schemas.microsoft.com/windows/ProtocolsTest/2007/07/TestConfig.xsd"&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Properties&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000;"&gt;Angelo&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000;"&gt;Only&amp;nbsp;Add&amp;nbsp;your&amp;nbsp;change&amp;nbsp;list&amp;nbsp;here!&lt;/span&gt;&lt;span style="color: #008000;"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.DataSourceReference.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSources\DataSource\DataSourceReference"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.DataSets.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.DataSet.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Fields.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Fields"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Field.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Fields\Field"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.DataField.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Fields\Field\DataField"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Value.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Fields\Field\Value"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Query.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Query"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.DataSourceName.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Query\DataSourceName"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.CommandType.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Query\CommandType"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.CommandText.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Query\CommandText"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.QueryParameters.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Query\QueryParameters"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.QueryParameter.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Query\QueryParameters\QueryParameter"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Timeout.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Query\Timeout"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.CaseSensitivity.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\CaseSensitivity"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Collation.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Collation"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.AccentSensitivity.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\AccentSensitivity"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.KanatypeSensitivity.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\KanatypeSensitivity"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.WidthSensitivity.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\WidthSensitivity"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Filters.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Filters"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Filter.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Filters\Filter"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.FilterExpression.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Filters\Filter\FilterExpression"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Operator.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Filters\Filter\Operator"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.FilterValues.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Filters\Filter\FilterValues"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.FilterValue.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\DataSets\DataSet\Filters\Filter\FilterValues\FilterValue"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Body.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.ReportItems.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Line.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Style.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.BorderColor.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\BorderColor"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Default.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\BorderColor\Default"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Left.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\BorderColor\Left"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Right.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\BorderColor\Right"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Top.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\BorderColor\Top"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Bottom.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\BorderColor\Bottom"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.BorderStyle.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\BorderStyle"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.BorderWidth.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\BorderWidth"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.BackgroundColor.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\BackgroundColor"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.BackgroundGradientType.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\BackgroundGradientType"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.BackgroundGradientEndColor.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\BackgroundGradientEndColor"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.BackgroundImage.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\BackgroundImage"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Source.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\BackgroundImage\Source"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.MIMEType.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\BackgroundImage\MIMEType"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.BackgroundRepeat.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\BackgroundImage\BackgroundRepeat"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.FontStyle.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\FontStyle"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.FontFamily.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\FontFamily"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.FontSize.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\FontSize"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.FontWeight.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\FontWeight"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Format.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\Format"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.TextDecoration.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\TextDecoration"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.TextAlign.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\TextAlign"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.VerticalAlign.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\VerticalAlign"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Color.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\Color"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.PaddingLeft.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\PaddingLeft"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.PaddingRight.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\PaddingRight"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.PaddingTop.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\PaddingTop"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.PaddingBottom.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\PaddingBottom"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.LineHeight.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\LineHeight"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.Direction.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\Direction"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Path.WritingMode.SchemaVersion200310"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="Report\Body\ReportItems\Line\Style\WritingMode"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Properties&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;TestSite&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;Always failed when there the namespace existing.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BpLoveGcy/aggbug/1744357.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/26/1744357.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BpLoveGcy/archive/2010/05/24/1742469.html</id><title type="text">Debugging Applications for Microsoft .NET and Microsoft Windows: Notes-Books</title><summary type="text">SoftwareDevelopment Code Complete by Steve McConnell (Microsoft Press, 1993) This is simply the best book on software construction that I've ever read. Every developer should own a copy and read it co...</summary><published>2010-05-24T01:01:00Z</published><updated>2010-05-24T01:01:00Z</updated><author><name>Freedom</name><uri>http://www.cnblogs.com/BpLoveGcy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/24/1742469.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/24/1742469.html"/><content type="html">&lt;div &gt;&#xD;
&lt;h3 &gt;&lt;a name="1330" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;&lt;a name="wbp28AppendixBP8" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;Software&#xD;
Development&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;ul &gt;&#xD;
     &lt;li &gt;&#xD;
     &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Code&#xD;
     Complete&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Steve McConnell (Microsoft Press, 1993&lt;/strong&gt;)&lt;/p&gt;&#xD;
     &lt;p &gt;This is simply the best book on software construction that&#xD;
     I've ever read. Every developer should own a copy and read it cover to cover&#xD;
     every year. After reading it annually for nine years, I'm still learning things&#xD;
     from this book!&lt;/p&gt;&#xD;
     &lt;/li&gt;&#xD;
     &lt;li &gt;&#xD;
     &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Rapid&#xD;
     Development&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Steve McConnell (Microsoft Press, 1996)&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;p &gt;This book taught me how to manage teams and schedule&#xD;
     projects.&lt;/p&gt;&#xD;
     &lt;/li&gt;&#xD;
     &lt;li &gt;&#xD;
     &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Debugging&#xD;
     the Development Process&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Steve Maguire (Microsoft Press, 1994)&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;p &gt;This book is a great introduction to the way Microsoft&#xD;
     develops software. Obviously, since Microsoft is the most successful software&#xD;
     company on the planet, they must be doing something right. You can learn a great&#xD;
     deal from this book.&lt;/p&gt;&#xD;
     &lt;/li&gt;&#xD;
     &lt;li &gt;&#xD;
     &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Dynamics&#xD;
     of Software Development&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Jim McCarthy (Microsoft Press, 1995)&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;p &gt;This book is a very interesting look at software development&#xD;
     from the perspective of a manager with a track record for shipping great&#xD;
     products. The rules Jim proposes are excellent because they all come from actual&#xD;
     experience; he's not just some academic theorizing.&lt;/p&gt;&#xD;
     &lt;/li&gt;&#xD;
     &lt;li &gt;&#xD;
     &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Under&#xD;
     Pressure and On Time&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Ed Sullivan (Microsoft Press, 2001)&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;p &gt;Ed's the great project manager from whom I stole most of my&#xD;
     ideas about how to deliver software. This book discusses real-world project&#xD;
     management and how Ed built great teams that delivered great products&#xD;
     consistently and always on time. Also, the guy who wrote the forward is probably&#xD;
     the sexiest developer working today.&lt;/p&gt;&#xD;
     &lt;/li&gt;&#xD;
     &lt;li &gt;&#xD;
     &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;he&#xD;
     Career Programmer: Guerilla Tactics for an Imperfect World&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by&#xD;
     Christopher Duncan (APress, 2002)&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;p &gt;All the books on software development address only the&#xD;
     manager's perspective. It's about time someone wrote a book for the developers&#xD;
     in the trenches! Chris covers tactics and techniques that enable you to&#xD;
     concentrate on getting your job done even when your manager might be an idiot.&lt;a name="1331" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
     &lt;/li&gt;&#xD;
     &lt;li &gt;&#xD;
     &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Writing&#xD;
     Secure Code, Second Edition&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt;, by Michael Howard and David LeBlanc (Microsoft&#xD;
     Press, 2002)&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;p &gt;With security in the forefront of everyone's mind, all&#xD;
     developers need to have this book in their collections. Not only does it do a&#xD;
     fantastic job of introducing the issues, it's chock full of real-world&#xD;
     recommendations and examples of what you need to do in your software.&lt;/p&gt;&#xD;
     &lt;/li&gt;&#xD;
     &lt;li &gt;&#xD;
     &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Don't&#xD;
     Make Me Think: A Common Sense Approach to Web Usability&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Steve Krug (New&#xD;
     Riders, 2000)&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;p &gt;Everyone is a user interface expert, and this is especially&#xD;
     so the higher up the food chain you go in your development shop. This&#xD;
     outstanding book discusses real-world Web page design and shows you the&#xD;
     techniques necessary to ensure your designs actually work.&lt;/p&gt;&#xD;
     &lt;/li&gt;&#xD;
     &lt;li &gt;&#xD;
     &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Philip&#xD;
     and Alex's Guide to Web Publishing&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Philip Greenspun (Morgan Kaufmann,&#xD;
     1999)&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;p &gt;If you're designing a Web site, you have to read this book.&#xD;
     You might not agree with everything (I sure didn't), but it's one of the most&#xD;
     cogent discussions of the issues surrounding how to keep users happy and how to&#xD;
     develop Web sites people will come back to. Also, the photographs in the book&#xD;
     are excellent. My father, a world class artist, can't seem to figure out why my&#xD;
     books don't look so good.&lt;/p&gt;&#xD;
     &lt;/li&gt;&#xD;
     &lt;li &gt;&#xD;
     &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;High-Performance&#xD;
     Client/Server&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Chris Loosley and Frank Douglas (Wiley, 1998)&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;p &gt;This is a great book on designing performance into&#xD;
     applications and has an especially excellent discussion of high-speed&#xD;
     architectures.&lt;/p&gt;&#xD;
     &lt;/li&gt;&#xD;
     &lt;li &gt;&#xD;
     &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Developing&#xD;
     International Software, Second Edition&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Dr. International (Microsoft&#xD;
     Press, 2003)&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;p &gt;What's the old joke? A person who speaks three languages is&#xD;
     trilingual, a person who speaks two is bilingual, and the person who speaks only&#xD;
     one is American. Microsoft makes 60 percent of its revenue from outside the&#xD;
     United States and you can too if you plan for it. This book shows you how to&#xD;
     develop international applications for all of Microsoft's&#xD;
     technologies.&lt;/p&gt;&#xD;
     &lt;p &gt;&lt;br /&gt;&#xD;
     &lt;/p&gt;&#xD;
     &lt;p &gt;&lt;/p&gt;&#xD;
     &lt;div &gt;&#xD;
     &lt;h3 &gt;&lt;a name="1332" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;&lt;a name="wbp28AppendixBP33" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;Debugging&#xD;
     and Testing&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;ul &gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;The&#xD;
         Practice of Programming&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Brian W. Kernighan and Rob Pike (Addison-Wesley,&#xD;
         1999)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;This book is a wonderful discussion of developing, debugging,&#xD;
         and testing.&lt;a name="1333" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Writing&#xD;
         Solid Code&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Steve Maguire (Microsoft Press, 1993)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;Although it focuses mainly on C programming, this book&#xD;
         contains excellent advice on interface definitions and avoiding nasty problems&#xD;
         in the language.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Managing&#xD;
         the Testing Process&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Rex Black (Microsoft Press, 1999)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;To develop better, you need to know how to test better. This&#xD;
         excellent book will change the way you develop and the way you interact with&#xD;
         your QA teams.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;How&#xD;
         Debuggers Work: Algorithms, Data Structures, and Architecture&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Jonathan B.&#xD;
         Rosenberg (John Wiley &amp;amp; Sons, 1996)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;This book is an excellent introduction to how debuggers work&#xD;
         and to the issues you need to consider when designing a debugger.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Debugging&#xD;
         Windows Programs: Strategies, Tools, and Techniques for Visual C++&#xD;
         Programmers&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Everett N. McKay and Mike Woodring&lt;/strong&gt; (Addison Wesley, 2000)&lt;/p&gt;&#xD;
         &lt;p &gt;Right after the first edition of the book you're reading now&#xD;
         came out, Everett's and Mike's book showed up. It's a fantastic book, and I wish&#xD;
         I'd thought of some of the great ideas they put in there, like how to think&#xD;
         about debugging.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
     &lt;/ul&gt;&#xD;
     &lt;/div&gt;&#xD;
     &lt;div &gt;&#xD;
     &lt;h3 &gt;&lt;a name="1334" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;&lt;a name="wbp28AppendixBP46" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;.NET&#xD;
     Technologies&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;ul &gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Applied&#xD;
         Microsoft .NET Framework Programming&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Jeffrey Richter (Microsoft&#xD;
         Press, 2002)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Applied&#xD;
         Microsoft .NET Framework Programming in Microsoft Visual Basic .NET&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by&#xD;
         Jeffrey Richter and Francesco Balena (Microsoft Press, 2002)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;Simply the best introduction to the insides of .NET. This is&#xD;
         what all those thousands of "Introduction to .NET" books strive to do but fail&#xD;
         miserably at doing.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Programming&#xD;
         Microsoft .NET&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Jeff Prosise (Microsoft Press, 2002)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;This is the perfect book to follow Jeffrey Richter's. Somehow&#xD;
         Jeff managed to anticipate every single question I ever had about Microsoft&#xD;
         ASP.NET and answer them all in his outstanding book.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;.NET&#xD;
         and COM: The Complete Interoperability Guide&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Adam Nathan (Sams, 2002)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;If your .NET application is going to communicate outside the&#xD;
         CLR to the big bad world of Windows or COM applications, this book is the bible&#xD;
         you need to ensure that communication works.&lt;a name="1335" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Applied&#xD;
         XML Programming for Microsoft .NET&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Dino Esposito (Microsoft Press,&#xD;
         2002)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;XML is everywhere today, and Dino's book is an outstanding&#xD;
         reference on digesting and emitting XML with Microsoft .NET.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;.NET&#xD;
         Enterprise Design with Visual Basic .NET and SQL Server 2000&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Jimmy&#xD;
         Nilsson (Sams, 2002)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;Jimmy's book is one of the few books out there that&#xD;
         concentrates on real-world development issues. It's a joy to read and to learn&#xD;
         about how to apply many different aspects of real-world tools to solve&#xD;
         problems.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Performance&#xD;
         Testing Microsoft .NET Web Applications&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Microsoft Application&#xD;
         Consulting and Engineering (ACE) Team (Microsoft Press, 2003)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;Although .NET takes care of many programming chores for you,&#xD;
         you're still responsible for performance. A great introduction to performance&#xD;
         testing.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Inside&#xD;
         Microsoft .NET IL Assembler&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Serge Lidin (Microsoft Press, 2002)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;Although you'll probably never program in IL professionally,&#xD;
         it sure is cool to know you can.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
     &lt;/ul&gt;&#xD;
     &lt;/div&gt;&#xD;
     &lt;div &gt;&#xD;
     &lt;h3 &gt;&lt;a name="1336" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;&lt;a name="wbp28AppendixBP64" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;C/C++&#xD;
     Language&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;ul &gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;The C&#xD;
         Programming Language, Second Edition&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Brian W. Kernighan and Dennis M.&#xD;
         Ritchie (Prentice Hall, 1988)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;This book is the definitive guide to C programming and the&#xD;
         best-written technical book I've ever read.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Learning&#xD;
         C++&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Neill Graham (McGraw-Hill, 1991)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;I used this book to learn C++. Unlike other C++ doorstop&#xD;
         books, &lt;em &gt;Learning C++&lt;/em&gt; is short, sweet, and to the point.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;C++&#xD;
         Programmer's Guide to the Standard Template Library&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Mark Nelson (IDG&#xD;
         Books, 1995)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;I have an intense love-hate relationship with the Standard&#xD;
         Template Library. Fortunately, Mark's book does a great job of providing samples&#xD;
         and explaining the finer points of using this library.&lt;a name="1337" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;&#xD;
         &lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
     &lt;/ul&gt;&#xD;
     &lt;/div&gt;&#xD;
     &lt;div &gt;&#xD;
     &lt;h3 &gt;&lt;a name="1338" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;&lt;a name="wbp28AppendixBP73" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;Windows and&#xD;
     Windows Technologies&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;ul &gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Programming&#xD;
         Windows, Fifth Edition&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Charles Petzold (Microsoft Press, 1999)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;This one book will teach you everything you need to know&#xD;
         about how Windows programs work at the most fundamental level. People could&#xD;
         solve many of the problems they ask me about if they only had a better&#xD;
         understanding of how message handling, graphics device interface (GDI), and&#xD;
         other subjects work at the Microsoft Win32 level.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Programming&#xD;
         Applications for Microsoft Windows, Fourth Edition&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Jeffrey Richter&#xD;
         (Microsoft Press, 1999)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;This book covers all the unique aspects of Win32 development.&#xD;
         The chapters on DLLs, threads, synchronization, and structured exception&#xD;
         handling are the best descriptions available and all relate directly to&#xD;
         debugging your problems more quickly and efficiently.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Programming&#xD;
         Windows with MFC, Second Edition by Jeff Prosise&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; (Microsoft Press, 1999)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;This book is the definitive guide to programming with the&#xD;
         Microsoft Foundation Class (MFC) library. If you're using MFC, you must have&#xD;
         this book.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Windows++:&#xD;
         Writing Reusable Windows Code in C++&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Paul Dilascia (Addison-Wesley,&#xD;
         1992)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;Unlike other design books, which have only toy examples, this&#xD;
         book produces a strong and viable C++ class library for Windows programming. I&#xD;
         learn best by example, and this book taught me how to think in terms of&#xD;
         objects.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Essential&#xD;
         COM&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Don Box (Addison-Wesley, 1998)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;In the Disassembly window ("unambiguous mode"), a COM&#xD;
         interface is just a pointer to an array of pointers, so COM should be easy to&#xD;
         understand. COM is so much more than just a pointer and is so fundamental to&#xD;
         programming life, however, that you must understand how it works if you expect&#xD;
         to stand a chance of correctly implementing and debugging your code. Don's book&#xD;
         will give you a great start along the path of COM enlightenment.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Inside&#xD;
         Microsoft Windows 2000, Third Edition&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by David A. Solomon and Mark E.&#xD;
         Russinovich (Microsoft Press, 2000)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;The book is the official "big picture" view of the Microsoft&#xD;
         Windows 2000 kernel. Although more directly applicable for device driver&#xD;
         writers, this book will help you make sense out of how the different parts of&#xD;
         the operating system fit together in Windows 2000.&lt;a name="1339" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Windows&#xD;
         95 System Programming Secrets&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Matt Pietrek (IDG Books, 1995)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;Matt's book is out of print, but you should really try to&#xD;
         find a copy. Debugging anything more than a simple access violation on Microsoft&#xD;
         Windows 95 and Microsoft Windows 98 is an exercise in extreme frustration mainly&#xD;
         because Windows 95 and Windows 98 are hybrid 16-bit/32-bit operating systems.&#xD;
         Much of the information in the book, such as the Portable Executable (PE) file&#xD;
         format chapter, applies to Windows 2000 as well.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;ATL&#xD;
         Internals&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Brent Rector and Chris Sells (Addison-Wesley, 1999)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;The Active Template Library (ATL) makes the smallest and&#xD;
         fastest COM objects around. To take full advantage of ATL, you have to have this&#xD;
         book.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Programming&#xD;
         Windows Security&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Keith Brown (Addison-Wesley, 2000)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;Simply the best book on Windows security programming.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Programming&#xD;
         Server-Side Application for Microsoft Windows 2000&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Jeffrey Richter&#xD;
         and Jason D. Clark (Microsoft Press, 1999)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;If you're doing native server applications, you have to have&#xD;
         this book. The section on scalable I/O is the best ever&#xD;
         written.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
     &lt;/ul&gt;&#xD;
     &lt;/div&gt;&#xD;
     &lt;div &gt;&#xD;
     &lt;h3 &gt;&lt;a name="1340" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;&lt;a name="wbp28AppendixBP96" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;The Intel&#xD;
     CPU and Hardware&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;ul &gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;Structured&#xD;
         Computer Organization, Fourth Edition&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Andrew S. Tanenbaum (Prentice-Hall,&#xD;
         1998)&lt;/strong&gt;&lt;/p&gt;&#xD;
         &lt;p &gt;An excellent introduction to computer architecture, this book&#xD;
         is filled with information that I use to debug problems daily. The book has some&#xD;
         typos and technical errors, but if you can get past that you'll be glad you read&#xD;
         it.&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
         &lt;li &gt;&#xD;
         &lt;p &gt;&lt;/p&gt;&#xD;
         &lt;/li&gt;&#xD;
     &lt;/ul&gt;&#xD;
     &lt;li&gt;&#xD;
     &lt;p &gt;&lt;strong&gt;Intel CPU reference manuals&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;p &gt;Intel makes available, for free, the CPU manuals for their&#xD;
     processors. If you're doing serious debugging, these manuals are extremely&#xD;
     helpful and informative. You can download the Adobe PDF files from Intel's&#xD;
     Literature Center at developer.intel.com/design/litcentr/index.htm. Intel also&#xD;
     provides the manuals in book form if you prefer having hard copies.&lt;/p&gt;&#xD;
     &lt;p &gt;&lt;em  xmlns:crossref="http://www.jclark.com/xt/java/com.books24x7.xsl.Crossref"&gt;&lt;strong&gt;The&#xD;
     Indispensable PC Hardware Book, Fourth Edition&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; by Hans-Peter Messmer&#xD;
     (Addison-Wesley, 2001)&lt;/strong&gt;&lt;/p&gt;&#xD;
     &lt;p &gt;&lt;strong&gt;&lt;/strong&gt;This book is the best discussion of PC hardware around. When&#xD;
     you need to interact with hardware, this book is an invaluable&#xD;
     resource.&lt;/p&gt;&#xD;
     &lt;p &gt;&lt;br /&gt;&#xD;
     &lt;/p&gt;&#xD;
     &lt;/li&gt;&#xD;
     &lt;/div&gt;&#xD;
     &lt;p&gt;&lt;/p&gt;&#xD;
     &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div &gt;&#xD;
&lt;h2 &gt;&lt;a name="1341" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;&lt;a name="wbp28AppendixBP105" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;Software Tools&lt;/strong&gt;&lt;/p&gt;&lt;a name="1342" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;&#xD;
&lt;ul &gt;&#xD;
&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;Whole Tomato's Visual Assist &lt;/strong&gt;(&lt;a  href="http://www.wholetomato.com/" target="_blank"&gt;&lt;em &gt;www.wholetomato.com&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p &gt;This is an excellent add-in to Microsoft Visual Studio .NET &#xD;
that extends the editor and puts in real IntelliSense and other advanced editing &#xD;
tools.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;Source Dynamic's Source Insight&lt;/strong&gt; (&lt;a  href="http://www.sourceinsight.com/" target="_blank"&gt;&lt;em &gt;www.sourceinsight.com&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p &gt;If you need to see how large C++, C#, or Java programs fit &#xD;
together, this is the source browsing tool of choice.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;Compuware DevPartner&lt;/strong&gt; (&lt;a  href="http://www.compuware.com/products/numega" target="_blank"&gt;&lt;em &gt;www.compuware.com/products/numega&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p &gt;This is the suite that holds BoundsChecker (error detection), &#xD;
TrueTime (profiler), TrueCoverage (code coverage), CodeReview (static analysis), &#xD;
and Distributed Analyzer (cross-machine analysis). These tools all work for .NET &#xD;
as well as native code.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;Bullseye Testing Technology's C-Cover&lt;/strong&gt; (&lt;a  href="http://www.bullseye.com/" target="_blank"&gt;&lt;em &gt;www.bullseye.com&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p &gt;This is a fantastic native C++ code coverage tool.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;JPSoft's 4NT&lt;/strong&gt; (&lt;a  href="http://www.jpsoft.com/" target="_blank"&gt;&lt;em &gt;www.jpsoft.com&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p &gt;This is the ultimate command shell for Windows machines. It's &#xD;
even got a debugger for batch files! On a fresh operating installation, it's the &#xD;
first program I put on the machine.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;Jay Freeman's Anakrino &lt;/strong&gt;(&lt;a  href="http://www.saurik.com/net/exemplar" target="_blank"&gt;&lt;em &gt;www.saurik.com/net/exemplar&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p &gt;This is the easy way to learn about .NET: decompile it!&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;Luts Roeder's Reflector&lt;/strong&gt; (&lt;a  href="http://www.aisto.com/roeder/DotNet" target="_blank"&gt;&lt;em &gt;www.aisto.com/roeder/DotNet&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p &gt;Use this for a better ILDASM.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;WiseOwl's Demeanor for .NET&lt;/strong&gt; (&lt;a  href="http://www.wiseowl.com/" target="_blank"&gt;&lt;em &gt;www.wiseowl.com&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p &gt;This is Brent Rector's excellent code obfuscator.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;MindReef's SOAPscope&lt;/strong&gt; (&lt;a  href="http://www.mindreef.com/" target="_blank"&gt;&lt;em &gt;www.mindreef.com&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p &gt;If you want to see what's happening with your Web services &#xD;
under the hood, you can't get any better than SOAPscope.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;VMWare&lt;/strong&gt; (&lt;a  href="http://www.vmware.com/" target="_blank"&gt;&lt;em &gt;www.vmware.com&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p &gt;Instead of having 300 machines in your test lab, buy a few &#xD;
big servers and run VMWare. I've seen several organizations save a ton of money &#xD;
by utilizing VMWare to cut down on hardware costs and yet increase their &#xD;
operating system testing coverage considerably.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div &gt;&#xD;
&lt;h2 &gt;&lt;a name="1343" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;&lt;a name="wbp28AppendixBP128" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;Web Sites&lt;/strong&gt;&lt;/p&gt;&lt;a name="1344" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;&#xD;
&lt;ul &gt;&#xD;
&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;MSDN Online (&lt;/strong&gt;&lt;a  href="http://msdn.microsoft.com/" target="_blank"&gt;&lt;em &gt;&lt;strong&gt;msdn.microsoft.com&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p &gt;MSDN is the first place to start looking for .NET and Windows &#xD;
information. MSDN Online can be accessed at the address I list as well as &#xD;
through the Microsoft-endorsed magazine &lt;em &gt;MSDN Magazine&lt;/em&gt;. &#xD;
Keep in mind that MSDN is partly a marketing organization, so sometimes a little &#xD;
hype creeps into various pieces.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;ASP.NET Web (&lt;/strong&gt;&lt;a  href="http://www.asp.net/" target="_blank"&gt;&lt;em &gt;&lt;strong&gt;www.asp.net&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p &gt;This Web site is the official home of the ASP.NET team at &#xD;
Microsoft. For the life of me, I can't figure out why Microsoft has this site &#xD;
outside of the MSDN umbrella.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;Google Microsoft Search (&lt;/strong&gt;&lt;a  href="http://www.google.com/microsoft.html" target="_blank"&gt;&lt;em &gt;&lt;strong&gt;www.google.com/microsoft.html&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p &gt;Although MSDN is the place to read about Microsoft &#xD;
technologies, its searching capabilities leave something to be desired. &#xD;
Fortunately, Google has a special search site that focuses only on Microsoft &#xD;
technologies. If you'd like to use the vaunted Google search on only the MSDN &#xD;
site, specify site:msdn.microsoft.com in your search string.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;Sysinternals (&lt;/strong&gt;&lt;a  href="http://www.sysinternals.com/" target="_blank"&gt;&lt;em &gt;&lt;strong&gt;www.sysinternals.com&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p &gt;Mark Russinovich and Bryce Cogswell have some of the best &#xD;
native debugging utilities around: Regmon, Filemon, DebugView, Process Explorer, &#xD;
and many more. Many utilities come with full source code, and all are free! I &#xD;
check Mark and Bryce's site at least once a week so that I can keep my &#xD;
competitive edge.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;Russ Osterlund's SmidgeonSoft&lt;/strong&gt; (&lt;a  href="http://www.smidgeonsoft.com/" target="_blank"&gt;&lt;em &gt;www.smidgeonsoft.com&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p &gt;Russ has a collection of fantastic and free tools that rival &#xD;
those at Sysinternals. Not only is his PEBrowse Professional Interactive a &#xD;
native code debugger, it handles .NET debugging as well. If you want to see the &#xD;
insides of the operating system, Russ has you covered.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;Code Project&lt;/strong&gt; (&lt;a  href="http://www.codeproject/" target="_blank"&gt;&lt;em &gt;www.codeproject&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p &gt;This is a great community site for both .NET and native &#xD;
development.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;CodeGuru&lt;/strong&gt; (&lt;a  href="http://www.codeguru.com/" target="_blank"&gt;&lt;em &gt;www.codeguru.com&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p &gt;This is the granddaddy of Windows programming help sites. Now &#xD;
it does .NET, too!&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;VB2TheMax&lt;/strong&gt; (&lt;a  href="http://www.vb2themax.com/" target="_blank"&gt;&lt;em &gt;www.vb2themax.com&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p &gt;This is the place to learn about Microsoft Visual Basic &#xD;
.NET.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;Wintellect&lt;/strong&gt; (&lt;a  href="http://www.wintellect.com/" target="_blank"&gt;&lt;em &gt;www.wintellect.com&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p &gt;This is where I and all my Wintellectual friends hang out and &#xD;
answer (and post!) questions on our forums.&lt;a name="1345" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt; &#xD;
&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/BpLoveGcy/aggbug/1742469.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/24/1742469.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BpLoveGcy/archive/2010/05/24/1742448.html</id><title type="text">Debugging Applications for Microsoft .NET and Microsoft Windows: Notes-Prerequisites to Debugging</title><summary type="text">Your projectKnowing your project is the first line of defense for user interface, logic, and performance bugs. By knowing how and where features are implemented in the various source files, you can qu...</summary><published>2010-05-24T00:33:00Z</published><updated>2010-05-24T00:33:00Z</updated><author><name>Freedom</name><uri>http://www.cnblogs.com/BpLoveGcy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/24/1742448.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/24/1742448.html"/><content type="html">&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;Your project&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;Knowing your project is the first line of defense for user interface, logic, and &#xD;
performance bugs. By knowing how and where features are implemented in the &#xD;
various source files, you can quickly narrow down who is doing what to whom.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;Your language&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;Knowing the language (or languages) your project uses is more difficult than it &#xD;
sounds. I'm referring to knowing what your language is doing behind the scenes &#xD;
as well as knowing how to program in it.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;Your technology/tools&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;Getting a handle on the technologies you're using is the first big step to &#xD;
tackling the harder bugs.&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;Your operating system/environment&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;Knowing the basics of how your operating system or operating environment goes &#xD;
about doing its work can make the biggest difference between solving a bug and &#xD;
just floundering around.&lt;/p&gt;&lt;p &gt;My friend Matt Pietrek, who taught me a great deal about debugging, maintains &#xD;
that knowing the operating system/environment and the CPU is what separates the &#xD;
debugging gods from mere mortals.&lt;a name="48" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;/li&gt;&lt;li &gt;&#xD;
&lt;p &gt;&lt;strong&gt;&lt;a name="47" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;Your CPU&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;This brings me to the last thing you must know to be a debugging god for native &#xD;
code: the CPU. You must know a little about the CPU to solve most of the &#xD;
nastiest bugs you'll encounter.&lt;/p&gt;&lt;p &gt;&lt;br /&gt;&lt;/p&gt;&lt;p &gt;&lt;strong&gt;Learning the Skill Set&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;Bringing a portfolio of the work you did on your own time at home shows that you &#xD;
can complete work independently and that you have a passion for software &#xD;
engineering, and it will almost immediately put you in the top 20 percent of &#xD;
engineers.&lt;/p&gt;&lt;p &gt;&lt;br /&gt;&lt;/p&gt;&lt;p &gt;Another practice that has helped me a great deal, especially when it comes to &#xD;
learning more about languages, technologies, and the operating system, is to &#xD;
look at other engineers' code.&lt;/p&gt;&lt;p &gt;&lt;br /&gt;&lt;/p&gt;&lt;p &gt;Another technique I would recommend to learn more about technologies, the &#xD;
operating system, and the virtual machine (CPU) is to do some reverse &#xD;
engineering. It will help get you up to speed with assembly language and the &#xD;
advanced features in the debugger.&lt;/p&gt;&lt;p &gt;&lt;br /&gt;&lt;/p&gt;&lt;p &gt;&lt;p &gt;Reading books and magazines, writing utilities, reviewing &#xD;
other engineers' code, and doing reverse engineering are all great ways to &#xD;
improve your debugging skills. However, your greatest resources are your &#xD;
engineering friends and coworkers. Never be afraid to ask them how they did &#xD;
something or how something works; unless they are in the middle of a deadline &#xD;
crunch, they should be happy to help. I enjoy it when people ask me questions &#xD;
because I end up learning more than the individuals who ask the questions! &#xD;
Programming newsgroups are also excellent places to pose questions. I read them &#xD;
all the time because their responses are so good, especially from those folks &#xD;
Microsoft has designated MVPs (Most Valuable Professionals).&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;&lt;img src="http://www.cnblogs.com/BpLoveGcy/aggbug/1742448.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/24/1742448.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BpLoveGcy/archive/2010/05/24/1742444.html</id><title type="text">Debugging Applications for Microsoft .NET and Microsoft Windows: Notes-The Debugging Process</title><summary type="text">The Debugging ProcessStep 1: Duplicate the bugThe most critical step in the debugging process is the first one: duplicating the bug.My definition is duplicating the bug on a single machine once in a 2...</summary><published>2010-05-24T00:24:00Z</published><updated>2010-05-24T00:24:00Z</updated><author><name>Freedom</name><uri>http://www.cnblogs.com/BpLoveGcy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/24/1742444.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/24/1742444.html"/><content type="html">&lt;li &gt;&lt;p &gt;&lt;br /&gt;&lt;/p&gt;&lt;p &gt;&lt;strong&gt;The Debugging Process&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;&lt;strong&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/bplovegcy/Debug.Net/TheDebuggingProcess.jpg" width="380" height="411" alt="" /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;&lt;p &gt;&lt;strong&gt;Step 1: Duplicate the bug&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;The most critical step in the debugging process is the first one: duplicating &#xD;
the bug.&lt;/p&gt;&lt;p &gt;My definition is duplicating the bug on a single machine once in a 24-hour &#xD;
period.&lt;/p&gt;&lt;p &gt;Once you've duplicated the bug by using one general set of steps, you should &#xD;
evaluate whether you can duplicate the bug through a different set of steps.You can get to some bugs via one code path only, but you can get to other bugs &#xD;
through multiple paths. The idea is to try to see the behavior from all possible &#xD;
angles. By duplicating the bug from multiple paths, you have a much better sense &#xD;
of the data and boundary conditions that are causing the problems.&lt;/p&gt;&lt;p &gt;Even if you can't duplicate the bug, you should still log it into your bug &#xD;
tracking system. If I have a bug that I can't duplicate, I always log it into &#xD;
the system anyway, but I leave a note that says I couldn't duplicate it.&lt;/p&gt;&lt;p &gt;&lt;strong&gt;Step 2: Describe the bug&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;In the real world, your writing skills are almost more important than your &#xD;
engineering skills because you need to be able to describe your bugs, both &#xD;
verbally and in writing. When faced with a tough bug, you should always stop &#xD;
right after you duplicate it and describe it.&lt;/p&gt;&lt;p &gt;&lt;strong&gt;Step 3: Always assume that the bug is yours&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;Reading the code will force you to take the extra time to look at the problem. &#xD;
Starting with the state of the machine at the time of the crash or problem, work &#xD;
through the various scenarios that could cause you to get to that section of &#xD;
code.&lt;/p&gt;&lt;p &gt;&lt;strong&gt;Step 4: Divide and conquer&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;&lt;strong&gt;Step 5: Think creatively&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;If the bug you're trying to eliminate is one of those nasty ones that happens &#xD;
only on certain machines or is hard to duplicate, start looking at the bug from &#xD;
different perspectives. This is the step in which you should start thinking &#xD;
about version mismatches, operating system differences, problems with your &#xD;
program's binaries or its installation, and other external factors.&lt;/p&gt;&lt;p &gt;&lt;strong&gt;Step 6: Leverage tools&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;&lt;strong&gt;Step 7: Start heavy debugging&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;Just as when you're doing light debugging, when you're doing heavy debugging, you should have an idea of where you think your bug is before you start using the debugger, and then use the debugger to prove or disprove your hypothesis.&lt;/p&gt;&lt;p &gt;&lt;strong&gt;Step 8: Verify that the bug is fixed&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;When testing your fix, especially in critical code, you should verify that it &#xD;
works with all data conditions, good and bad. Nothing is worse than a fix for &#xD;
one bug that causes two other bugs.&lt;/p&gt;&lt;p &gt;&lt;strong&gt;Step 9: Learn and share&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;Each time you fix a "good" bug (that is, one that was challenging to find and &#xD;
fix), you should take the time to quickly summarize what you learned.You learn the most about development when you're debugging, so you should take &#xD;
every opportunity to learn from it.&lt;/p&gt;&lt;p &gt;&lt;strong&gt;Final Debugging Process Secret&lt;/strong&gt;&lt;/p&gt;&lt;p &gt;Again, I'm suggesting that you need to have a hypothesis in mind&amp;#8212;something you &#xD;
want to prove or disprove&amp;#8212;before the debugger can help you.As I recommended earlier in &lt;a  href="http://www.cnblogs.com/BpLoveGcy/admin/EditPosts.aspx" target="_blank"&gt;Step &#xD;
7&lt;/a&gt; I write out my hypothesis before I ever touch the debugger to ensure that &#xD;
I have a purpose each time I use it.&lt;/p&gt;&lt;/p&gt;&lt;p &gt;&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BpLoveGcy/aggbug/1742444.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/24/1742444.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BpLoveGcy/archive/2010/05/23/1741939.html</id><title type="text">NET垃圾回收机制</title><summary type="text">http://www.shehui001.com/map.asp?pid=306http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/6591f09d-4f74-40fa-9243-1373f1be273d一下回复节选自《程序员面试指南》，你可以检查一下这些方面的问题，你的问题很可能是不断地创建新对象，而垃圾回收器来不及...</summary><published>2010-05-23T02:46:00Z</published><updated>2010-05-23T02:46:00Z</updated><author><name>Freedom</name><uri>http://www.cnblogs.com/BpLoveGcy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/23/1741939.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/23/1741939.html"/><content type="html">&lt;p&gt;&lt;a href="http://www.shehui001.com/map.asp?pid=306" target="_blank"&gt;&lt;font  color="#000000"&gt;http://www.shehui001.com/map.asp?pid=306&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/6591f09d-4f74-40fa-9243-1373f1be273d" target="_blank"&gt;http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/6591f09d-4f74-40fa-9243-1373f1be273d&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-family: inherit; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; list-style-type: none; text-decoration: none; font-size: 12px; line-height: normal; "&gt;一下回复节选自《程序员面试指南》，你可以检查一下这些方面的问题，你的问题很可能是不断地创建新对象，而垃圾回收器来不及回收导致的，你看看是否有在循环中不断创建新对象的情况：&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-family: inherit; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; list-style-type: none; text-decoration: none; font-size: 12px; line-height: normal; "&gt;在一些不规范的编码情况下，即使是拥有垃圾回收和内存管理机制的托管堆上，仍然可能出现内存泄漏。首先读者需要了解什么是内存泄漏。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 内存泄漏是指内存空间上产生了不再被实际使用却又不能被分配的内存，内存泄漏的意义很广泛，例如程序无意义地保持对象内存、内存碎片、不彻底的对象释放等 都属于内存泄漏现象。内存泄漏将导致主机的内存随程序的运行而逐渐减少，无论内存泄漏的具体形式如何，它的危害都是显而易见的，所有的内存泄漏都是需要程 序员努力避免的。&lt;br /&gt;按照内存泄漏的定义，大部分时候.NET的托管堆中存在着短暂的内存泄漏情况，那是因为对象一旦不被使用后，需要等到下一个GC 时才能被释放。这里，笔者将举出其他几种对系统危害更大的内存泄漏情况：&lt;br /&gt;1）大对象的分配&lt;br /&gt;.NET中所有的大对象将分配在托管堆内一个特 殊的区域，这里暂时称呼它为&amp;#8220;大对象堆&amp;#8221;。在回收大对象堆内的对象时，其他的大对象不会被移动，这是考虑到大规模地移动对象需要耗费过多的资源。这样，在 程序过多地分配和释放大对象之后，就会产生很多内存碎片。&lt;br /&gt;，随着对象的分配和释放不断进行，在不进行对象移动的大对象堆内，将不可避免地产生小的 内存碎片。程序员对此能做的就是尽量减少大对象的分配次数，尤其是那些作为局部变量的，将被大规模分配和释放的大对象，典型的例子就是String类型， 关于String的使用在后续章节将有详细的叙述。&lt;br /&gt;2）不恰当地保存根引用&lt;br /&gt;最简单也最常见的错误做法可能就是不恰当地把一个对象申明为公 共静态变量，一个公共的静态变量将一直被GC视为一个在使用的根引用，而更糟糕的情况是，当这个对象内部还包含更多的对象引用时，这些对象同样不会被释 放。看一段简单的代码：代码3-19。&lt;br /&gt;代码3-19&amp;nbsp; 保存根引用：RefRoot.cs&lt;br /&gt;namespace NET.MST.Third.RootRef&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class RefRoot&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //这里是一个占用大量内存的成员&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String[] BigMembor;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public RefRoot(String content)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //初始化大对象&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BigMembor = new String[1000];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; BigMembor.Length; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BigMembor[i] = content;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class MainClass&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //公共静态大对象&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static RefRoot bigobject = new RefRoot("aaa");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Read();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;在代码3-19中，MainClass定义了一个公共静态的大对象，这个对象将直至程序运行结束后才会被GC释放。这一段代码的设 计是否成功将取决于这个公共静态变量被使用的频率以及业务逻辑，如果在整个程序中各个类型不断地使用这个静态成员，那这样的设计有助于减少大对象堆内的内 存碎片，但如果整个程序极少地甚至于只有一次使用了这个成员，那考虑到它占用的内存会影响整体系统的性能，设计时应该考虑把他设计成实例变量，以便于GC 能够及时地释放它。&lt;br /&gt;这里仍然只从性能的角度考虑问题，实际的设计情况不仅需要考虑性能，还需要考虑程序的和架构和可扩展性。&lt;br /&gt;3)3）不正 确的Finalize方法&lt;br /&gt;在前述章节中笔者已经介绍了，Finalize方法由一个专用的线程进行调用，微软并没有公开这部分具体的调度算法，但 是有一点却是肯定的，不正确的Finalize方法将导致Finalize方法不能被正确执行，系统中所有的Finalize方法不能被正确执行时，包含 它们的对象也只能驻留在托管堆内不能被释放，这样的情况将会导致严重的后果。&lt;br /&gt;Finalize方法应该只致力于快速而简单地释放非托管资源，并且 尽可能快地返回。不正确的Finalize方法可能包含这样的代码：&lt;br /&gt;?&amp;nbsp;&amp;nbsp; &amp;nbsp;没有保护地写文件日志&lt;br /&gt;?&amp;nbsp;&amp;nbsp; &amp;nbsp;访问数据库&lt;br /&gt;?&amp;nbsp;&amp;nbsp; &amp;nbsp;访问网络&lt;br /&gt;?&amp;nbsp;&amp;nbsp; &amp;nbsp;把当前对象赋给某个存活的引用&lt;br /&gt;当Finaize方法访问文件系统、数据库系统或者网络时，将会有资源争用和等待的 潜在危险。试想一个试图不断尝试访问离线数据库的Finalize方法，将会在长时间内不会返回，这不仅影响了本身对象的释放，也使得排在 Finalize方法队列中的所有后续对象得不到释放，这个连锁反应将很快造成内存耗尽。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: normal; font-size: 12px; "&gt;而另外一种危险的代码是在Finalize方法中把对象 自身又赋给了另外一个存活的引用，这时对象内的一部分资源已经被释放了，而另外一部分则没有，这样一个对象被再次激活后，将导致不可预知的后果。&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BpLoveGcy/aggbug/1741939.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BpLoveGcy/archive/2010/05/23/1741939.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BpLoveGcy/archive/2010/04/23/1718799.html</id><title type="text">A Software Developer’s Reading Plan</title><summary type="text">I got this list from 《Code Complete》 Book：1.Introductory Level To move beyond &amp;#8220;introductory&amp;#8221; level at Construx, a developer must read thefollowing books. 《A Guide to Better Ideas, 4th ed》A...</summary><published>2010-04-23T09:23:00Z</published><updated>2010-04-23T09:23:00Z</updated><author><name>Freedom</name><uri>http://www.cnblogs.com/BpLoveGcy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/04/23/1718799.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/04/23/1718799.html"/><content type="html">&lt;p&gt;I got this list from 《Code Complete》 Book：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.Introductory Level &amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;To move beyond &amp;#8220;introductory&amp;#8221; level at Construx, a developer must read the&amp;nbsp;following books. &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《A Guide to Better Ideas, 4th ed》&lt;/strong&gt;Adams, James L. Conceptual Blockbusting:&amp;nbsp;Cambridge, Mass.: Perseus Publishing. &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《Programming Pearls, 2d Ed》&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Bentley, Jon. . Reading, Mass.: Addison-Wesley,&amp;nbsp;2000.&amp;nbsp;Glass, Robert L. , Boston, Mass.:&amp;nbsp;Addison Wesley, 2003. &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《Facts and Fallacies of Software Engineering》&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;McConnell, Steve. . Redmond, WA: Microsoft&amp;nbsp;Press, 1998.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《Software Project Survival Guide》 &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;McConnell, Steve. .. Redmond, WA: Microsoft Press,&amp;nbsp;2004. &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《Code Complete, 2d Ed》&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.Practitioner Level &amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;To achieve &amp;#8220;intermediate&amp;#8221; status at Construx, a programmer needs to read the&amp;nbsp;following additional materials. &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《Software Configuration Management&amp;nbsp;Patterns: Effective Teamwork, Practical Integration》&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Berczuk, Stephen P. and Brad Appleton. , Boston, Mass.: Addison&amp;nbsp;Wesley, 2003. &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《A Brief Guide to the Standard Object Modeling&amp;nbsp;Language, 3d Ed》 &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Fowler, Martin. UML Distilled: , Boston, Mass.: Addison Wesley, 2003. &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《Software Creativity, Reading, Mass》&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Glass, Robert L. .: Addison Wesley, 1995. &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《Testing Computer Software, 2d Ed》 &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Kaner, Cem, Jack Falk, Hung Q. Nguyen. ., &amp;nbsp;New York: John Wiley &amp;amp; Sons, 1999. &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《An Introduction to Object-Oriented &amp;nbsp;Analysis and Design and the Unified Process, 2d Ed.&amp;nbsp;》&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Larman, Craig. Applying UML and Patterns: , Englewood Cliffs, N.J.: &amp;nbsp;Prentice Hall, 2001. &amp;nbsp; 238&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《Rapid Development》 &lt;/strong&gt;McConnell, Steve. . Redmond, WA: Microsoft Press, 1996. &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《Software Requirements, 2d Ed》&lt;/strong&gt;Wiegers, Karl. . Redmond, WA: Microsoft Press,&amp;nbsp;2003. &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《&amp;#8220;Manager&amp;#8217;s Handbook for Software Development&amp;#8221;》&lt;/strong&gt;, &lt;/p&gt;&lt;p&gt;NASA Goddard Space&amp;nbsp;Flight Center. Downloadable from sel.gsfc.nasa.gov/website/documents/online-doc.htm. &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.Professional Level&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;A software developer must read the following materials to achieve full professional &lt;/p&gt;&lt;p&gt;standing at Construx (&amp;#8220;leadership&amp;#8221; level). Additional requirements are&amp;nbsp;tailored to each individual developer; &lt;/p&gt;&lt;p&gt;this section describes the generic requirements.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《Software Architecture in Practice, &amp;nbsp;Second Edition》&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Bass, Len, Paul Clements, and Rick Kazman. &amp;nbsp;Boston, Mass.: Addison Wesley, 2003. &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《Improving the Design of Existing Code, Reading》&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Fowler, Martin. Refactoring:&amp;nbsp;Mass.: Addison Wesley, 1999. &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《Design Patterns, Reading, Mass》&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Gamma, Erich, et al. Design Patterns, Reading, Mass.: Addison Wesley, 1995. &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《Principles of Software Engineering Management》&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Gilb, Tom. &amp;nbsp;Wokingham, Eng-land: Addison-Wesley. &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《Writing Solid Code》&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Maguire, Steve. . Redmond, WA: Microsoft Press, 1993.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《Object-Oriented Software Construction, 2d Ed》&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Meyer, Bertrand. Object-Oriented Software Construction, 2d Ed. New York:&amp;nbsp;Prentice Hall PTR, 1997.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;《&amp;#8220;Software Measurement Guidebook&amp;#8221;》&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;#8220;Software Measurement Guidebook&amp;#8221;, NASA Goddard Space Flight Center. &amp;nbsp;Available from sel.gsfc.nasa.gov/website/documents/online-doc.htm. &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;For more details on this professional development program, as well as for up-to-date reading lists, &lt;/p&gt;&lt;p&gt;see our professional development website at&amp;nbsp;&lt;a href="http://www.cnblogs.com/BpLoveGcy/admin/www.construx.com/professionaldev/" style="color: #ff0000; " target="_blank"&gt;www.construx.com/professionaldev/&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BpLoveGcy/aggbug/1718799.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BpLoveGcy/archive/2010/04/23/1718799.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BpLoveGcy/archive/2010/04/21/1717492.html</id><title type="text">浅析.NET中的Serialization</title><summary type="text">Serialization的概念　　Serialization是.NET中一种实现对象持久性（Persistent）的机制。它是一个将对象中的数据转换成一个单一元素（通常是Stream）的过程。它的逆过程是Deserialization。Serialization的核心概念是将一个对象的所有数据看作一个独立的单元。　　一般说来，在两种情况下非常需要Serialization：1）当我们希望能够将对...</summary><published>2010-04-21T10:49:00Z</published><updated>2010-04-21T10:49:00Z</updated><author><name>Freedom</name><uri>http://www.cnblogs.com/BpLoveGcy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/04/21/1717492.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/04/21/1717492.html"/><content type="html">&lt;span  style="font-family: Simsun; color: #333333; "&gt;&lt;strong&gt;Serialization的概念&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　Serialization是.NET中一种实现对象持久性（Persistent）的机制。它是一个将对象中的数据转换成一个单一元素（通常是Stream）的过程。它的逆过程是Deserialization。Serialization的核心概念是将一个对象的所有数据看作一个独立的单元。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　一般说来，在两种情况下非常需要Serialization：1）当我们希望能够将对象当前的状态完整地保存到存储介质中，以便我们以后能够精确地还原对象时；2）当我们希望将对象从一个应用程序空间（Application domain）传递到另一个应用程序空间时。例如，Windows Form程序就是利用Serialization机制来实现剪贴板的copy &amp;amp; paste的。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　.NET Framework支持两种类型的Serialization：Shallow Serialization和Deep Serialization。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　所谓Shallow Serialization是将对象的可读写（read-write）属性的值转换成字节流，而对象内部的数据（没有通过read-write属性暴露出来的数据）则不被转换。XmlSerializer以及Web Services就使用这种技术。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　Deep Serialization比Shallow Serialization更加彻底，因为它是将存储在对象私有变量里的实际值拷贝到字节流里。而且Deep Serialization还将serialize整个object graph。也就是说，如果你的对象持有其他对象的引用，或者其他对象引用的集合，那么所有这些对象都将被Serialize。BinaryFormatter和SoapFormatter以及.NET Remoting都使用Deep Serialization技术，它甚至被有限地用于LosFormatter来产生存储在Web Form页中的状态数据。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　本文将着重于Deep Serialization。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;Serialization的过程&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　.NET Framework通过Reflection提供自动Serialization的机制。当一个对象被序列化（Serialized）的时候，它的类名，Assembly，以及类实例的所有数据成员都将被写入存储介质中。Serialization引擎保持对所有已经被序列化的对象引用的追踪，以确保相同的对象引用最多只被序列化一次。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　通常，一个Serialization过程会由formatter（例如BinaryFormatter）的Serialize方法引发。对象的Serialization过程按照以下规则进行：&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　1、 检测以确保formatter是否拥有一个代理选择器（surrogate selector）。如果有，检查代理选择器是否持有给定的对象类型。如果有，ISerializable.GetObjectData被调用。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　2、 如果formatter没有代理选择器，或者代理选择器没有对象类型，检查对象是否被用Serializable属性标记。如果没有，则抛出SerializationException异常。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　3、 如果对象被标记为Serializable，检查对象是否实现了ISerializable接口。如果实现了此接口，则GetObjectData被调用。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;4、 如果对象没有实现ISerializable接口，则使用默认的序列化策略，来序列化没有用NonSerialized属性标记的域。&amp;nbsp;&lt;/p&gt;&lt;p&gt;使你的class能够被序列化&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　通过上面对Serialization过程的分析，我们可以看出，有两种方式可以使一个class能够被序列化：1）将此class简单地标记为Serializable；2）为此class实现ISerializable接口，并将此class标记为Serializable。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　1、 标记Serializable属性&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　标记Serializable属性的方式是实现Serialization的基本方法。举个简单的例子：&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　[Serializable]&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　public class Person&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　{&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　public string name = null;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　public int age = 0;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　}&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　你可以使用BinaryFormatter来将上面的class序列化：&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　Person sam = new Person();&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　sam.name = "sam";&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　sam.age = 24;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　IFormatter formatter = new BinaryFormatter();&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　Stream stream = new FileStream("sam.dat",&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　FileMode.Create, FileAccess.Write, FileShare.None);&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　formatter.Serialize(stream, sam);&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　stream.Close();&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　就是这么简单，你所要做的就是创建一个Stream和一个formatter的实例，然后调用formatter的Serialize方法。经过BinaryFormatter serialize的数据仍然能够通过BinaryFormatter deserialize回来，方法与serialize同样简单，这里就不赘述了。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　如果你不想将类里的所有域都序列化，可以使用NonSerialized属性进行选择。如：&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　[Serializable]&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　public class Person&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　{&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　public string name = null;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　[NonSerialized]&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　public int age = 0;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　}&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　这样，age域就不会被序列化了。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　需要注意的是，Serializable属性并不能被继承。也就是说如果你希望Person的派生类也能够被Serialize的话，那么这个派生类也必须被Serializable标记。否则将得到SerializationException异常。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　同样的，Person类中的所有对其他类的引用，其所引用的类都应该是能够被Serialize的。.NET Framework中的大部分class都实现了ISerializable接口，但有些class没有实现，例如ImageList。可以通过MSDN Library的到一个实现了ISerializable接口的class列表。对那些没有实现此接口的class，使用的时候要当心。&lt;/p&gt;&lt;p&gt;2、 实现ISerializable接口&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　Serializable属性的功能非常强大，它使得Serialize和Deserialize变得十分简单。但凡事有利必有弊，由Serializable实现的自动序列化方法有时不够灵活。我们并不能完全控制Serialize和Deserialize的行为，而有些时候它们的行为对我们来说很重要。那么我们通过何种方法能够控制Serialize和Deserialize的行为呢？答案就是，自己来实现ISerializable接口。ISerializable接口给予我们更大的自由来控制Serialize和Deserialize，但是无疑我们将不得不写更多的代码L。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　下面我们来看看如何实现ISerializabe接口。ISerializable接口位于System.Runtime.Serialization名字空间中，声明如下：&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　public inferface ISerializable&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　{&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　void GetObjectData(SerializationInfo info,&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　StreamingContext context);&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　}&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　它只有一个方法GetObjectData。因此，像实现其他接口一样，我们必须实现此方法。但与其他接口不同的是，为了Deserialization，我们还必须实现一个特殊的构造函数（我称此构造函数为&amp;#8220;序列化构造函数&amp;#8221;），此构造函数具有与GetObjectData相同的参数列表。由于此构造函数专门用于.NET Framework在Deserialize时的Reflection机制，因此我们通常将它声明为保护或私有模式。如下：（当然，如果你的class只需要Serialize而不需要Deserialize的话，也可以不实现这个特殊的构造函数）&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　[Serializable]&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　public class Person : ISerializable&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　{&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　public string name = null;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　public int age = 0;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　public Person()&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　{&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　}&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　protected Person(SerializationInfo info, StreamingContext context)&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　{&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　name = info.GetString("name");&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　age = info.GetInt32("age");&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　}&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　void ISerializable.GetObjectData(SerializationInfo info,&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　StreamingContext context)&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　{&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　info.AddValue("name", name);&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　info.AddValue("age", age);&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　}&amp;nbsp;&lt;br /&gt;&lt;br /&gt;　　}&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　通过实现ISerializable接口，使得我们有机会在ISerializable.GetObjectData中控制Serialize的行为，在&amp;#8220;序列化构造函数&amp;#8221;中控制Deserialize的行为。这个接口提供给我们的信息非常全面而灵活，以致于我们甚至可以在这两个方法中耍些花招。比如，我们可以在Deserialize的时候，籍由改变info.FullTypeName来得到一种与被Serialize的对象不同类型的另一个对象等。&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/BpLoveGcy/aggbug/1717492.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BpLoveGcy/archive/2010/04/21/1717492.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BpLoveGcy/archive/2010/04/16/1713481.html</id><title type="text">#if (C# Reference)</title><summary type="text">ref:http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx[代码]</summary><published>2010-04-16T05:13:00Z</published><updated>2010-04-16T05:13:00Z</updated><author><name>Freedom</name><uri>http://www.cnblogs.com/BpLoveGcy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/04/16/1713481.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/04/16/1713481.html"/><content type="html">&lt;p&gt;ref:&lt;a href="http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;preprocessor_if.cs&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#define&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;DEBUG&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#define&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;MYTEST&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;System;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;MyClass&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Main()&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(DEBUG&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;!MYTEST)&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;DEBUG&amp;nbsp;is&amp;nbsp;defined&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#elif&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(!DEBUG&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;MYTEST)&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;MYTEST&amp;nbsp;is&amp;nbsp;defined&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#elif&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(DEBUG&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;MYTEST)&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;DEBUG&amp;nbsp;and&amp;nbsp;MYTEST&amp;nbsp;are&amp;nbsp;defined&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#else&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;DEBUG&amp;nbsp;and&amp;nbsp;MYTEST&amp;nbsp;are&amp;nbsp;not&amp;nbsp;defined&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;#endif&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BpLoveGcy/aggbug/1713481.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BpLoveGcy/archive/2010/04/16/1713481.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BpLoveGcy/archive/2010/04/12/1710173.html</id><title type="text">VS 2008 常用快捷键！</title><summary type="text">左缩进 ：（支持多行操作）Ctrl + TAB；右缩进：（支持多行操作）TAB； .快捷键 功能CTRL + SHIFT + B生成解决方案CTRL + F7 生成编译CTRL + O 打开文件CTRL + SHIFT + O打开项目CTRL + SHIFT + C显示类视图窗口F4 显示属性窗口SHIFT + F4显示项目属性窗口CTRL + SHIFT + E显示资源视图F12 转到定义CTR...</summary><published>2010-04-12T05:30:00Z</published><updated>2010-04-12T05:30:00Z</updated><author><name>Freedom</name><uri>http://www.cnblogs.com/BpLoveGcy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/04/12/1710173.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BpLoveGcy/archive/2010/04/12/1710173.html"/><content type="html">&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;左缩进 ：（支持多行操作）&lt;/p&gt;&lt;p&gt;Ctrl + TAB；&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;右缩进：（支持多行操作）&lt;/p&gt;&lt;p&gt;TAB； .&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;hr /&gt;&lt;span  style="font-family: Simsun; color: #ff28ff; "&gt;快捷键 功能&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + SHIFT + B生成解决方案&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + F7 生成编译&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + O 打开文件&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + SHIFT + O打开项目&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + SHIFT + C显示类视图窗口&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;F4 显示属性窗口&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;SHIFT + F4显示项目属性窗口&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + SHIFT + E显示资源视图&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;F12 转到定义&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + F12转到声明&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + ALT + J对象浏览&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + ALT + F1帮助目录&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + F1 动态帮助&amp;nbsp;&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;F1 帮助&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;SHIFT + F1当前窗口帮助&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + ALT + F3帮助-搜索&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;SHIFT + ALT + ENTER全屏显示&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + -向后定位&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + SHIFT + -向前定位&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + F4关闭文档窗口&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + PAGE DOWN光标定位到窗口上方&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + PAGE UP光标定位到窗口下方&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + F6&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + TAB下一个文档窗口&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + SHIFT + F6&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + SHIFT + TAB上一个文档窗口&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;ALT + F6下一个面板窗口&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + K, CTRL + L取消remark&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + K, CTRL + C注释选择的代码&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + K, CTRL + U取消对选择代码的注释&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + M, CTRL + O折叠代码定义&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + M, CTRL + L展开代码定义&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + DELETE删除至词尾&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + BACKSPACE删除至词头&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;SHIFT + TAB取消制表符&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + U转小写&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + SHIFT + U转大写&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + SHIFT + END选择至文档末尾&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + SHIFT + HOME选择至文档末尾开始&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;SHIFT + END选择至行尾&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;SHIFT + HOME选择至行开始处&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;SHIFT + ALT + END垂直选择到最后尾&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;SHIFT + ALT + HOME垂直选择到最前面&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + A全选&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + W选择当前单词&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + SHIFT + PAGE UP选择至本页前面&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + SHIFT + PAGE DOWN选择至本页后面&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + END文档定位到最后&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + HOME文档定位到最前&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + G转到&amp;#8230;&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + K, CTRL + P上一个标签&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + K, CTRL + N下一个标签&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;ALT + F10调试-ApplyCodeChanges&amp;nbsp;&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + ALT+ Break停止调试&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + SHIFT + F9 取消所有断点&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + F9允许中断&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + SHIFT + F5调试-重新开始&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;F5运行调试&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + F5运行不调试&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;F10跨过程序执行&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;F11单步逐句执行&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + J列出成员&amp;nbsp;&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + PAGE DOWN下一个视图&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + B格式-粗体&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;CTRL + SHIFT + T格式-文字缩进&amp;nbsp;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 21px; "&gt;调试快捷键&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 21px; "&gt;F6: 生成解决方案&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+F6: 生成当前项目&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;F7: 查看代码&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Shift+F7: 查看窗体设计器&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;F5: 启动调试&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+F5: 开始执行(不调试)&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Shift+F5: 停止调试&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+Shift+F5: 重启调试&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;F9: 切换断点&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+F9: 启用/停止断点&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+Shift+F9: 删除全部断点&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;F10: 逐过程&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+F10: 运行到光标处&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;F11: 逐语句&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;编辑快捷键&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 21px; "&gt;Shift+Alt+Enter: 切换全屏编辑&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+B,T / Ctrl+K,K: 切换书签开关&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+B,N / Ctrl+K,N: 移动到下一书签&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+B,P: 移动到上一书签&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+B,C: 清除全部标签&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+I: 渐进式搜索&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+Shift+I: 反向渐进式搜索&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+F: 查找&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+Shift+F: 在文件中查找&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;F3: 查找下一个&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Shift+F3: 查找上一个&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+H: 替换&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+Shift+H: 在文件中替换&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Alt+F12: 查找符号(列出所有查找结果)&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+Shift+V: 剪贴板循环&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+左右箭头键: 一次可以移动一个单词&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+上下箭头键: 滚动代码屏幕，但不移动光标位置。&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+Shift+L: 删除当前行&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+M,M: 隐藏或展开当前嵌套的折叠状态&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+M,L: 将所有过程设置为相同的隐藏或展开状态&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+M,P: 停止大纲显示&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+E,S: 查看空白&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+E,W: 自动换行&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+G: 转到指定行&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Shift+Alt+箭头键: 选择矩形文本&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Alt+鼠标左按钮: 选择矩形文本&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+Shift+U: 全部变为大写&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+U: 全部变为小写&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 21px; "&gt;代码快捷键&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 21px; "&gt;Ctrl+J / Ctrl+K,L: 列出成员&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+Shift+空格键 / Ctrl+K,P: 参数信息&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+K,I: 快速信息&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+E,C / Ctrl+K,C: 注释选定内容&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+E,U / Ctrl+K,U: 取消选定注释内容&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+K,M: 生成方法存根&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+K,X: 插入代码段&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+K,S: 插入外侧代码&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;F12: 转到所调用过程或变量的定义&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 21px; "&gt;窗口快捷键&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 21px; "&gt;Ctrl+W,W: 浏览器窗口&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+W,S: 解决方案管理器&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+W,C: 类视图&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+W,E: 错误列表&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+W,O: 输出视图&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+W,P: 属性窗口&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+W,T: 任务列表&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+W,X: 工具箱&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+W,B: 书签窗口&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+W,U: 文档大纲&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+D,B: 断点窗口&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+D,I: 即时窗口&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+Tab: 活动窗体切换&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+Shift+N: 新建项目&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+Shift+O: 打开项目&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+Shift+S: 全部保存&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Shift+Alt+C: 新建类&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;Ctrl+Shift+A: 新建项&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 21px; "&gt;&lt;br style="line-height: 1.5em !important; " /&gt;VS2005的隐藏快捷键&amp;nbsp;&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;&amp;nbsp;&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;这里我将会把一些无意中发现的VS2005中没有明确指出的快捷键共享出来，并不是所有的快捷键，或者常见的一些快捷键。&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;1、Ctrl+Space直接完成类或函数（本来这个并不算隐藏的快捷键，但是因为中文输入法抢占这个快捷键，所以。。。，替代的快捷键是Alt+Right）&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;2、Shift+Delete整行删除，并且将这一行放到剪贴板（这时候不能选中一段内容）&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;3、Shift+Insert粘贴，有点匪夷所思，Ctrl+V就可以了，大概是为了和Shift+Delete对应吧&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;4、Ctrl+Up，Ctrl+Down滚动编辑器，但尽量不移动光标，光标保证在可见范围内&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;5、Ctrl+BackSpace，Ctrl+Delete整词删除，有的时候很有用&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;6、Ctrl+Left，Ctrl+Right按整词移动光标（不算隐藏，和前面几条加起来就是Ctrl光标控制套件了）&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;7、Alt+Shift+F10打开执行改名，实现接口和抽象类的小窗口（还可以用Ctrl+.，不过有的中文输入法用到这个）&lt;br style="line-height: 1.5em !important; " /&gt;8、Shift+F9调试是打开QuickWatch，内容是当前光标所在处的内容&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;9、F12转跳到定义，很有用的快捷键&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;10、Shift+F12查找所有引用&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;11、Ctrl+F10=F5，开始Debug&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;12、Ctrl+F6循环察看代码窗口，有点Ctrl+Tab的感觉&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;13、Ctrl+F3查找当前光标选中的内容，可以和F3配合使用&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;14、Ctrl+F2将焦点转移到类的下拉框上&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;15、Alt+F7=Ctrl+Tab&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;16、Alt+F11新开VS2005并编辑宏&amp;nbsp;&lt;br style="line-height: 1.5em !important; " /&gt;17、Alt+F12查找=Ctrl+F&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;span  style="font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 25px; color: #333333; "&gt;快捷键&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 功能&lt;/span&gt;&lt;/p&gt;&lt;span  style="font-family: 宋体, Arial, Helvetica, sans-serif; line-height: normal; color: #333333; "&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Ctrl+Space&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;直接完成类或函数（替代的快捷键是Alt+Right）&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Shift+Delete&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;整行删除，并且将这一行放到剪贴板（这时候不能选中一段内容）&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Ctrl+Up，Ctrl+Down&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;滚动编辑器，但尽量不移动光标，光标保证在可见范围内&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Ctrl+BackSpace，Ctrl+Delete&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;整词删除，有的时候很有用&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Alt+F8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;快速整理源代码&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;CTRL + F7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;生成编译&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;F12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;转到定义&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;CTRL + F12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;转到声明&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;CTRL + F4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;关闭文档窗口&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;TAB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;制表符，可以整体缩排&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;SHIFT + TAB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;取消制表符&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;CTRL + U&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 转小写&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;CTRL + SHIFT + U&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 转大写&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;CTRL + A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;全选&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;CTRL + W&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;选择当前单词&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Shift+F5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;停止调试&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Alt+ F9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;显示所有断点&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;F5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;运行调试&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;CTRL + F5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;运行不调试&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;F10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;跨过程序执行&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;F11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;单步逐句执行，进入函数内部执行&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;F6:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 生成解决方案&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Ctrl+F6:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;生成当前项目&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;F5:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;启动调试&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Ctrl+F5:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;开始执行(不调试)&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Shift+F5:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;停止调试&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Ctrl+Shift+F5:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;重启调试&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;F9:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;切换断点&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Ctrl+F9:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;启用/停止断点&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Ctrl+F:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;查找&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Ctrl+H:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;替换&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Ctrl+Shift+L:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 删除当前行&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;Shift+F12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;查找所有引用&lt;/p&gt;&lt;p style="font-size: 14px; line-height: 1.8em; text-indent: 2em; margin-top: 10px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/BpLoveGcy/aggbug/1710173.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BpLoveGcy/archive/2010/04/12/1710173.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
