<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>CLR Team Blog</title><link>http://blogs.msdn.com/clrteam/default.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>CLR-Related PDC 2009 Sessions</title><link>http://blogs.msdn.com/clrteam/archive/2009/11/17/clr-related-pdc-2009-sessions.aspx</link><pubDate>Wed, 18 Nov 2009 00:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9923964</guid><dc:creator>CLRTeam</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/clrteam/comments/9923964.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clrteam/commentrss.aspx?PostID=9923964</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clrteam/rsscomments.aspx?PostID=9923964</wfw:comment><description>&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;If you’re at &lt;/FONT&gt;&lt;A href="http://microsoftpdc.com/" mce_href="http://microsoftpdc.com/"&gt;&lt;FONT size=3 face=Calibri&gt;PDC&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt; this year and are reading the CLR Team’s blog, there are a few sessions that might be of interest to you.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;A href="http://microsoftpdc.com/Sessions/FT51" mce_href="http://microsoftpdc.com/Sessions/FT51"&gt;&lt;FONT size=3 face=Calibri&gt;Future of Garbage Collection&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt; is a session by the creator of the CLR’s GC, Patrick Dussud.&amp;nbsp; Come hear him talk Wednesday at 1:00PM in Petree Hall C.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;A href="http://microsoftpdc.com/Sessions/VTL01" mce_href="http://microsoftpdc.com/Sessions/VTL01"&gt;&lt;FONT size=3 face=Calibri&gt;Code Contracts and Pex: Power Charge Your Assertions and Unit Tests&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt; is a session by Mike Barnett and Nikolai Tillmann from Microsoft Research about some of the latest advances in these tools for design-by-contract and unit-testing.&amp;nbsp; It’s on Tuesday at 4:30PM in 408A.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;A href="http://microsoftpdc.com/Sessions/CL17" mce_href="http://microsoftpdc.com/Sessions/CL17"&gt;&lt;FONT size=3 face=Calibri&gt;Building Sensor- and Location-Aware Applications with Windows 7 and .NET Framework 4&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; includes a discussion of the Location APIs that were added to .NET Framework 4.&amp;nbsp; It’s being presented by Gavin Gear on Tuesday at 4:30PM in 515A.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9923964" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clrteam/archive/tags/Contracts/default.aspx">Contracts</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/GC/default.aspx">GC</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/.NET+Framework+4/default.aspx">.NET Framework 4</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/PDC/default.aspx">PDC</category></item><item><title>How to Make the Most of Your .NET Server Code</title><link>http://blogs.msdn.com/clrteam/archive/2009/11/13/how-to-make-the-most-of-your-net-server-code.aspx</link><pubDate>Fri, 13 Nov 2009 18:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9922132</guid><dc:creator>CLRTeam</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/clrteam/comments/9922132.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clrteam/commentrss.aspx?PostID=9922132</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clrteam/rsscomments.aspx?PostID=9922132</wfw:comment><description>&lt;P&gt;One of our team’s field engineers recently sent a link to a Channel 9 video: &lt;A class="" href="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Steve-Michelotti-of-eimagination-on-High-Performance-Web-Solutions/" mce_href="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Steve-Michelotti-of-eimagination-on-High-Performance-Web-Solutions/"&gt;Steve Michelotti of e.magination on High Performance Web Solutions&lt;/A&gt;. This company built a 64-bit web server that handles over 3 billion transactions a day and guarantees a 250 ms response time.&amp;nbsp; And it goes without saying that they built it on top of .NET.&lt;/P&gt;
&lt;P&gt;The team optimized their code to avoid implicit allocations, pool and reuse objects and allocate large collections directly on the Large Object Heap. But they still saw some latencies that were greater than their contract allowed. So they worked with their field engineer and the GC team to get a new feature implemented in .NET 3.5 SP1 that let them work around the problem. &lt;/P&gt;
&lt;P&gt;The problem comes from the size of their managed heaps. When you try to manage memory on a 16 GB server it can take a few seconds to run through the heaps. There’s not much you can do on a single machine besides keeping your heaps reasonably sized. Having millions of objects in memory is expensive. But their architecture is such that they can direct requests from the web server to any of a set of identical application servers. This means that they can take any individual server offline for the few seconds it takes to do a full collection. All they needed is to know when a GC is going to happen and when it’s completed. &lt;A class="" href="http://msdn.microsoft.com/en-us/library/system.gc.registerforfullgcnotification(VS.100).aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.gc.registerforfullgcnotification(VS.100).aspx"&gt;Full GC notifications&lt;/A&gt; is a new feature in 3.5 SP1 that gave e.magination necessary insight into the GC’s behavior that lets them redirect requests away from servers that are doing full GCs. &lt;/P&gt;
&lt;P&gt;This video is only about 20 minutes long but it’s packed with great insights into how to make the most of your .NET server code. It shows the team at e.magination doing a fantastic job of analyzing and tuning their system for optimum performance. I found it interesting and inspiring. I hope you do too.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9922132" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clrteam/archive/tags/Andrew+Pardoe/default.aspx">Andrew Pardoe</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/GC/default.aspx">GC</category></item><item><title>CLR Inside Out - Exploring the .NET Framework 4 Security Model</title><link>http://blogs.msdn.com/clrteam/archive/2009/11/10/clr-inside-out-exploring-the-net-framework-4-security-model.aspx</link><pubDate>Tue, 10 Nov 2009 23:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9920518</guid><dc:creator>CLRTeam</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/clrteam/comments/9920518.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clrteam/commentrss.aspx?PostID=9920518</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clrteam/rsscomments.aspx?PostID=9920518</wfw:comment><description>&lt;CENTER&gt;&lt;IMG style="WIDTH: 180px; HEIGHT: 239px" src="http://i.msdn.microsoft.com/ee725283.cover.png" width=180 height=239 mce_src="http://i.msdn.microsoft.com/ee725283.cover.png"&gt;&lt;/CENTER&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The new installment of the “CLR Inside Out” column in &lt;I style="mso-bidi-font-style: normal"&gt;MSDN Magazine&lt;/I&gt; is now available on line.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This month we have an article from Andrew Dai on &lt;/FONT&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; COLOR: #333333; FONT-SIZE: 9pt; mso-bidi-font-family: 'Segoe UI'"&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/ee677170.aspx"&gt;&lt;FONT color=#4f81bd&gt;Exploring the .NET Framework 4 Security Model&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This article discusses how the new .NET Framework 4 security model makes it easier to work with partially trusted code.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;You can find a list of all “CLR Inside Out” articles &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/cc501040.aspx"&gt;&lt;FONT size=3 face=Calibri&gt;here&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;As always, please let us know if you have topics you’d like to see covered in the column.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9920518" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clrteam/archive/tags/CLR+Inside+Out/default.aspx">CLR Inside Out</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/Andrew+Dai/default.aspx">Andrew Dai</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/.NET+Framework+4/default.aspx">.NET Framework 4</category></item><item><title>Visual Studio 2010 – Beta 2 : Announcements</title><link>http://blogs.msdn.com/clrteam/archive/2009/10/19/visual-studio-2010-beta-2-announcements.aspx</link><pubDate>Mon, 19 Oct 2009 18:07:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9909280</guid><dc:creator>CLRTeam</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/clrteam/comments/9909280.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clrteam/commentrss.aspx?PostID=9909280</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clrteam/rsscomments.aspx?PostID=9909280</wfw:comment><description>&lt;html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
xmlns="http://www.w3.org/TR/REC-html40"&gt;   &lt;head&gt; &lt;meta http-equiv=Content-Type content="text/html; charset=windows-1252"&gt; &lt;meta name=ProgId content=Word.Document&gt; &lt;meta name=Generator content="Microsoft Word 14"&gt; &lt;meta name=Originator content="Microsoft Word 14"&gt; &lt;link rel="File-List" href="VisualStudio2010_files/filelist.xml"&gt; &lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:DocumentProperties&gt;
  &lt;o:Author&gt;Abhishek Mondal&lt;/o:Author&gt;
  &lt;o:Template&gt;Normal&lt;/o:Template&gt;
  &lt;o:LastAuthor&gt;Abhishek Mondal&lt;/o:LastAuthor&gt;
  &lt;o:Revision&gt;1&lt;/o:Revision&gt;
  &lt;o:TotalTime&gt;1&lt;/o:TotalTime&gt;
  &lt;o:Created&gt;2009-10-19T18:05:00Z&lt;/o:Created&gt;
  &lt;o:LastSaved&gt;2009-10-19T18:06:00Z&lt;/o:LastSaved&gt;
  &lt;o:Pages&gt;1&lt;/o:Pages&gt;
  &lt;o:Words&gt;198&lt;/o:Words&gt;
  &lt;o:Characters&gt;1131&lt;/o:Characters&gt;
  &lt;o:Company&gt;Microsoft&lt;/o:Company&gt;
  &lt;o:Lines&gt;9&lt;/o:Lines&gt;
  &lt;o:Paragraphs&gt;2&lt;/o:Paragraphs&gt;
  &lt;o:CharactersWithSpaces&gt;1327&lt;/o:CharactersWithSpaces&gt;
  &lt;o:Version&gt;14.00&lt;/o:Version&gt;
 &lt;/o:DocumentProperties&gt;
 &lt;o:OfficeDocumentSettings&gt;
  &lt;o:AllowPNG/&gt;
 &lt;/o:OfficeDocumentSettings&gt;
&lt;/xml&gt;&lt;![endif]--&gt; &lt;link rel="themeData" href="VisualStudio2010_files/themedata.thmx"&gt; &lt;link rel="colorSchemeMapping" href="VisualStudio2010_files/colorschememapping.xml"&gt; &lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:SpellingState&gt;Clean&lt;/w:SpellingState&gt;
  &lt;w:GrammarState&gt;Clean&lt;/w:GrammarState&gt;
  &lt;w:TrackMoves&gt;false&lt;/w:TrackMoves&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:EnableOpenTypeKerning/&gt;
   &lt;w:DontFlipMirrorIndents/&gt;
   &lt;w:OverrideTableStyleHps/&gt;
  &lt;/w:Compatibility&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt; &lt;style&gt; 
&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;
	mso-font-charset:2;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;
	mso-font-charset:2;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520092929 1073786111 9 0 415 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin-top:0in;
	margin-right:0in;
	margin-bottom:10.0pt;
	margin-left:0in;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	mso-themecolor:followedhyperlink;
	text-decoration:underline;
	text-underline:single;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-name:"List Paragraph\,Bullet List\,FooterText";
	mso-style-priority:34;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"List Paragraph Char\,Bullet List Char\,FooterText Char";
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-bidi-language:EN-US;}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst
	{mso-style-name:"List Paragraph\,Bullet List\,FooterTextCxSpFirst";
	mso-style-priority:34;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"List Paragraph Char\,Bullet List Char\,FooterText Char";
	mso-style-type:export-only;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-bidi-language:EN-US;}
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle
	{mso-style-name:"List Paragraph\,Bullet List\,FooterTextCxSpMiddle";
	mso-style-priority:34;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"List Paragraph Char\,Bullet List Char\,FooterText Char";
	mso-style-type:export-only;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-bidi-language:EN-US;}
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast
	{mso-style-name:"List Paragraph\,Bullet List\,FooterTextCxSpLast";
	mso-style-priority:34;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"List Paragraph Char\,Bullet List Char\,FooterText Char";
	mso-style-type:export-only;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-bidi-language:EN-US;}
span.ListParagraphChar
	{mso-style-name:"List Paragraph Char\,Bullet List Char\,FooterText Char";
	mso-style-priority:34;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"List Paragraph\,Bullet List\,FooterText";
	mso-ansi-font-size:12.0pt;
	mso-bidi-font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-ascii-font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-hansi-font-family:"Times New Roman";
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-language:EN-US;}
span.GramE
	{mso-style-name:"";
	mso-gram-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
	{mso-style-type:export-only;
	margin-bottom:10.0pt;
	line-height:115%;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
 /* List Definitions */
 @list l0
	{mso-list-id:105930065;
	mso-list-type:hybrid;
	mso-list-template-ids:-794121780 -1997869836 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
	{mso-level-number-format:bullet;
	mso-level-text:-;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:1.25in;
	text-indent:-.25in;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-ansi-font-weight:normal;}
@list l0:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:1.75in;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:2.25in;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:2.75in;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:3.25in;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:3.75in;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:4.25in;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:4.75in;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:5.25in;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l1
	{mso-list-id:1008097041;
	mso-list-type:hybrid;
	mso-list-template-ids:1376138304 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l1:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l1:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l1:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l1:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l1:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l1:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l1:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l1:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l2
	{mso-list-id:2097630576;
	mso-list-type:hybrid;
	mso-list-template-ids:2134295566 1211015790 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l2:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:.5in;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;
	mso-bidi-font-family:Symbol;}
@list l2:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:1.0in;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l2:level3
	{mso-level-tab-stop:1.5in;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l2:level4
	{mso-level-tab-stop:2.0in;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l2:level5
	{mso-level-tab-stop:2.5in;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l2:level6
	{mso-level-tab-stop:3.0in;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l2:level7
	{mso-level-tab-stop:3.5in;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l2:level8
	{mso-level-tab-stop:4.0in;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l2:level9
	{mso-level-tab-stop:4.5in;
	mso-level-number-position:left;
	text-indent:-.25in;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
--&gt;
&lt;/style&gt; &lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin-top:0in;
	mso-para-margin-right:0in;
	mso-para-margin-bottom:10.0pt;
	mso-para-margin-left:0in;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapedefaults v:ext="edit" spidmax="1026"/&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapelayout v:ext="edit"&gt;
  &lt;o:idmap v:ext="edit" data="1"/&gt;
 &lt;/o:shapelayout&gt;&lt;/xml&gt;&lt;![endif]--&gt; &lt;/head&gt;   &lt;body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'&gt;   &lt;div class=WordSection1&gt;   &lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l1 level1 lfo1'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-size:11.0pt;font-family:Symbol;mso-fareast-font-family:Symbol;
mso-bidi-font-family:Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;·&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;b style='mso-bidi-font-weight:normal'&gt;&lt;span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-latin'&gt;Visual Studio 2010 and .NET Framework 4 Beta 2&lt;/span&gt;&lt;/b&gt;&lt;span style='font-size:11.0pt;
font-family:"Calibri","sans-serif";mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-theme-font:minor-latin'&gt; &lt;b style='mso-bidi-font-weight:
normal'&gt;availability &lt;/b&gt;– The Visual Studio 2010 and .NET Framework 4 Beta 2 will be available to MSDN subscribers on Monday, October 19&lt;sup&gt;th&lt;/sup&gt;, with general availability on October 21&lt;sup&gt;st&lt;/sup&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal'&gt;&lt;b style='mso-bidi-font-weight:normal'&gt;&lt;span style='mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;
color:black'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;   &lt;ul style='margin-top:0in' type=disc&gt;  &lt;li class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
     normal;mso-list:l2 level1 lfo2;tab-stops:list .5in'&gt;&lt;b style='mso-bidi-font-weight:
     normal'&gt;&lt;span style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:
     Calibri;mso-bidi-theme-font:minor-latin;color:black'&gt;Download:&lt;/span&gt;&lt;/b&gt;&lt;span
     style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:
     Calibri;mso-bidi-theme-font:minor-latin;color:black'&gt;&lt;span
     style='mso-spacerun:yes'&gt;  &lt;/span&gt;Please visit &lt;/span&gt;&lt;span
     style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=151797"&gt;&lt;span
     style='mso-fareast-font-family:"Times New Roman"'&gt;Microsoft Visual Studio      2010 and .NET Framework 4 Beta&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style='mso-fareast-font-family:
     "Times New Roman";mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;
     color:#262626'&gt; &lt;/span&gt;&lt;span style='mso-fareast-font-family:"Times New Roman";
     mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'&gt;site to      download the Beta, submit feedback, go to forums, and find more information      about the Beta.&lt;span style='color:#262626'&gt; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span
     style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'&gt; &lt;/span&gt;&lt;span
     style='mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:
     Calibri;mso-bidi-theme-font:minor-latin'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;   &lt;p class=MsoListParagraphCxSpFirst&gt;&lt;span style='font-size:11.0pt;font-family:
"Calibri","sans-serif";mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-theme-font:minor-latin'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l1 level1 lfo1'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-size:11.0pt;font-family:Symbol;mso-fareast-font-family:Symbol;
mso-bidi-font-family:Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;·&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;b style='mso-bidi-font-weight:normal'&gt;&lt;span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-latin'&gt;Launch date for Visual Studio 2010 and .NET Framework 4&lt;/span&gt;&lt;/b&gt;&lt;span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-latin'&gt; – The official launch of Visual Studio 2010 and .NET Framework 4 is March 22&lt;sup&gt;nd&lt;/sup&gt;, 2010.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle&gt;&lt;span style='font-size:11.0pt;font-family:
"Calibri","sans-serif";mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-theme-font:minor-latin'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l1 level1 lfo1'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-size:11.0pt;font-family:Symbol;mso-fareast-font-family:Symbol;
mso-bidi-font-family:Symbol;mso-bidi-language:AR-SA'&gt;&lt;span style='mso-list:
Ignore'&gt;·&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;b style='mso-bidi-font-weight:normal'&gt;&lt;span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-latin'&gt;Visual Studio 2010&lt;/span&gt;&lt;/b&gt;&lt;span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:
minor-latin'&gt; &lt;b style='mso-bidi-font-weight:normal'&gt;pricing, licensing and packaging details &lt;/b&gt;– &lt;/span&gt;&lt;span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:
minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;
mso-bidi-language:AR-SA'&gt;Microsoft is announcing a new packaging lineup and licensing options for MSDN and Visual Studio 2010, including the “Ultimate Offer.”&lt;span style='mso-spacerun:yes'&gt;  &lt;/span&gt;For more information on the new packaging, licensing, and pricing of Visual Studio 2010 and MSDN, &lt;span
class=GramE&gt;visit&lt;/span&gt; &lt;a href="http://microsoft.com/visualstudio"&gt;http://microsoft.com/visualstudio&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle&gt;&lt;span style='font-size:11.0pt;font-family:
"Calibri","sans-serif";mso-ascii-theme-font:minor-latin;mso-fareast-font-family:
Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;
mso-bidi-theme-font:minor-latin;mso-bidi-language:AR-SA'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l1 level1 lfo1'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-size:11.0pt;font-family:Symbol;mso-fareast-font-family:Symbol;
mso-bidi-font-family:Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;·&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;b style='mso-bidi-font-weight:normal'&gt;&lt;span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-latin'&gt;MSDN redesign, Microsoft’s premier developer network&lt;/span&gt;&lt;/b&gt;&lt;span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-latin'&gt; – &lt;/span&gt;&lt;span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:
minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;
mso-bidi-language:AR-SA'&gt;Microsoft is unveiling a renovated MSDN, which includes new benefits for all MSDN subscribers.&lt;span style='mso-spacerun:yes'&gt;  &lt;/span&gt;Benefits for MSDN subscribers include: &lt;/span&gt;&lt;span style='font-size:
11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:minor-latin;
mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-latin'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle&gt;&lt;span style='font-size:11.0pt;font-family:
"Calibri","sans-serif";mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-theme-font:minor-latin'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.25in;mso-add-space:
auto;text-indent:-.25in;mso-list:l0 level1 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-fareast-font-family:
Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;-&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:
minor-latin'&gt;A more community-driven, modern resource to help developers maximize their success on the Microsoft platform.&lt;b style='mso-bidi-font-weight:
normal'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.25in;mso-add-space:
auto;text-indent:-.25in;mso-list:l0 level1 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-family:"Calibri","sans-serif";mso-fareast-font-family:Calibri'&gt;&lt;span
style='mso-list:Ignore'&gt;-&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:
minor-latin'&gt;Azure compute hours&lt;/span&gt;&lt;b style='mso-bidi-font-weight:normal'&gt;&lt;span
style='font-family:"Calibri","sans-serif";mso-ascii-theme-font:minor-latin;
mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-latin'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpLast style='margin-left:1.25in;mso-add-space:auto;
text-indent:-.25in;mso-list:l0 level1 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-family:"Calibri","sans-serif";mso-fareast-font-family:Calibri'&gt;&lt;span
style='mso-list:Ignore'&gt;-&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:
minor-latin'&gt;eLearning&lt;/span&gt;&lt;b style='mso-bidi-font-weight:normal'&gt;&lt;span
style='font-family:"Calibri","sans-serif";mso-ascii-theme-font:minor-latin;
mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-latin'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:
minor-latin'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;/div&gt;   &lt;/body&gt;   &lt;/html&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9909280" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clrteam/archive/tags/.NET+Framework+4/default.aspx">.NET Framework 4</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/Visual+Studio+10/default.aspx">Visual Studio 10</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/Download+Visual+Studio+10+Beta+2/default.aspx">Download Visual Studio 10 Beta 2</category></item><item><title>Automatically Capturing a Dump When a Process Crashes</title><link>http://blogs.msdn.com/clrteam/archive/2009/10/15/automatically-capturing-a-dump-when-a-process-crashes.aspx</link><pubDate>Fri, 16 Oct 2009 03:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9907935</guid><dc:creator>CLRTeam</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/clrteam/comments/9907935.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clrteam/commentrss.aspx?PostID=9907935</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clrteam/rsscomments.aspx?PostID=9907935</wfw:comment><description>&lt;html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
xmlns="http://www.w3.org/TR/REC-html40"&gt;   &lt;head&gt; &lt;meta http-equiv=Content-Type content="text/html; charset=windows-1252"&gt; &lt;link rel="File-List" href="JIT_debug_blog_post_files/filelist.xml"&gt; &lt;link rel="dataStoreItem" href="JIT_debug_blog_post_files/item0001.xml" target="JIT_debug_blog_post_files/props0002.xml"&gt; &lt;link rel="dataStoreItem" href="JIT_debug_blog_post_files/item0003.xml" target="JIT_debug_blog_post_files/props0004.xml"&gt; &lt;link rel="themeData" href="JIT_debug_blog_post_files/themedata.thmx"&gt; &lt;link rel="colorSchemeMapping" href="JIT_debug_blog_post_files/colorschememapping.xml"&gt; &lt;style&gt; 
&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;
	mso-font-charset:2;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:1;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:modern;
	mso-font-pitch:fixed;
	mso-font-signature:-520092929 1073806591 9 0 415 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:"Times New Roman";}
p.MsoHeader, li.MsoHeader, div.MsoHeader
	{mso-style-priority:99;
	mso-style-link:"Header Char";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	tab-stops:center 3.25in right 6.5in;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:"Times New Roman";}
p.MsoFooter, li.MsoFooter, div.MsoFooter
	{mso-style-priority:99;
	mso-style-link:"Footer Char";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	tab-stops:center 3.25in right 6.5in;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:"Times New Roman";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	mso-themecolor:hyperlink;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	mso-themecolor:followedhyperlink;
	text-decoration:underline;
	text-underline:single;}
p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
	{mso-style-priority:1;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-priority:34;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:"Times New Roman";}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst
	{mso-style-priority:34;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-type:export-only;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:"Times New Roman";}
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle
	{mso-style-priority:34;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-type:export-only;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:"Times New Roman";}
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast
	{mso-style-priority:34;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-type:export-only;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:"Times New Roman";}
span.HeaderChar
	{mso-style-name:"Header Char";
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:Header;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:"Times New Roman";
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:Calibri;}
span.FooterChar
	{mso-style-name:"Footer Char";
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:Footer;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:"Times New Roman";
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:Calibri;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
span.GramE
	{mso-style-name:"";
	mso-gram-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
	{mso-style-type:export-only;
	margin-bottom:10.0pt;
	line-height:115%;}
 /* Page Definitions */
 @page
	{mso-footnote-separator:url("JIT_debug_blog_post_files/header.htm") fs;
	mso-footnote-continuation-separator:url("JIT_debug_blog_post_files/header.htm") fcs;
	mso-endnote-separator:url("JIT_debug_blog_post_files/header.htm") es;
	mso-endnote-continuation-separator:url("JIT_debug_blog_post_files/header.htm") ecs;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.1in 1.0in 1.0in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-even-header:url("JIT_debug_blog_post_files/header.htm") eh1;
	mso-header:url("JIT_debug_blog_post_files/header.htm") h1;
	mso-even-footer:url("JIT_debug_blog_post_files/header.htm") ef1;
	mso-footer:url("JIT_debug_blog_post_files/header.htm") f1;
	mso-first-header:url("JIT_debug_blog_post_files/header.htm") fh1;
	mso-first-footer:url("JIT_debug_blog_post_files/header.htm") ff1;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
 /* List Definitions */
 @list l0
	{mso-list-id:162402067;
	mso-list-type:hybrid;
	mso-list-template-ids:134626156 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l1
	{mso-list-id:263732964;
	mso-list-type:hybrid;
	mso-list-template-ids:-861501162 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l1:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l1:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l1:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l1:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l1:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l1:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l1:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l1:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l2
	{mso-list-id:317417813;
	mso-list-type:hybrid;
	mso-list-template-ids:1997541624 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l2:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l2:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l2:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l2:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l2:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l2:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l2:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l2:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l2:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l3
	{mso-list-id:483202760;
	mso-list-type:hybrid;
	mso-list-template-ids:2074404390 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l3:level1
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l3:level2
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l3:level3
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l3:level4
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l3:level5
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l3:level6
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l3:level7
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l3:level8
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l3:level9
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l4
	{mso-list-id:595097563;
	mso-list-type:hybrid;
	mso-list-template-ids:-1072645780 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l4:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l4:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l4:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l4:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l4:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l4:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l4:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l4:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l4:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l5
	{mso-list-id:1026711222;
	mso-list-type:hybrid;
	mso-list-template-ids:-1929239168 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l5:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l5:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l5:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l5:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l5:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l5:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l5:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l5:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l5:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l6
	{mso-list-id:1050617575;
	mso-list-type:hybrid;
	mso-list-template-ids:1478801912 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l6:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:38.25pt;
	text-indent:-.25in;
	font-family:Symbol;}
@list l6:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:74.25pt;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l6:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:110.25pt;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l6:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:146.25pt;
	text-indent:-.25in;
	font-family:Symbol;}
@list l6:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:182.25pt;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l6:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:218.25pt;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l6:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:254.25pt;
	text-indent:-.25in;
	font-family:Symbol;}
@list l6:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:290.25pt;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l6:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:326.25pt;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l7
	{mso-list-id:2101828680;
	mso-list-type:hybrid;
	mso-list-template-ids:211084144 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l7:level1
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l7:level2
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l7:level3
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l7:level4
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l7:level5
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l7:level6
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l7:level7
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l7:level8
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l7:level9
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
--&gt;
&lt;/style&gt; &lt;/head&gt;   &lt;body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'&gt;   &lt;div class=WordSection1&gt;   &lt;p class=MsoNoSpacing&gt;I recently received the following question from a customer: &lt;/p&gt;   &lt;p class=MsoNoSpacing&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing&gt;“During our test runs (which might run for hours), if a process crashes, we’d like to create full memory dumps for later diagnosis. Can I configure the machine to do this automatically?”&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;I’ve actually gotten this question numerous times over the past couple of years. It comes in various forms but the general scenario is: A user wants to be able to diagnose application crashes and the environment does not lend &lt;span class=GramE&gt;itself&lt;/span&gt; to live debugging. The latter criterion could be for a number of reasons, but the most common I see are:&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpFirst style='text-indent:-.25in;mso-list:l1 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;·&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;We have an intermittent failure in production and want to gather a dump to debug the issue offline.&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l1 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;·&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;I’m running a bunch of tests and when one crashes I don’t want to interrupt the whole run to diagnose the issue at failure time. Let’s just get gather some information for triaging. &lt;/p&gt;   &lt;p class=MsoListParagraphCxSpLast style='text-indent:-.25in;mso-list:l1 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;·&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Our issue isn’t reproducible under a debugger. E.g. a stress bug.&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;These essentially reduce to: You want to get as much data as you can, while minimizing the impact to the environment. Given these requirements, the solution I find meeting most people’s needs is to configure a just-in-time (JIT) debugger to launch, grab a dump, and exit whenever a process crashes. &lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;Support for just-in-time debugging has been in the CLR since V1x and in the OS for as long as I can remember. The basic idea behind a JIT debugger is: when a process crashes, launch and attach a debugger so you can figure out why.&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;There are registry keys which provide this general ability for both managed and native code (support for the latter might actually be in Win.ini for 9x/&lt;span class=GramE&gt;Me&lt;/span&gt;). If your application is written in managed code (which is the case I’m often presented) you might ask, “My application is managed code, why do I care about native code?” Given that even the most simple managed applications run native code (e.g. the runtime itself)&lt;span
class=GramE&gt;,&lt;/span&gt; if your requirement is to gather data for any crash, you’ll need to set the keys for both types of code. In CLR V4 we’ve actually unified the key which controls the managed JIT debugger with the native one. However, that change does not change my guidance since, for the time being, we’ll be living in a world where V2 managed code exists alongside V4.&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;b style='mso-bidi-font-weight:normal'&gt;How do I configure the debugger?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;b style='mso-bidi-font-weight:normal'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpFirst style='text-indent:-.25in;mso-list:l3 level1 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;1.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Download and install the latest “Debugging Tools for Windows.”&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;mso-add-space:
auto;text-indent:-.25in;mso-list:l3 level2 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;a.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;If you’re running a 64-bit OS, you’ll want both the &lt;a href="http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx#a"&gt;32-&lt;/a&gt; and &lt;a href="http://www.microsoft.com/whdc/devtools/debugging/install64bit.mspx"&gt;64-bit&lt;/a&gt; versions*&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpLast style='margin-left:1.0in;mso-add-space:auto;
text-indent:-.25in;mso-list:l3 level2 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;b.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;You can either install the entire set of tools on the machine (it’s a quick, small install) or you can install to one machine and copy “cdb.exe” from the install directory to any number of target machines. &lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal style='margin-left:.5in'&gt;&lt;i style='mso-bidi-font-style:normal'&gt;*Note: My sample .&lt;span class=SpellE&gt;reg&lt;/span&gt; files below assume you install the 32-bit debugger to c:\debuggers\x86\ and the 64-bit version to c:\debuggers\x64\.&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;   &lt;p class=MsoNormal style='margin-left:.5in'&gt;&lt;i style='mso-bidi-font-style:normal'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpFirst style='text-indent:-.25in;mso-list:l3 level1 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;2.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Create/set the following registry keys and values (If you’re working on a 64-bit version of Windows, you’ll need to set these keys under the Wow6432node as well&lt;span
class=GramE&gt;.†&lt;/span&gt;):&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;mso-add-space:
auto;text-indent:-.25in;mso-list:l3 level2 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;a.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Key: HKLM\Software\Microsoft\Windows NT\Current Version\&lt;span class=SpellE&gt;AeDebug&lt;/span&gt;:&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;mso-add-space:
auto;text-indent:-1.5in;mso-text-indent-alt:-9.0pt;mso-list:l3 level3 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;&lt;span
style='font:7.0pt "Times New Roman"'&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;&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;&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;&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;&amp;nbsp;&amp;nbsp; &lt;/span&gt;i.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Value: “Debugger”&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:2.0in;mso-add-space:
auto;text-indent:-.25in;mso-list:l3 level4 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;1.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Type: String&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:2.0in;mso-add-space:
auto;text-indent:-.25in;mso-list:l3 level4 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;2.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Value data: &lt;i style='mso-bidi-font-style:normal'&gt;&amp;lt;path to &lt;span class=SpellE&gt;cdb&lt;/span&gt;&amp;gt;&lt;/i&gt; -&lt;span class=SpellE&gt;pv&lt;/span&gt; -p %&lt;span class=SpellE&gt;ld&lt;/span&gt; -c “.dump /u /ma &lt;i style='mso-bidi-font-style:normal'&gt;&amp;lt;dump file path\&lt;span class=SpellE&gt;name.dmp&lt;/span&gt;&amp;gt;&lt;/i&gt;;.&lt;span
class=SpellE&gt;kill;qd&lt;/span&gt;&amp;quot;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;mso-add-space:
auto;text-indent:-1.5in;mso-text-indent-alt:-9.0pt;mso-list:l3 level3 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;&lt;span
style='font:7.0pt "Times New Roman"'&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;&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;&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;&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; &lt;/span&gt;ii.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Value: “Auto”&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:2.0in;mso-add-space:
auto;text-indent:-.25in;mso-list:l3 level4 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;1.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Type: String&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:2.0in;mso-add-space:
auto;text-indent:-.25in;mso-list:l3 level4 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;2.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Value data: “1”&lt;span style='mso-tab-count:1'&gt;  &lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;mso-add-space:
auto;text-indent:-.25in;mso-list:l3 level2 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;b.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Key: HKLM\Software\Microsoft\.&lt;span class=SpellE&gt;NETFramework&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;mso-add-space:
auto;text-indent:-1.5in;mso-text-indent-alt:-9.0pt;mso-list:l3 level3 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;&lt;span
style='font:7.0pt "Times New Roman"'&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;&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;&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;&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;&amp;nbsp;&amp;nbsp; &lt;/span&gt;i.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Value: “&lt;span class=SpellE&gt;DbgManagedDebugger&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:2.0in;mso-add-space:
auto;text-indent:-.25in;mso-list:l3 level4 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;1.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Type: String&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:2.0in;mso-add-space:
auto;text-indent:-.25in;mso-list:l3 level4 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;2.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Value data: &lt;i style='mso-bidi-font-style:normal'&gt;&amp;lt;path to &lt;span class=SpellE&gt;cdb&lt;/span&gt;&amp;gt;&lt;/i&gt; -&lt;span class=SpellE&gt;pv&lt;/span&gt; -p %&lt;span class=SpellE&gt;ld&lt;/span&gt; -c &amp;quot;.dump /u /ma &lt;i style='mso-bidi-font-style:normal'&gt;&amp;lt;dump file path\&lt;span
class=SpellE&gt;name.dmp&lt;/span&gt;&amp;gt;&lt;/i&gt;;.&lt;span class=SpellE&gt;kill;qd&lt;/span&gt;&amp;quot;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;mso-add-space:
auto;text-indent:-1.5in;mso-text-indent-alt:-9.0pt;mso-list:l3 level3 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;&lt;span
style='font:7.0pt "Times New Roman"'&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;&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;&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;&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; &lt;/span&gt;ii.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Value: &lt;span class=SpellE&gt;DbgJITDebugLaunchSetting&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:2.0in;mso-add-space:
auto;text-indent:-.25in;mso-list:l3 level4 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;1.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Type: DWORD (32-bit)&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpLast style='margin-left:2.0in;mso-add-space:auto;
text-indent:-.25in;mso-list:l3 level4 lfo3'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;2.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Value data: 2&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal style='margin-left:.5in'&gt;†&lt;i style='mso-bidi-font-style:
normal'&gt;Note: You should set the keys to point to the appropriate “&lt;span
class=SpellE&gt;bitness&lt;/span&gt;” debugger. I.e. you want the OS/CLR to launch the 64-bit debugger for 64-bit process crashes and the 32-bit version for 32-bit crashes. Make sure your debugger paths are set accordingly.&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;i style='mso-bidi-font-style:normal'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;The following sample .&lt;span class=SpellE&gt;reg&lt;/span&gt; file will set cdb.exe to auto-launch and generate a crash dump for every process crash on the machine. Note the assumptions the file makes about debugger paths and the dump-file-placement path.&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
 style='border-collapse:collapse;border:none;mso-border-alt:solid black .5pt;
 mso-border-themecolor:text1;mso-yfti-tbllook:1184;mso-padding-alt:0in 5.4pt 0in 5.4pt'&gt;  &lt;tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'&gt;   &lt;td width=638 valign=top style='width:6.65in;border:none;background:#D9D9D9;
  mso-background-themecolor:background1;mso-background-themeshade:217;
  padding:0in 5.4pt 0in 5.4pt'&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;Windows   Registry Editor Version 5.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span class=GramE&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;;This&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt; &lt;span class=SpellE&gt;reg&lt;/span&gt; file installs   just-in-time debuggers to capture a dump of all process&lt;br&gt;   ;crashes for the machine.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span class=GramE&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;;Assumes&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt; 32-bit debugger is cdb.exe and is installed to   c:\debuggers\x86\.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span class=GramE&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;;Assumes&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt; 64-bit debugger is cdb.exe and is installed to   c:\debuggers\x64\.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span class=GramE&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;;Assumes&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt; crash dumps can be written to c:\crash_dumps\. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span class=GramE&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;;Make&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt; sure all users have write access to this directory.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.&lt;span
  class=SpellE&gt;NETFramework&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;&amp;quot;&lt;span
  class=SpellE&gt;DbgManagedDebugger&lt;/span&gt;&amp;quot;=&amp;quot;\&amp;quot;c:\\debuggers\\x64\\cdb.exe\&amp;quot;   -&lt;span class=SpellE&gt;pv&lt;/span&gt; -p %&lt;span class=SpellE&gt;ld&lt;/span&gt; -c   \&amp;quot;.dump /u /ma c:\\crash_dumps\\crash.dmp;.kill;qd\&amp;quot;&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;&amp;quot;&lt;span
  class=SpellE&gt;DbgJITDebugLaunchSetting&lt;/span&gt;&amp;quot;=dword:00000002&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows   NT\&lt;span class=SpellE&gt;CurrentVersion&lt;/span&gt;\&lt;span class=SpellE&gt;AeDebug&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;&amp;quot;Debugger&amp;quot;=&amp;quot;\&amp;quot;c:\\debuggers\\x64\\cdb.exe\&amp;quot;   -&lt;span class=SpellE&gt;pv&lt;/span&gt; -p %&lt;span class=SpellE&gt;ld&lt;/span&gt; -c   \&amp;quot;.dump /u /ma c:\\crash_dumps\\crash.dmp;.kill;qd\&amp;quot;&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;&amp;quot;Auto&amp;quot;=&amp;quot;1&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span class=GramE&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;;The&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt; following keys are only used on 64-bit versions of   Windows (note Wow6432Node).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span class=GramE&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;;They&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt; can be safely created with no side-effects on 32-bit   versions of Windows.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;;Alternatively,   you can delete the remainder of this file if you’re running a &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span class=GramE&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;;32&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;-bit version of Windows.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows   NT\&lt;span class=SpellE&gt;CurrentVersion&lt;/span&gt;\&lt;span class=SpellE&gt;AeDebug&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;&amp;quot;Debugger&amp;quot;=&amp;quot;\&amp;quot;c:\\debuggers\\x86\\cdb.exe\&amp;quot;   -&lt;span class=SpellE&gt;pv&lt;/span&gt; -p %&lt;span class=SpellE&gt;ld&lt;/span&gt; -c   \&amp;quot;.dump /u /ma c:\\crash_dumps\\crash.dmp;.kill;qd\&amp;quot;&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;&amp;quot;Auto&amp;quot;=&amp;quot;1&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;&amp;quot;&lt;span
  class=SpellE&gt;DbgManagedDebugger&lt;/span&gt;&amp;quot;=&amp;quot;\&amp;quot;c:\\debuggers\\x86\\cdb.exe\&amp;quot;   -&lt;span class=SpellE&gt;pv&lt;/span&gt; -p %&lt;span class=SpellE&gt;ld&lt;/span&gt; -c   \&amp;quot;.dump /u /ma c:\\crash_dumps\\crash.dmp;.kill;qd\&amp;quot;&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:Consolas'&gt;&amp;quot;&lt;span
  class=SpellE&gt;DbgJITDebugLaunchSetting&lt;/span&gt;&amp;quot;=dword:00000002&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/table&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;b style='mso-bidi-font-weight:normal'&gt;What do these keys do?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;b style='mso-bidi-font-weight:normal'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;The “Debugger” and “&lt;span class=SpellE&gt;DbgManagedDebugger&lt;/span&gt;” value data are basically command lines (&lt;span class=SpellE&gt;printf&lt;/span&gt; format strings) that are run when a process crashes. The OS or CLR will substitute values for the format &lt;span class=SpellE&gt;specifiers&lt;/span&gt; (e.g. in the case above it substitutes the crashing process ID for the “%&lt;span class=SpellE&gt;&lt;span
class=GramE&gt;ld&lt;/span&gt;&lt;/span&gt;”) and run the command in the user context of the crashing process. The command line I’ve supplied:&lt;br style='mso-special-character:
line-break'&gt; &lt;![if !supportLineBreakNewLine]&gt;&lt;br style='mso-special-character:line-break'&gt; &lt;![endif]&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpFirst style='margin-left:38.25pt;mso-add-space:
auto;text-indent:-.25in;mso-list:l6 level1 lfo4'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;·&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span class=GramE&gt;launches&lt;/span&gt; cdb.exe, the debugger.&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:74.25pt;mso-add-space:
auto;text-indent:-.25in;mso-list:l6 level2 lfo4'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-family:"Courier New";mso-fareast-font-family:"Courier New"'&gt;&lt;span
style='mso-list:Ignore'&gt;o&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Obviously, you must specify the correct path to the debugger.&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:38.25pt;mso-add-space:
auto;text-indent:-.25in;mso-list:l6 level1 lfo4'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;·&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;“-&lt;span class=SpellE&gt;pv&lt;/span&gt; %&lt;span
class=SpellE&gt;ld&lt;/span&gt;&lt;span class=GramE&gt;” :&lt;/span&gt; Attaches non-invasively (just suspends the threads) to the crashing process (the OS or the CLR will actually fill in the PID for you).&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:38.25pt;mso-add-space:
auto;text-indent:-.25in;mso-list:l6 level1 lfo4'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;·&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;“.dump /u /ma &lt;i style='mso-bidi-font-style:
normal'&gt;&amp;lt;dump file path\&lt;span class=SpellE&gt;name.dmp&lt;/span&gt;&amp;gt;&lt;/i&gt;”: &lt;span
style='mso-spacerun:yes'&gt; &lt;/span&gt;Takes a full memory dump with a unique name (appends the date, time and process ID) and stores it in the path defined.&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:74.25pt;mso-add-space:
auto;text-indent:-.25in;mso-list:l6 level2 lfo4'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-family:"Courier New";mso-fareast-font-family:"Courier New"'&gt;&lt;span
style='mso-list:Ignore'&gt;o&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;The path and file name can be whatever you want them to be. Since the debugger is launched in the context of the crashing process, make sure the path points to a location all accounts can write to.&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:38.25pt;mso-add-space:
auto;text-indent:-.25in;mso-list:l6 level1 lfo4'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;·&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;“.kill”: Kills the target process (you’ve gotten the data you need).&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpLast style='margin-left:38.25pt;mso-add-space:
auto;text-indent:-.25in;mso-list:l6 level1 lfo4'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;·&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;“&lt;span class=SpellE&gt;&lt;span class=GramE&gt;qd&lt;/span&gt;&lt;/span&gt;”: Quits the debugger.&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;The “Auto” and “&lt;span class=SpellE&gt;DbgJITDebugLaunchSetting&lt;/span&gt;” values set the policy for when to launch the debugger. As I wrote above, we want to get our data as quickly as possible and move on, so we don’t want to require any user intervention. For example, in the server scenario, there may be no one logged into the machine to click some “OK” button. The settings I described will automatically launch the registered debugger for all processes on the machine, without prompting (see &lt;a href="http://msdn.microsoft.com/en-us/library/2ac5yxx6.aspx"&gt;Enabling JIT-attach &lt;span class=GramE&gt;Debugging&lt;/span&gt;&lt;/a&gt; for more details on the settings). Note that when these settings are in place, the debugger will be launched for crashes in all processes running on the machine and you will not have the option of submitting the crash through “Windows Error Reporting.” In future posts I’ll discuss ways of enabling both.&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;b style='mso-bidi-font-weight:normal'&gt;I don’t care about most processes on a machine. Can I just target specific ones?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;The answer depends on the version of the OS and the version of CLR. Here are the rules:&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpFirst style='text-indent:-.25in;mso-list:l4 level1 lfo5'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;·&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;For native code: your OS must be Vista/Server 2008 or higher.&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpLast style='text-indent:-.25in;mso-list:l4 level1 lfo5'&gt;&lt;![if !supportLists]&gt;&lt;span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol'&gt;&lt;span style='mso-list:Ignore'&gt;·&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;For managed code: Your version of the CLR must be V4 (or higher, if you’re reading this from the future). &lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;And here is how you configure:&lt;br style='mso-special-character:
line-break'&gt; &lt;![if !supportLineBreakNewLine]&gt;&lt;br style='mso-special-character:line-break'&gt; &lt;![endif]&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpFirst style='text-indent:-.25in;mso-list:l7 level1 lfo8'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;1.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Set the debugger keys (&lt;span class=SpellE&gt;AeDebug&lt;/span&gt;\Debugger and .&lt;span
class=SpellE&gt;NETFramework&lt;/span&gt;\&lt;span class=SpellE&gt;DbgManagedDebugger&lt;/span&gt;) just as you did in 2.a.i and 2.b.i, above.&lt;span style='mso-spacerun:yes'&gt;  &lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l7 level1 lfo8'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;2.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Ensure &lt;span class=SpellE&gt;AeDebug&lt;/span&gt;\Auto and .&lt;span class=SpellE&gt;NETFramework&lt;/span&gt;\&lt;span
class=SpellE&gt;DbgJITDebugLaunchSetting&lt;/span&gt; are not set to auto-launch (again, see &lt;a href="http://msdn.microsoft.com/en-us/library/2ac5yxx6.aspx"&gt;Enabling JIT-attach Debugging&lt;/a&gt; for more details on the settings).&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;mso-add-space:
auto;text-indent:-.25in;mso-list:l7 level2 lfo8'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;a.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Or you can delete them.&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l7 level1 lfo8'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;3.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Create the following registry keys and values:&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;mso-add-space:
auto;text-indent:-.25in;mso-list:l7 level2 lfo8'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;a.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;HKLM\Software\Microsoft\Windows\Windows Error Reporting\&lt;span class=SpellE&gt;DebugApplications&lt;/span&gt; &lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;mso-add-space:
auto;text-indent:-1.5in;mso-text-indent-alt:-9.0pt;mso-list:l7 level3 lfo8'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;&lt;span
style='font:7.0pt "Times New Roman"'&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;&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;&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;&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;&amp;nbsp;&amp;nbsp; &lt;/span&gt;i.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Value: &amp;lt;Name of application executable&amp;gt; (e.g. “myapp.exe”)&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:2.0in;mso-add-space:
auto;text-indent:-.25in;mso-list:l7 level4 lfo8'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;1.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Type: DWORD (32-bit)&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpMiddle style='margin-left:2.0in;mso-add-space:
auto;text-indent:-.25in;mso-list:l7 level4 lfo8'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;2.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Value data: 1&lt;/p&gt;   &lt;p class=MsoListParagraphCxSpLast style='margin-left:1.0in;mso-add-space:auto;
text-indent:-.25in;mso-list:l7 level2 lfo8'&gt;&lt;![if !supportLists]&gt;&lt;span
style='mso-fareast-font-family:Calibri'&gt;&lt;span style='mso-list:Ignore'&gt;b.&lt;span
style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Repeat this for each application you want the debugger to be auto-launched.&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;You can set the &lt;span class=SpellE&gt;DebugApplications&lt;/span&gt; key and values in HKCU if you prefer per-user control. When these settings are in effect the debugger will be launched for only the processes you specify and normal error handling will occur for all other processes (e.g. for most default configurations, a prompt to submit an error report to Microsoft).&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;The following sample .&lt;span class=SpellE&gt;reg&lt;/span&gt; file will set cdb.exe to be auto-launched only for HelloWorld.exe. Replace HelloWorld.exe with the name(s) of the application(s) for which you’re interested in generating crash dumps.&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;i style='mso-bidi-font-style:normal'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;   &lt;table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
 style='border-collapse:collapse;border:none;mso-border-alt:solid black .5pt;
 mso-border-themecolor:text1;mso-yfti-tbllook:1184;mso-padding-alt:0in 5.4pt 0in 5.4pt'&gt;  &lt;tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'&gt;   &lt;td width=636 valign=top style='width:477.0pt;border:none;background:#D9D9D9;
  mso-background-themecolor:background1;mso-background-themeshade:217;
  padding:0in 5.4pt 0in 5.4pt'&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;Windows Registry Editor Version 5.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span class=GramE&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt;;This&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt; &lt;span class=SpellE&gt;reg&lt;/span&gt;   file installs just-in-time debuggers to capture a dump of only the&lt;br&gt;   ;processes listed under the [&lt;span class=SpellE&gt;DebugApplications&lt;/span&gt;]   key, below.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span class=GramE&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt;;Assumes&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt; 32-bit debugger is cdb.exe and   is installed to c:\debuggers\x86\.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span class=GramE&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt;;Assumes&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt; 64-bit debugger is cdb.exe and   is installed to c:\debuggers\x64\.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span class=GramE&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt;;Assumes&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt; crash dumps can be written to   c:\crash_dumps\. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span class=GramE&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt;;Make&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt; sure all users have write   access to this directory.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.&lt;span
  class=SpellE&gt;NETFramework&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&amp;quot;&lt;span class=SpellE&gt;DbgManagedDebugger&lt;/span&gt;&amp;quot;=&amp;quot;\&amp;quot;c:\\debuggers\\x64\\cdb.exe\&amp;quot;   -&lt;span class=SpellE&gt;pv&lt;/span&gt; -p %&lt;span class=SpellE&gt;ld&lt;/span&gt; -c   \&amp;quot;.dump /u /ma c:\\crash_dumps\\crash.dmp;.kill;qd\&amp;quot;&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&amp;quot;&lt;span class=SpellE&gt;DbgJITDebugLaunchSetting&lt;/span&gt;&amp;quot;=dword:00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\&lt;span
  class=SpellE&gt;CurrentVersion&lt;/span&gt;\&lt;span class=SpellE&gt;AeDebug&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&amp;quot;Debugger&amp;quot;=&amp;quot;\&amp;quot;c:\\debuggers\\x64\\cdb.exe\&amp;quot;   -&lt;span class=SpellE&gt;pv&lt;/span&gt; -p %&lt;span class=SpellE&gt;ld&lt;/span&gt; -c   \&amp;quot;.dump /u /ma c:\\crash_dumps\\crash.dmp;.kill;qd\&amp;quot;&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&amp;quot;Auto&amp;quot;=&amp;quot;0&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span class=GramE&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt;;The&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt; following keys are only used   on 64-bit versions of Windows (note Wow6432Node).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span class=GramE&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt;;They&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt; can be safely created with no   side-effects on 32-bit versions of Windows.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;;Alternatively, you can delete the remainder of this   file if you’re running a &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span class=GramE&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt;;32&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt;-bit version of Windows.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows   NT\&lt;span class=SpellE&gt;CurrentVersion&lt;/span&gt;\&lt;span class=SpellE&gt;AeDebug&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&amp;quot;Debugger&amp;quot;=&amp;quot;\&amp;quot;c:\\debuggers\\x86\\cdb.exe\&amp;quot;   -&lt;span class=SpellE&gt;pv&lt;/span&gt; -p %&lt;span class=SpellE&gt;ld&lt;/span&gt; -c   \&amp;quot;.dump /u /ma c:\\crash_dumps\\crash.dmp;.kill;qd\&amp;quot;&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&amp;quot;Auto&amp;quot;=&amp;quot;0&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&amp;quot;&lt;span class=SpellE&gt;DbgManagedDebugger&lt;/span&gt;&amp;quot;=&amp;quot;\&amp;quot;c:\\debuggers\\x86\\cdb.exe\&amp;quot;   -&lt;span class=SpellE&gt;pv&lt;/span&gt; -p %&lt;span class=SpellE&gt;ld&lt;/span&gt; -c   \&amp;quot;.dump /u /ma c:\\crash_dumps\\crash.dmp;.kill;qd\&amp;quot;&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&amp;quot;&lt;span class=SpellE&gt;DbgJITDebugLaunchSetting&lt;/span&gt;&amp;quot;=dword:00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;;For each application you want the debugger to be   auto-launched, add a row below&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;;similar to “HelloWorld.exe&amp;quot;=dword:00000001 but   replacing HelloWorld.exe with&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span class=GramE&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt;;your&lt;/span&gt;&lt;/span&gt;&lt;span
  style='font-size:10.0pt;font-family:Consolas'&gt; application .exe name.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows   Error Reporting\&lt;span class=SpellE&gt;DebugApplications&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class=MsoNoSpacing style='background:#D9D9D9;mso-background-themecolor:
  background1;mso-background-themeshade:217'&gt;&lt;span style='font-size:10.0pt;
  font-family:Consolas'&gt;&amp;quot;HelloWorld.exe&amp;quot;=dword:00000001&lt;/span&gt;&lt;i
  style='mso-bidi-font-style:normal'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/table&gt;   &lt;p class=MsoNormal&gt;&lt;i style='mso-bidi-font-style:normal'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;b style='mso-bidi-font-weight:normal'&gt;Can I do more than just capture a dump?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;More information on the command-line switches for the Windows Debuggers can be found in the documentation included with the Debugging Tools for Windows. You’re not limited just to dumps. You can perform quite a bit of debugger automation if you choose.&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;b style='mso-bidi-font-weight:normal'&gt;So what happened?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;Now that you have your dump, it’s time to figure out why your application crashed. For those of you familiar with dump debugging, at this point you’re about to fire up &lt;span class=SpellE&gt;WinDbg&lt;/span&gt; + SOS (the managed debugging extension) and dive in. But wait! If your application runs on V4 of the CLR (.Net Framework 4.0) you can &lt;a href="http://blogs.msdn.com/tess/archive/2009/06/16/first-look-at-debugging-net-4-0-dumps-in-visual-studio-2010.aspx"&gt;debug the dump in Visual Studio 2010&lt;/a&gt;. Our desire for the experience in VS 2010 is that it feels very similar to stopped-state live debugging (like you’ve hit a breakpoint). The fact that you’re often debugging optimized code can make this a bit trickier, but that’s a topic for another day. &lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;For more information about how to debug crashes in managed code, a search for “managed dump debugging” yields quite a few helpful results. A great place to start is &lt;a href="http://blogs.msdn.com/tess/default.aspx"&gt;Tess &lt;span class=SpellE&gt;Ferrandez’s&lt;/span&gt; blog&lt;/a&gt; (a support engineer at Microsoft). She has a number of great posts on the topic, including a post on &lt;a href="http://blogs.msdn.com/tess/archive/2009/06/16/first-look-at-debugging-net-4-0-dumps-in-visual-studio-2010.aspx"&gt;dump debugging in VS 2010&lt;/a&gt;, and some labs/walkthroughs as well.&lt;/p&gt;   &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class=MsoNormal&gt;Jon Langdon,&lt;/p&gt;   &lt;p class=MsoNormal&gt;PM, CLR&lt;/p&gt;   &lt;/div&gt;   &lt;/body&gt;   &lt;/html&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9907935" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clrteam/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/Diagnostics/default.aspx">Diagnostics</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/Jon+Langdon/default.aspx">Jon Langdon</category></item><item><title>Five Myths about Managed Code</title><link>http://blogs.msdn.com/clrteam/archive/2009/10/02/five-myths-about-managed-code.aspx</link><pubDate>Sat, 03 Oct 2009 03:41:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9902647</guid><dc:creator>CLRTeam</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/clrteam/comments/9902647.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clrteam/commentrss.aspx?PostID=9902647</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clrteam/rsscomments.aspx?PostID=9902647</wfw:comment><description>&lt;p&gt;My name is Immo Landwerth and I was a Program Manager intern this year in the CLR team. In this blog post I am not going to showcase any of the fantastic features that will ship with .NET 4.0 – my colleagues in the CLR team know them much better and already did a fabulous job discussing them &lt;a href="http://blogs.msdn.com/clrteam/"&gt;here&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc501040.aspx"&gt;over there&lt;/a&gt; and on &lt;a href="http://channel9.msdn.com/tags/CLR+4/"&gt;Channel 9&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Instead I want to discuss the following five myths about managed code and in particular about the CLR:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;· Managed code is always JIT compiled&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;· Generic co- and contra variance are new in .NET 4.0&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;· Everything is an object&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;· .NET only supports statically typed languages&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;· Microsoft is not using Managed Code&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a name="_Toc241834250"&gt;Myth Five – Managed code is always JIT compiled&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Having a JIT compiler has many advantages because a lot of things are becoming much easier when a JIT compiler is available:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. On-the-fly code generation (System.Reflection.Emit) is much easier because you only have to target one virtual machine architecture (IL) instead all the processor architectures the runtime supports (such as x86 and x64).&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. To some degree it solves the &lt;a href="http://en.wikipedia.org/wiki/Fragile_binary_interface_problem"&gt;fragile base class library problem&lt;/a&gt;. That means we can share class definitions across modules without having the problem that changes such as adding fields or adding virtual methods crashes dependent code.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. The &lt;a href="http://en.wikipedia.org/wiki/Working_set"&gt;working set&lt;/a&gt; can be improved because the JIT only compiles methods that are actually executed.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. Theoretically, you could take situational facts into consideration, such as which processor-architecture is actually used (e.g. is it SSE2 capable), the application usage patterns etc. and optimize differently for them.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;However, JIT compilation also has downsides such as:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. It takes time. That means JIT compilation always has to trade-off time vs. code quality.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. The code is stored on private pages so the compiled code is not shared across processes.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Therefore we created a tool called &lt;a href="http://msdn.microsoft.com/en-us/library/6t9t5wcf%28VS.100%29.aspx"&gt;NGEN&lt;/a&gt; that allows you to pre-create native images during the setup. You could call this ahead-of-time compilation (as opposed to just-in-time). Certain special conditions left aside (such as some hosting scenarios or profiling), the runtime will now pick up the native images instead of JIT-compiling the code.&lt;/p&gt;  &lt;p&gt;Why did we not allow you to pre-create the native images during build time and let you ship the native images directly? Well, because we then run into the &lt;a href="http://en.wikipedia.org/wiki/Fragile_binary_interface_problem"&gt;fragile base class library problem&lt;/a&gt; mentioned above. In that case, your native images would get invalid every time the .NET Framework is updated. Today we solve this problem by re-running NGEN on the customer’s machine when the framework is serviced. In .NET Framework 4 we ship a new feature called &lt;a href="http://channel9.msdn.com/posts/Charles/Surupa-Biswas-CLR-4-Resilient-NGen-and-Targeted-Patching/"&gt;targeted patching&lt;/a&gt;, that allows us for method-body only changes to minimize or to even to fully avoid recompilation. For more details about NGEN in general see &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163610.aspx"&gt;here&lt;/a&gt; and for more details about NGEN in .NET Framework 4 see &lt;a href="http://blogs.msdn.com/clrcodegeneration/archive/2009/05/03/Improvements-to-NGen-in-.NET-Framework-4.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Even if you are not using NGEN for you application code: for desktop CLR applications all the assemblies that are part of the .NET Framework itself are not JIT compiled – instead the runtime will bind to the native images. So even in these cases only your application code will be JIT compiled and therefore both ahead-of-time as well as just-in-time technologies are used simultaneously. Thus, stating that all code is JITted is simply wrong.&lt;/p&gt;  &lt;h3&gt;Myth Four – Generic co- and contra variance are new in .NET 4.0&lt;/h3&gt;  &lt;p&gt;The short answer is ‘no’. The longer answer is ‘well, sort of’.&lt;/p&gt;  &lt;p&gt;But I am getting ahead of myself. Let’s first see what co- and contravariance actually means. Generic covariance allows you to call a method that takes an IEnumerable&amp;lt;Shape&amp;gt; with an IEnumerable&amp;lt;Circle&amp;gt; (if Circle is derived from Shape). This is useful if Shape contains, e.g. a method that allows you to compute the area. This way you can write a method that computes the area for any collection of shapes. Contravariance on the other hand allows you to call a method that takes an IComparer&amp;lt;Circle&amp;gt; with an IComparer&amp;lt;Shape&amp;gt;. This is handy if someone wants to compare circles and you already have created a general comparer for any shape (this works because if your comparer knows how to compare two instances of Shape it certainly is also able to compare two instances of Circle).&lt;/p&gt;  &lt;p&gt;The support for co- and contra variance has always been in the CLR since generics came up in the .NET Framework 2.0. However, as Rick Byers &lt;a href="http://blogs.msdn.com/rmbyers/archive/2005/02/16/375079.aspx"&gt;pointed out&lt;/a&gt; you would have to use ILASM for creating covariant and contravariant type definitions:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;In IL, covariant type parameters are indicated by a ‘+’, and contravariant type parameters are indicated by a ‘-‘ (non-variant type parameters are the default, and can be used anywhere). &lt;/i&gt;&lt;/p&gt;  &lt;p&gt;What has been added in the .NET 4.0 release is language support for C# and Visual Basic. For example, the following uses the C# syntax (in and out modifiers for the generic type declaration) to create some covariant and contra variant types:&lt;/p&gt;  &lt;table border="5" cellspacing="0" cellpadding="5" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="390"&gt;         &lt;p&gt;// Covariant parameters can be used as result types &lt;/p&gt;          &lt;p&gt;interface IEnumerator&amp;lt;out T&amp;gt; { &lt;/p&gt;          &lt;p&gt;T Current { get; } &lt;/p&gt;          &lt;p&gt;bool MoveNext(); &lt;/p&gt;          &lt;p&gt;} &lt;/p&gt;          &lt;p&gt;// Covariant parameters can be used in covariant result types &lt;/p&gt;          &lt;p&gt;interface IEnumerable&amp;lt;out T&amp;gt; { &lt;/p&gt;          &lt;p&gt;IEnumerator&amp;lt;T&amp;gt; GetEnumerator(); &lt;/p&gt;          &lt;p&gt;} &lt;/p&gt;          &lt;p&gt;// Contravariant parameters can be used as argument types &lt;/p&gt;          &lt;p&gt;interface IComparer&amp;lt;in T&amp;gt; { &lt;/p&gt;          &lt;p&gt;bool Compare(T x, T y); &lt;/p&gt;          &lt;p&gt;}&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a name="_Toc241834252"&gt;Myth&lt;/a&gt;&amp;#160;&lt;a name="_Toc241834251"&gt;Three – Everything is an object&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;“Wait a minute – this is the number one programming promise everyone was making about .NET!” you might say now. Yes, and yet it is false. Many .NET or C# books make this mistake in one form or the other. “Everything is an object”. Although we believe there is a lot of value in simplifying things for didactic reasons (and hence many authors just claim it that way) we would like to take this opportunity to tell you “sorry, it is not completely true”.&lt;/p&gt;  &lt;p&gt;Before we discuss this issue we should first define what the sentence “everything is an object” is supposed to mean. The interpretation we will use here is this:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Every type is derived from a single root (&lt;/i&gt;&lt;i&gt;System.Object&lt;/i&gt;&lt;i&gt;). This means, that every value can be implicitly casted to &lt;/i&gt;&lt;i&gt;System.Object&lt;/i&gt;&lt;i&gt;. More precisely, this means that every value is representable as an instance of &lt;/i&gt;&lt;i&gt;System.Object&lt;/i&gt;&lt;i&gt;.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;So why is this not true for the CLR? The counter example is a whole class of types that are not derived from System.Object: pointers (such as int*). So you cannot pass a pointer to a method that takes an object. In addition you cannot call the ToString or GetHashCode methods on a pointer.&lt;/p&gt;  &lt;p&gt;We could also use a different interpretation of “everything is an object” such as:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Every type is derived from a single root (&lt;/i&gt;&lt;i&gt;System.Object&lt;/i&gt;&lt;i&gt;). This means, that every value is an object at all times.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Why is this different? Simple values (i.e.. values that have types derived from System.ValueType) are not objects by the &lt;a href="http://en.wikipedia.org/wiki/Object_%28computer_science%29"&gt;definition of an object&lt;/a&gt; (they lack identity). But every value can be casted implicitly to System.Object (because System.ValueType is derived from System.Object). However, in that case an object instance that contains the value is created. This process is called boxing. The resulting object instance (the “box”, not to be confused with &lt;a href="http://en.wikipedia.org/wiki/Don_Box"&gt;Don Box&lt;/a&gt;) has indeed a notion of identity (which is in particular also true for Don Box).&lt;/p&gt;  &lt;p&gt;As you can see, the CLR uses the first interpretation and yet it is still not completely true as pointers do not derive from System.Object.&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc241834252"&gt;Myth Two – .NET only supports statically typed languages&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;It is true that the CLR uses a static type system. But this does not necessarily mean that it is only suited for programming languages that use a static type system. At the end, the programming language is &lt;i&gt;implemented&lt;/i&gt; using the CLR but it is not &lt;i&gt;identical&lt;/i&gt; with the CLR. So do not be fooled by the fact that the type system and mechanics of C# almost map directly to first class CLR-concepts. In fact, there are many concepts in C# that the CLR is not aware of:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. &lt;a href="http://msdn.microsoft.com/en-us/library/z2kcy19k%28VS.100%29.aspx"&gt;Namespaces&lt;/a&gt;. As far as the CLR is concerned namespaces do not even exist. They are just implemented as type prefixes separated by dots (so instead of saying ‘the class Console is contained in the namespace System’ the CLR would just say ‘there is a class called System.Console’).&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. &lt;a href="http://msdn.microsoft.com/en-us/library/dscyy5s0%28VS.100%29.aspx"&gt;Iterators&lt;/a&gt;. The CLR does not provide any support for it. All the magic is done by the compiler (if you want to know, the compiler turns your method into a new type that internally uses a state-machine to track the current point of execution. Details can be found &lt;a href="http://blogs.msdn.com/wesdyer/archive/2007/03/23/all-about-iterators.aspx"&gt;here&lt;/a&gt;). &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. &lt;a href="http://msdn.microsoft.com/en-us/library/bb397687%28VS.100%29.aspx"&gt;Lambdas&lt;/a&gt;. They are just syntactic sugar. For the runtime these are just delegates, which in turn can also be considered syntactic sugar. In fact, a delegate is nothing more than a class derived from &lt;a href="http://msdn.microsoft.com/en-us/library/system.multicastdelegate%28VS.100%29.aspx"&gt;System.MulticastDelegate&lt;/a&gt; that provides an Invoke, BeginInvoke and EndInvoke method with the appropriate parameters.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Please note that this list is not complete. Instead it is only used to show you that even C# has to implement itself on top of the CLR and hence it is not a 1:1 mapping of the concepts the runtime provides. What does this have to do with static typing vs. dynamic typing? The answer is simply: you can implement a dynamically typed system on top of a statically typed system.&lt;/p&gt;  &lt;p&gt;If you know see a huge business opportunity here, we have to disappoint you. Some smart people already had the same idea. This effort is called the &lt;a href="http://www.codeplex.com/dlr"&gt;Dynamic Language Runtime&lt;/a&gt;, or DLR for short. If you are like me then you immediately think of native code when someone mentions the term ‘runtime’. However, the DLR is completely implemented in C# and is just a class library that can be used by programming languages to implement dynamic systems on top of the CLR. The DLR shares the fundamental design principle of the CLR, i.e. it provides a platform for more than one language. That means you can share &lt;a href="http://ironpython.codeplex.com"&gt;IronPython&lt;/a&gt; objects with &lt;a href="http://ironruby.net"&gt;IronRuby&lt;/a&gt; objects because they are implemented with the same underlying runtime (the DLR).&lt;/p&gt;  &lt;p&gt;With .NET 4.0 the DLR ships as part of the box. So while .NET has first-class support for statically typed languages through the CLR it also provides first-class support for dynamically typed languages through the DLR.&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc241834253"&gt;Myth One – Microsoft is not using Managed Code&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;We often hear this (“Office and Windows are still not built on top of managed code!”) when customers ask about performance and future investments of Microsoft in managed code. The reasoning goes like this:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Since Microsoft is not implementing Windows and Office in managed code that means that it must be significantly flawed/runs much slower than native code and therefore their long term strategy will still be C++. This in turn means that we should not use managed code either.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;In fact Microsoft has a huge investment in managed code (although it is still true that Office and Windows are not implemented in managed code). However, there are a bunch of products that are significantly (if not completely) implemented in managed code:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Windows components, such as&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; a. PowerShell&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; b. System Center&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;2. Office components, such as&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; a. Exchange&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; b. SharePoint/Office Server&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;3. Developer Tools, such as&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; a. Visual Studio and Visual Studio Team System&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; b. Expression&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;4. Dynamics&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This list if by far not complete but it should be large enough to convince you that we are in fact &lt;a href="http://en.wikipedia.org/wiki/Dogfooding"&gt;‘eating our own dog food’&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The reason that not all products are written in managed is not only related to performance. Sometimes the wins of re-implementing working native code in managed code do not outweigh its costs. On the other hand, there are still scenarios in which managed code simply cannot be used today (such as building the CLR itself or the debugger).&lt;/p&gt;  &lt;p&gt;However, we will not deny that there are scenarios in which we cannot compete with the performance of native code today. But this does not mean that we have given up on this. In fact, projects like &lt;a href="http://en.wikipedia.org/wiki/Singularity_%28operating_system%29"&gt;Singularity&lt;/a&gt; should show you that we are really very ambitious about redefining the limits of the managed world.&lt;/p&gt;  &lt;p&gt;The last thing to keep in mind is that manually optimized assembler code is also faster than plain C-code. But this does not mean that all operating systems are completely written in assembler.&lt;/p&gt;  &lt;p&gt;Thus our vision is more like this: native code where it makes sense, managed code where it makes sense with the bigger portion being managed.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9902647" width="1" height="1"&gt;</description></item><item><title>CLR Inside Out - Profiling the .NET Garbage-Collected Heap</title><link>http://blogs.msdn.com/clrteam/archive/2009/10/01/clr-inside-out-profiling-the-net-garbage-collected-heap.aspx</link><pubDate>Thu, 01 Oct 2009 23:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9902041</guid><dc:creator>CLRTeam</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/clrteam/comments/9902041.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clrteam/commentrss.aspx?PostID=9902041</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clrteam/rsscomments.aspx?PostID=9902041</wfw:comment><description>&lt;CENTER&gt;&lt;IMG style="WIDTH: 182px; HEIGHT: 239px" src="http://i.msdn.microsoft.com/ee532478.oct_cover.png" width=182 height=239 mce_src="http://i.msdn.microsoft.com/ee532478.oct_cover.png"&gt;&lt;/CENTER&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The new installment of the “CLR Inside Out” column in &lt;I style="mso-bidi-font-style: normal"&gt;MSDN Magazine&lt;/I&gt; is now available on line.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This month we have an article from Subramanian Ramaswamy and Vance Morrison on &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/magazine/ee309515.aspx"&gt;&lt;FONT color=#4f81bd size=3 face=Calibri&gt;Profiling the .NET Garbage-Collected Heap&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This article provides instructions on using the CLR Profiler for memory investigations of the .NET Garbage-Collected heap.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;You can find a list of all “CLR Inside Out” articles &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/cc501040.aspx"&gt;&lt;FONT size=3 face=Calibri&gt;here&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;As always, please let us know if you have topics you’d like to see covered in the column.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9902041" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clrteam/archive/tags/CLR+Inside+Out/default.aspx">CLR Inside Out</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/Vance+Morrison/default.aspx">Vance Morrison</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/Subramanian+Ramaswamy/default.aspx">Subramanian Ramaswamy</category></item><item><title>CLR Inside Out - What's New in the .NET Framework 4 Base Class Library</title><link>http://blogs.msdn.com/clrteam/archive/2009/09/22/clr-inside-out-what-s-new-in-the-net-framework-4-base-class-library.aspx</link><pubDate>Wed, 23 Sep 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9898259</guid><dc:creator>CLRTeam</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/clrteam/comments/9898259.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clrteam/commentrss.aspx?PostID=9898259</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clrteam/rsscomments.aspx?PostID=9898259</wfw:comment><description>&lt;CENTER&gt;&lt;FONT size=3 face=Calibri&gt;&lt;IMG style="WIDTH: 180px; HEIGHT: 239px" title="September 2009 MSDN Magazine cover" alt="September 2009 MSDN Magazine cover" src="http://i.msdn.microsoft.com/ee423615.sept09_cover.png" width=180 height=239 mce_src="http://i.msdn.microsoft.com/ee423615.sept09_cover.png"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/CENTER&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Sorry for the delay in the post, but in case you haven’t seen it yet, the new installment of the “CLR Inside Out” column in MSDN magazine is available on line.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This month we have an article from Justin Van Patten on &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/magazine/ee428166.aspx"&gt;&lt;FONT color=#4f81bd size=3 face=Calibri&gt;What’s New in the .NET Framework 4 Base Class Library&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;, covering mainly the new features that were available in .NET 4 Beta 1.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;You can find a list of all “CLR Inside Out” articles &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/cc501040.aspx"&gt;&lt;FONT size=3 face=Calibri&gt;here&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;As always, please let us know if you have topics you’d like to see covered in the column.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9898259" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clrteam/archive/tags/CLR+Inside+Out/default.aspx">CLR Inside Out</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/Justin+Van+Patten/default.aspx">Justin Van Patten</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/BCL/default.aspx">BCL</category></item><item><title>IL Stub Diagnostic Tool</title><link>http://blogs.msdn.com/clrteam/archive/2009/08/26/il-stub-diagnostic-tool.aspx</link><pubDate>Thu, 27 Aug 2009 09:08:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9886577</guid><dc:creator>CLRTeam</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/clrteam/comments/9886577.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clrteam/commentrss.aspx?PostID=9886577</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clrteam/rsscomments.aspx?PostID=9886577</wfw:comment><description>&lt;p&gt;&amp;nbsp; &lt;p&gt;The IL Stub Diagnostic Tool enables real-time inspection of the contents of IL stubs. Developers now have a powerful tool to troubleshoot issues in interop marshalling, &lt;p&gt;&lt;b&gt;Introduction&lt;/b&gt; &lt;p&gt;Jesse posted a great &lt;a href="http://blogs.msdn.com/clrteam/archive/2009/08/10/improvements-to-interop-marshaling-in-v4-il-stubs-everywhere.aspx"&gt;blog&lt;/a&gt; talking about the concept, history, and improvements of Intermediate Language (IL) stubs for CLR v4. He mentions  &lt;p&gt;The remainder of this post continues the discussion that Jesse started in the “Easier Debugging” section of his blog. &lt;p&gt;&lt;b&gt;Get the tool&lt;/b&gt; &lt;p&gt;You are encouraged to download the tool from &lt;a href="http://clrinterop.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29745"&gt;CodePlex&lt;/a&gt;.  &lt;p&gt;&lt;b&gt;Usage of the IL Stubs Diagnostics Tool&lt;/b&gt; &lt;p&gt;To begin using the tool, follow these basic steps: &lt;p&gt;1) Launch the IL Stub Diagnostic tool. Note: you need to be an administrator of the machine because the tool utilizes the Event Tracing for Windows (ETW) feature to receive ETW events. &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image002_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image002_thumb.jpg" width="533" height="288"&gt;&lt;/a&gt; &lt;p&gt;There are three key features of the tool: &lt;p&gt;· &lt;b&gt;Starting and Controlling the IL stubs monitoring session&lt;/b&gt; &lt;p&gt;The upper-left button, &lt;b&gt;Start&lt;/b&gt;, is the most important aspect of starting a session. After clicking the &lt;b&gt;Start&lt;/b&gt; button, the tool begins monitoring all the stubs generated by CLR on the machine. It will keep monitoring the IL stubs until you click it again (i.e., &lt;b&gt;Start&lt;/b&gt; button will turn to &lt;b&gt;Stop&lt;/b&gt; after it is clicked).&lt;b&gt;&lt;/b&gt; &lt;p&gt;· &lt;b&gt;Filtering to find a specific IL Stub&lt;/b&gt; &lt;p&gt;The IL Stub List section shows all the IL stubs collected by the tool. Sometimes you will receive a huge number of stubs. In this case, you can set several filters using the &lt;b&gt;Filters&lt;/b&gt; feature to find the exact stub. &lt;p&gt;· &lt;b&gt;Navigating and Inspecting the contents of an IL Stub&lt;/b&gt; &lt;p&gt;Once you find the IL Stub, the contents of it (the IL code) will be shown in the IL Code section. We provide some features like navigation to help you read and understand the IL code. &lt;p&gt;2) Start monitoring IL stubs by clicking the &lt;b&gt;Start&lt;/b&gt; button. &lt;p&gt;3) Run a program involving interop. For example, the sample program &lt;i&gt;sample\pinvoke.exe,&lt;/i&gt; which is included with the tool on CodePlex, generates a p/invoke from managed code to native code. Running this sample from the command line will generate several entries in the IL Stub List section. We will use this for illustration purposes below.  &lt;p&gt;In this example, each item represents an IL Stub. Select an entry and notice its corresponding IL code shown in the IL Code Section. &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image004_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image004_thumb.jpg" width="572" height="366"&gt;&lt;/a&gt; &lt;p&gt;&lt;b&gt;Features which Enable Inspection and Navigation of IL Stubs&lt;/b&gt; &lt;p&gt;IL Stubs are generated on the fly by the CLR for Interop, and bridge the gap between managed and native methods. Since they are dynamically generated, it is difficult for developers to investigate or troubleshoot issues because the stubs are further JIT-compiled into machine code. The IL Stub Diagnostic tool eases the interop debugging experience by enabling the inspection of every stub. Let’s take a look at some of the key features which enable the inspection and navigation of IL stubs.  &lt;p&gt;&lt;b&gt;Detailed information of IL Stub&lt;/b&gt; &lt;p&gt;By default, the tool shows the following categories for each IL stub: MethodName, CreateTime, ProcessName, Category, ManagedSignature and NativeSignature. These categories are important for developers to identify an IL stub. In special cases (e.g., debugging with windbg), developers may also be interested in information like ModuleId and ManagedMethodToken. These are available by right clicking the table header of the IL Stub list. &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image006_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image006_thumb.jpg" width="583" height="199"&gt;&lt;/a&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;IL Stub Filters&lt;/b&gt; &lt;p&gt;You may find that the CLR generates a lot of IL Stubs during the execution of a managed program. To quickly locate the stub we’re seeking, filters can be set to reduce the number of IL stub entries in the IL Stub list. Using the pinvoke.exe sample (included with the tool on CodePlex), you can use the following filter: &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image008_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image008_thumb.jpg" width="570" height="178"&gt;&lt;/a&gt; &lt;p&gt;Once the filter has been entered, click the &lt;b&gt;Refresh&lt;/b&gt; button to obtain the filtered list. &lt;p&gt;To remove a filter, you can right click on the row header of the first filter condition and select &lt;b&gt;Delete Filter&lt;/b&gt;. It will take effect after clicking &lt;b&gt;Refresh&lt;/b&gt; button. &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image010_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image010_thumb.jpg" width="366" height="76"&gt;&lt;/a&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;Navigation buttons for IL Stub code&lt;/b&gt; &lt;p&gt;The code may not be well-formatted for first time display. To make the code more reader-friendly, the tool provides navigation buttons that allow you to view the code block by block. As you can see, each IL stub contains the following color-coded blocks: Initialize, Marshal, the calling method, and Unmarshal blocks. In the IL code, StubHelpers are used to do some complex work. Most of the functionality of each stub helper can be figured out by its name. The tool also provides a &lt;b&gt;Stub API&lt;/b&gt; button to look up its usage. &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image012_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image012_thumb.jpg" width="534" height="377"&gt;&lt;/a&gt; &lt;p&gt;Please note that stub helpers are internal to the runtime and their names/signatures/description should only be used for informational purposes. We may change any of these in the next version of the CLR so no one should establish any dependencies on them. &lt;p&gt;&lt;b&gt;Troubleshooting marshalling issues with IL Stub Diagnostic tool&lt;/b&gt; &lt;p&gt;As mentioned earlier, developers can use the tool to investigate and debug marshalling issues. Here is an example. &lt;p&gt;&lt;b&gt;Case description&lt;/b&gt; &lt;p&gt;There is an issue with the following p/invoke scenario. The signature of the native method is: &lt;p&gt;void DumpString(WCHAR *pStr) &lt;p&gt;{ &lt;p&gt;printf("%ws", pStr); &lt;p&gt;} &lt;p&gt;In managed code, we declare it as: &lt;p&gt;[DllImport("testNative.dll")] &lt;p&gt;public static extern void DumpString(string str); &lt;p&gt;When invoking from managed side with the following code, it shows nothing on the console. &lt;p&gt;DumpString("Hello World"); &lt;p&gt;Our job is to discover what happens during the p/invoke call. &lt;p&gt;&lt;b&gt;Troubleshooting&lt;/b&gt; &lt;p&gt;Since the native code simply dumps the string, the problem must be occuring during the marshaling phase. &lt;p&gt;First, locate the stub by following these steps: &lt;p&gt;1. Launch IL Stub Diagnostic tool. &lt;p&gt;2. Click Start Button. &lt;p&gt;3. Run the program again. &lt;p&gt;4. Set the following filter as shown below and click the Refresh button. &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image014_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image014_thumb.jpg" width="514" height="129"&gt;&lt;/a&gt; &lt;p&gt;Next, navigate to the block of code which handles the marshaling by following these steps: &lt;p&gt;1. Click the “IL Code” button to get a bigger view. &lt;p&gt;2. Click the “Next Block” and navigate to the Marshal block. &lt;p&gt;3. Usually, StubHelpers APIs are the most informational code here. Move the mouse over it to see the explanation of the method (shown in the green box below): &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image016_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image016" border="0" alt="clip_image016" src="http://blogs.msdn.com/blogfiles/clrteam/WindowsLiveWriter/ILStubDiagnosticTool_14572/clip_image016_thumb.jpg" width="531" height="373"&gt;&lt;/a&gt; &lt;p&gt;4. The description tells us that the StubHelpers method is used to convert an &lt;b&gt;Ansi&lt;/b&gt; string. However, our native method expects a &lt;b&gt;WCHAR&lt;/b&gt; string, which results in the marshaling issue. The fix is to specify Unicode, as the highlighted code below. &lt;p&gt;[DllImport("testNative.dll", CharSet=CharSet.Unicode)] &lt;p&gt;public static extern void DumpString(string str); &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;Summary&lt;/b&gt; &lt;p&gt;As you can see, the IL Stubs Diagnostic Tool provides a window into what used to be a black box, and allows you to look into the very core of interop marshaling – the IL Stub itself. &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;Acknowledgements&lt;/b&gt; &lt;p&gt;We would like to specially thank Yifeng Fu for being one of the key developers of IL Stub Diagnostic tool during his internship with us. &lt;p&gt;&lt;b&gt;See Also&lt;/b&gt; &lt;p&gt;The MSDN topic “MSIL Stub Customization” contains detailed reference and usage information. &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Yongtai Zhu,&lt;/p&gt; &lt;p&gt;Developer, CLR. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9886577" width="1" height="1"&gt;</description></item><item><title>The good and the bad of exception filters</title><link>http://blogs.msdn.com/clrteam/archive/2009/08/25/the-good-and-the-bad-of-exception-filters.aspx</link><pubDate>Wed, 26 Aug 2009 03:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9884336</guid><dc:creator>CLRTeam</dc:creator><slash:comments>14</slash:comments><comments>http://blogs.msdn.com/clrteam/comments/9884336.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clrteam/commentrss.aspx?PostID=9884336</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clrteam/rsscomments.aspx?PostID=9884336</wfw:comment><description>&lt;P&gt;Every so often we get asked questions about the CLR’s support for exception filters. Why do some languages support them and others do not? Is it a good idea to add them to my new language? When should I use a filter vs. catch/rethrow? Etc. I’ll try to answer some of these questions for you here, and while I won’t go into all of them hopefully you’ll walk away with enough info to form your own opinion on the rest. Like so many things there’s good things and bad things about exception filters… 
&lt;P&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;B&gt;So what’s a filter?&lt;/B&gt; 
&lt;P&gt;The CLR provides a number of exception handling primitives that higher level languages can build upon. Some are fairly obvious, and map readily to language constructs that most of us know and love: try/catch and try/finally, for instance. I’d hazard to guess that everyone knows what those do, but just in case, let’s consider a quick example in C#: 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write(“1”); 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (P) throw new ArgumentException(); 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write(“2”); 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (ArgumentException e) 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.Write(“3”); 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write(“4”); 
&lt;P&gt;If P is true, then that will print out “1234”, of course. If P is false, then it will print “124”. Groovy. 
&lt;P&gt;But the CLR also provides two more EH primitives: fault and filter. A fault clause is much like a finally clause; it runs when an exception escapes its associated try block. The difference is that a finally clause also runs when control leaves the try block normally, whereas the fault clause will only run when control leaves the try block due to an exception. In the case above, if we replaced the “finally” with “fault” (there’s no C# syntax for that, but suspend your disbelief for a moment) then it would print “1234” if P is true, and “14” is P is false. See the difference? Most languages don’t expose this as a first-class language construct, but we do have a few that use fault clauses under the covers for specific scenarios. 
&lt;P&gt;So that leaves us with filters. I suppose the simplest definition of a filter is that it is a construct that allows one to build a conditional catch clause. In fact, that’s exactly what VB uses filters for. Let’s consider a more complicated example in VB: 
&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Function Foo() As Boolean 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write("3") 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return True 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sub Main() 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim P As Boolean = True 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Try 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Try 
&lt;P&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; Console.Write("1") 
&lt;P&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; If (P) Then 
&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Throw New ArgumentNullException() 
&lt;P&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; End If 
&lt;P&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;Console.Write(“P was False!”) 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Finally 
&lt;P&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; Console.Write("2") 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Try 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catch ex As ArgumentNullException When Foo() 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write("4") 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catch ex As ArgumentException 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write("5") 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Try 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write("6") 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub 
&lt;P&gt;Here you’ll note the “Catch ex As ArgumentNullException When Foo()” line is a conditional catch statement. The catch handler will only execute and print “4” when the exception is an ArgumentNullException and when Foo() returns true. If Foo() returns false, then the catch clause doesn’t execute, and the system continues to search for a catch clause that can handle the exception. In this case, the very next clause would handle the exception, and print “5”. 
&lt;P&gt;So, what do you think this program prints? Don’t cheat by attempting to compile and run it! Using what you know about exception handling and looking at the program structure and syntax, what would you imagine this program prints? I suspect most people would guess “12346”. I even gave you a clue with the numbering. 
&lt;P&gt;I think most of us would look at the example above and conclude that the result should be “12346” because when we look at the syntax above we, quite rightly, see lexically scoped language constructs. We expect that when the code in the inner finally clause starts executing that no more code anywhere in the associated try block will execute. For instance, in the example above, if P is true then when we enter the Finally we know that no more code will execute in the try block, and that we’ll never print “P was False!”. Likewise, when we evaluate one of the catch clauses, we expect that all the code in the associated try block is done executing. 
&lt;P&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;B&gt;And here comes the bad… &lt;/B&gt;
&lt;P&gt;It turns out that program actually prints “1&lt;B&gt;3&lt;/B&gt;246”. My clue with the numbering was an evil ruse. After the throw, Foo() is executed first as part of evaluating the first catch clause, and then the finally within the associated try block executes. And that’s just freaky… what happened to our lexically scoped language constructs?! 
&lt;P&gt;This is a surprising result for most. It breaks our intuitive reasoning about the language based on the lexically scope exception handling constructs provided. Here, when we evaluate the conditional catch clause, all the code in the associated try block has not, in fact, finished executing. 
&lt;P&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;B&gt;Why does this happen?&lt;/B&gt; 
&lt;P&gt;The reason we see “3” before “2” is subtle, and founded in the CLR’s implementation of exception handling. The CLR’s exception handling model is actually a “two pass” model. When an exception is thrown, the runtime searches the call stack for a handler for the exception. The goal of the first pass is to simply determine if a handler for the exception is present on the stack. If it sees finally (or fault) clauses, it ignores them for a moment. 
&lt;P&gt;The handler may be in the form of a typed catch clause, i.e., “Catch ex as ArgumentException)”. When the runtime sees a typed catch clause, it can determine itself if this clause will handle the exception by performing a simple check to determine if the exception object is of a type that inherits from (or is) the type in the clause. 
&lt;P&gt;But when the runtime sees a filter, it must execute the filter in order to determine if the associated handler will handle the exception. If the filter evaluates to true, then a handler has been found. If it evaluates to false, then the runtime will keep searching for a handler. 
&lt;P&gt;Once a handler has been found, the first pass is over and the second pass begins. On the second pass, the runtime again runs the call stack from the point of throw, but this time it executes all finally (or fault) clauses it finds on the way to the handler it identified on the first pass. When the handler is reached, it is executed, and the exception has finally been handled. 
&lt;P&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;B&gt;But why is that bad?&lt;/B&gt; 
&lt;P&gt;“Okay”, you say, “I get it. I understand that filters run during the first pass. I can deal with that… what’s the big deal?” Well, let’s first consider what a finally clause is for. We typically use finally clauses to ensure that our program state remains consistent when exiting a function even in the face of an exception. We put back temporarily broken invariants. Consider that the C# “using” statement is built using try/finally, and then consider all the things one might do with that. 
&lt;P&gt;But when your filter runs, none of those finally clauses have executed. If you called into a library within the associated try block, you may have not actually completed the call when your filter executes. Can you call back into the same library in that case? I don’t know. It might work. Or it might yield an assert, or an exception, or, well, your guess is as good as mine. The point is that you can’t tell. 
&lt;P&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;B&gt;Using filters wisely (or, “the good”)&lt;/B&gt; 
&lt;P&gt;But the notion of a conditional catch clause really is quite appealing, and there are ways to use these without getting caught by the problems of when the filter actually executes. The key is to only read information from either the exception object itself, or from immutable global state, and to not change any global state. If you limit your actions in a filter to just those, then it doesn’t matter when the filter runs, and no one will be able to tell that the filter ran out of order. 
&lt;P&gt;For instance, if you have a fairly general exception, like COMException, you typically only want to catch that when it represents a certain HRESULT. For instance, you want to let it go unhanded when it represents E_FAIL, but you want to catch it when it represents E_ACCESSDEINED because you have an alternative for that case. Here, this is a perfectly reasonable conditional catch clause: 
&lt;P&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; Catch ex As System.Runtime.InteropServices.COMException When ex.ErrorCode() = &amp;amp;H80070005 
&lt;P&gt;The alternative is to place the condition within the catch block, and rethrow the exception if it doesn’t meet your criteria. For instance: 
&lt;P&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; Catch ex As System.Runtime.InteropServices.COMException 
&lt;P&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;&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;&amp;nbsp; If (ex.ErrorCode != &amp;amp;H80070005) Then Throw 
&lt;P&gt;Logically, this “catch/rethrow” pattern does the same thing as the filter did, but there is a subtle and important difference. If the exception goes unhandled, then the program state is quite different between the two. In the catch/rethrow case, the unhandled exception will appear to come from the Throw statement within the catch block. There will be no call stack beyond that, and any finally blocks up to the catch clause will have been executed. Both make debugging more difficult. In the filter case, the exception goes unhandled from the point of the original throw, and no program state has been changed by finally clauses. 
&lt;P&gt;The problem is that we rely on programmer discipline in order to use filters correctly, but it’s easy to use them incorrectly and end up with infrequently executed code (exceptions, after all, are for exceptional circumstances) that has subtle and hard to diagnose bugs due to inconsistent program state that should have been cleaned up by finally clauses further down the stack. 
&lt;P&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;B&gt;Why does the CLR use a two-pass exception handling model?&lt;/B&gt; 
&lt;P&gt;The CLR implements a two-pass exception handling system in order to better interoperate with unmanaged exception handling systems, like Win32 Structured Exception Handling (SEH) or C++ Exception Handling. We must run finally (and fault) clauses on the second pass so they run in order with unmanaged equivalents. Likewise, we must not execute filters later (say, on the second pass) because one of those unmanaged systems may have remembered that it was supposed to be responsible for handling the exception. If we were to run a filter late on the second pass and decide that a managed clause really should catch the exception after previously having not declared that on the first pass, then we would violate our contract with those unmanaged mechanisms with unpredictable results. 
&lt;P&gt;So, in short, it’s for interop, and like many things involving interop, we have a compatibility burden that we can’t ignore. 
&lt;P&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;B&gt;Would a one-pass model be better?&lt;/B&gt; 
&lt;P&gt;Many have wondered over the years if perhaps the two-pass model in general is bad, and if a one-pass model would be better. Like so many things in the world, it’s just not that clear. A one-pass model would simplify the exception handling implementation, and it would make more sense in the cases shown above. However, there are advantages to the two-pass model that can’t be ignored. Perhaps the most important one is that if the search for a handler fails on the first-pass the exception goes unhandled and in general no program state has changed, even though filters are run since filters tend not to change things. The call stack is still intact, and all values that lead to the exception are still present on the stack and on the heap (assuming no race conditions.) This is frequently essential when debugging an unhandled exception. In a one-pass model, all of the finally clauses would have been run before the exception goes unhandled. 
&lt;P&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;B&gt;Wrapping up&lt;/B&gt; 
&lt;P&gt;Of the languages that MS ships, only VB and F# support filters, and both do so via conditional catch clauses. In F#, you have to really go out of your way to attempt to inspect mutable global state, or to actually have a side effect, so you’re fairly safe there. In VB, though, you can call a function from the “when” clause of their catch statement, and in there you have free reign to do whatever you please. You can, without a doubt, get yourself into trouble attempting to do too much complicated work within such a filter. To keep your world safe and simple try to limit yourself to expressions that only access the exception object, and don’t modify anything. If you go beyond that, you need to consider carefully all the code executed in the try block, and if your actions in the filter will work if the backout code below has not finished executing yet. 
&lt;P&gt;Mike Magruder, 
&lt;P&gt;Developer, CLR.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9884336" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clrteam/archive/tags/Exception+Handling/default.aspx">Exception Handling</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/Mike+Magruder/default.aspx">Mike Magruder</category></item><item><title>Improvements to Interop Marshaling in V4: IL Stubs Everywhere</title><link>http://blogs.msdn.com/clrteam/archive/2009/08/10/improvements-to-interop-marshaling-in-v4-il-stubs-everywhere.aspx</link><pubDate>Mon, 10 Aug 2009 23:27:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9863498</guid><dc:creator>CLRTeam</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/clrteam/comments/9863498.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clrteam/commentrss.aspx?PostID=9863498</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clrteam/rsscomments.aspx?PostID=9863498</wfw:comment><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When the CLR needs to transition between managed and native code – usually because of P\Invoke or COM interop – we need to generate marshaling stubs (little chunks of code) to handle that specific call and transform the data from managed to native format and back again. . These stubs are little pieces of code that are usually generated at runtime to do their work behind the scenes and, hopefully, without making developers or users aware of their presence. In .Net 4 we’ve improved our marshaling infrastructure substantially with a feature we call “IL Stubs Everywhere.” For those who have a deep interest in interop marshaling we get into the details of this feature below. For everyone else, here are a few key benefits of this feature:&lt;/p&gt;  &lt;p&gt;· Faster interop marshaling: the more complex the signature the greater the speed-up&lt;/p&gt;  &lt;p&gt;· x86 and x64 behavior matches: we’ve updated the x64 marshaling to behave exactly as x86 always has and mostly without impact to x64&lt;/p&gt;  &lt;p&gt;· Better debugging: when something goes wrong in marshaling we now give you the ability, and specialized tools, to find the problem&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;History&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The 1.0 and 1.1 versions of the CLR had several different techniques for creating and executing these stubs that were each designed for marshaling different types of signatures. These techniques ranged from directly generated x86 assembly instructions for simple signatures to generating specialized ML (an internal marshaling language)* and running them through an internal interpreter for the most complicated signatures. This system worked well enough – although not without difficulties – in 1.0 and 1.1 but presented us with a serious maintenance problem when 2.0, and its support for multiple processor architectures, came around. &lt;/p&gt;  &lt;p&gt;We realized early in the process of adding 64 bit support to 2.0 that this approach was not sustainable across multiple architectures. Had we continued with the same strategy we would have had to create parallel marshaling infrastructures for each new architecture we supported (remember in 2.0 we introduced support for both x64 and IA64) which would, in addition to the initial cost, at least triple the cost of every new marshaling feature or bug fix. We needed one marshaling stub technology that would work on multiple processor architectures and could be efficiently executed on each one: enter IL stubs. &lt;/p&gt;  &lt;p&gt;With x64 and IA64 bit support in v2 we introduced IL stubs to perform the marshaling on these platforms. With IL stubs we generate actual IL rather than assembly code or the specialized language in our ML stubs. On these platforms we only used the IL stubs and were thus able to have a single implementation, for all stubs, across both processor architectures. These IL stubs were much faster than the ML stubs but were also much slower than x86 stubs. Because of the performance regress and our resource constraints, we left the x86 platform with its original marshaling stubs implementation. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;New in V4: IL Stubs Everywhere &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;One of the largest features the interop team worked on in the v4 product was the “IL Stubs Everywhere” feature. With this work we moved to uniformly using the same IL stubs infrastructure for all marshaling on all platforms. Sometimes when we spend a lot of time developing, or reworking, a feature there is a concern that it will be expensive for developers to start taking advantage of it: the good news with this one is that this will change will occur automatically and the majority of the benefits will happen just by running your app on v4.0. &lt;/p&gt;  &lt;p&gt;A few of the benefits you will see with this feature are:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;strong&gt;Increased performance: &lt;/strong&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;The original x86 stubs for the simplest signatures were pretty fast – often a simple copy operation -- but as soon as you needed marshaling for more complex signatures you were forced onto the slow path with the ML interpreter. We heavily optimized our IL stub infrastructure and now IL stubs are faster across the board (even compared to x86 stubs) and are orders of magnitude faster than the interpreted stubs you used to get for the more interesting signatures. Additionally, for those that use NGEN you’ll find that we include most of your IL stubs in the NGEN images to improve this scenario even further. &lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;strong&gt;Consistent behavior: &lt;/strong&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;One of the common problems people ran into in interop in the v2 days is that with different marshaling technologies used for 32 and 64 bit the behaviors didn’t line up exactly the same. There were a few places where the same code behaved differently based on platform. With every platform running off of IL stubs we now have the same behavior across all platforms. &lt;/p&gt;  &lt;p&gt;&lt;i&gt;Note: &lt;/i&gt;when we did this we had a choice between giving the 4.0 IL stubs the behavior of the v2.0 64 bit IL stubs or the v2.0 32 bit stubs. We chose to use the 2.0 32 bit behavior for the 4.0 because of the much larger percentage of interop apps that have been built on 32bit to date. &lt;/p&gt;  &lt;p&gt;This means that you should not see any behavioral differences moving a 32 bit app to the v4.0 NetFX but you may see some for 64 bit interop apps.&amp;#160; Because of the nature of these changes we expect the impact of them to 64 bit apps to be very minimal: most of the changes involve relaxing behavior that was stricter in 64 bit than 32 bit. The biggest change in reverting to 32 bit behavior was to stop clearing ‘out’ parameters during certain error conditions and should be completely non-breaking to 64 bit applications. &lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;strong&gt;Easier Debugging:&lt;/strong&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;One of the other problems with the old 32 bit marshaling infrastructure was that it worked essentially as a black box that was very difficult to debug if something went wrong. It was very difficult to figure out how/what the runtime was trying to marshal when something went wrong. By moving to IL stubs it is actually possible to see the IL instructions that we’re executing and determine where your problem is. &lt;/p&gt;  &lt;p&gt;Since Visual Studio does not support debugging IL, the move to IL stubs alone wouldn’t help debugging very much if that was all we did. Instead we updated our IL stubs infrastructure to fire an ETW event detailing each stub as they get generated and built a tool, which we recently released on codeplex, which lets you easily see all the stubs being generated and quickly search for the ones for the methods you are most interested in. In an upcoming post we will have more details and a walkthrough of the tool, but in the meantime you can find it here: &lt;a href="http://clrinterop.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29745"&gt;http://clrinterop.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29745&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;*ML Stubs: it is a little known fact that up until v4 the CLR, at runtime, converted complex signatures into an internal CLR language called ML (marshaling language) which it then ran through the CLR’s internal ML interpreter each time the method was invoked. This little interpreter is almost another separate runtime just for interop marshaling. You can imagine how replacing this with IL and thus getting all the advantages of the perf work that goes into NGEN and the JIT allowed us to massively speed up these scenarios. There was much rejoicing on our team when we removed this interpreter in v4. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Jesse Kaplan,&lt;/p&gt;  &lt;p&gt;PM, CLR&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9863498" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clrteam/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/Jesse+Kaplan/default.aspx">Jesse Kaplan</category></item><item><title>Upgrading to Windows 7 with .NET 4 Beta 1 </title><link>http://blogs.msdn.com/clrteam/archive/2009/08/08/upgrading-to-windows-7-with-net-4-beta-1.aspx</link><pubDate>Sat, 08 Aug 2009 23:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9861595</guid><dc:creator>CLRTeam</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/clrteam/comments/9861595.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clrteam/commentrss.aspx?PostID=9861595</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clrteam/rsscomments.aspx?PostID=9861595</wfw:comment><description>&lt;!--StartFragment--&gt;&lt;font face="Calibri, Verdana, Helvetica, Arial"&gt;&lt;span style="font-size:11pt"&gt;If you’re the kind of early adopter who installs .NET 4 Beta 1 and also wants the latest and greatest operating system (Windows 7), please check out Scott Hanselman’s recent blog post &lt;font color="#0000FF"&gt;&lt;u&gt;&lt;a href="http://www.hanselman.com/blog/VistaUsersUninstallVisualStudio2010Beta1BeforeUpgradingToWindows7.aspx"&gt;http://www.hanselman.com/blog/VistaUsersUninstallVisualStudio2010Beta1BeforeUpgradingToWindows7.aspx&lt;/a&gt;&lt;/u&gt;&lt;/font&gt; &lt;br&gt;&amp;nbsp;&lt;br&gt;While .NET 4 Beta 1 works well on both Vista and Windows 7, you’ll run into trouble if you try to upgrade from Vista or Windows 7 RC to Windows 7 RTM without first uninstalling .NET 4 Beta 1. &amp;nbsp;Scott’s blog has the details. &amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;!--EndFragment--&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9861595" width="1" height="1"&gt;</description></item><item><title>CLR Inside Out - Code Contracts</title><link>http://blogs.msdn.com/clrteam/archive/2009/08/05/clr-inside-out-code-contracts.aspx</link><pubDate>Thu, 06 Aug 2009 03:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9858546</guid><dc:creator>CLRTeam</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/clrteam/comments/9858546.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clrteam/commentrss.aspx?PostID=9858546</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clrteam/rsscomments.aspx?PostID=9858546</wfw:comment><description>&lt;CENTER&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;IMG style="WIDTH: 150px; HEIGHT: 197px" src="http://i.msdn.microsoft.com/dd365188.0809.gif" width=150 height=197 mce_src="http://i.msdn.microsoft.com/dd365188.0809.gif"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;/CENTER&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The new installment of the “CLR Inside Out” column in MSDN magazine is available on line.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This month we have an article from Melitta Andersen on &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/magazine/ee236408.aspx"&gt;&lt;FONT color=#4f81bd size=3 face=Calibri&gt;Code Contracts&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It provides an overview of the feature, and includes some recommendations the Base Class Libraries team figured out as they added Code Contracts to the BCL.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;You can find a list of all “CLR Inside Out” articles &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/cc501040.aspx"&gt;&lt;FONT size=3 face=Calibri&gt;here&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;As always, please let us know if you have topics you’d like to see covered in the column.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9858546" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clrteam/archive/tags/Melitta+Andersen/default.aspx">Melitta Andersen</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/CLR+Inside+Out/default.aspx">CLR Inside Out</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/Contracts/default.aspx">Contracts</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/BCL/default.aspx">BCL</category></item><item><title>CLR 4: Making the AssemblyResolve event more useful</title><link>http://blogs.msdn.com/clrteam/archive/2009/07/15/clr-4-making-the-assemblyresolve-event-more-useful.aspx</link><pubDate>Thu, 16 Jul 2009 01:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9834716</guid><dc:creator>CLRTeam</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/clrteam/comments/9834716.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clrteam/commentrss.aspx?PostID=9834716</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clrteam/rsscomments.aspx?PostID=9834716</wfw:comment><description>&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;In the introductory post on CLR Binder (‘&lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/clrteam/archive/2009/01/29/understanding-the-binder-part-1.aspx" mce_href="http://blogs.msdn.com/clrteam/archive/2009/01/29/understanding-the-binder-part-1.aspx"&gt;&lt;FONT size=3 face=Calibri&gt;Understanding the Binder – Part 1&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;’), we listed the set of steps that the CLR Binder follows, in order to locate an assembly and bind to it. On reading this, an obvious question comes to mind. What happens when all of these steps fail to locate the assembly? Does the binder simply quit looking? &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;It eventually does, but not before firing the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx"&gt;&lt;FONT size=3 face=Calibri&gt;AssemblyResolve&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; event. The user can register an event handler for the AssemblyResolve event and then load the assembly that was intended to be loaded in the first place (or execute some other code appropriately). &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The AssemblyResolve event itself has been around for a while now. So what’s changed in CLR 4? Prior to CLR 4, if an assembly A has a reference to another assembly B, and an AssemblyResolve event occurs for the referenced assembly (in this case, B), there is no means to know the identity of the parent assembly (or the referencing assembly, or A). &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Why is this problematic? Let’s take this example. Let’s assume that an assembly FirstParent.dll references Child.dll. Let’s also assume SecondParent.dll also references Child.dll. On failing to load Child.dll, AssemblyResolve event is fired. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Now, while loading FirstParent.dll and SecondParent.dll using LoadFile(), an AssemblyResolve event is fired for Child.dll. Looking at the AssemblyResolve event, it is unclear as to which parent assembly actually triggered loading Child.dll. This is not helpful if the user wants to execute different code as a part of the ResolveEventHandler, depending on the parent assembly that caused attempting to load Child.dll. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;In CLR 4, the AssemblyResolve event provides richer information that includes the parent assembly’s identity. &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/system.resolveeventargs_members(VS.100).aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.resolveeventargs_members(VS.100).aspx"&gt;&lt;FONT size=3 face=Calibri&gt;System.ResolveEventArgs&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; now has a property called &lt;B style="mso-bidi-font-weight: normal"&gt;RequestingAssembly&lt;/B&gt;, which is the assembly which requested the (unsuccessful) load of the child assembly, triggering an AssemblyResolve event. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;With this new property, when AssemblyResolve event is fired, apart from the current assembly (which could not be located by the Binder), the parent assembly is also provided. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Thus, using this property,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;(a) The user&amp;nbsp;now knows&amp;nbsp;which assembly caused the load event &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;(b) The event handler can now make use of the parent assembly that is passed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;You can read more about this new property &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/system.resolveeventargs.requestingassembly(VS.100).aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.resolveeventargs.requestingassembly(VS.100).aspx"&gt;&lt;FONT size=3 face=Calibri&gt;here&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9834716" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clrteam/archive/tags/CLR+Binder/default.aspx">CLR Binder</category><category domain="http://blogs.msdn.com/clrteam/archive/tags/Aarthi+Ramamurthy/default.aspx">Aarthi Ramamurthy</category></item><item><title>Take the .Net 4 Beta1 survey</title><link>http://blogs.msdn.com/clrteam/archive/2009/07/14/take-the-net-4-beta1-survey.aspx</link><pubDate>Wed, 15 Jul 2009 00:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9833557</guid><dc:creator>CLRTeam</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/clrteam/comments/9833557.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clrteam/commentrss.aspx?PostID=9833557</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clrteam/rsscomments.aspx?PostID=9833557</wfw:comment><description>&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is a survey to understand you think about .Net 4 Beta1, and to get a sense of the level of satisfaction, particularly while trying to upgrade existing managed applications to CLR 4, or while creating new CLR 4 applications. This survey should take you about 20 minutes to complete. Here is the &lt;A href="http://clrbeta1.questionpro.com/" mce_href="http://clrbeta1.questionpro.com "&gt;link&lt;/A&gt; to the survey.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9833557" width="1" height="1"&gt;</description></item></channel></rss>