<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Donovan Smith's WebLog</title><subtitle type="html" /><id>http://blogs.msdn.com/donovans/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/donovans/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2007-07-20T14:49:41Z</updated><entry><title>Launching Process Explorer elevated</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/archive/2009/10/26/launching-process-explorer-elevated.aspx" /><id>http://blogs.msdn.com/donovans/archive/2009/10/26/launching-process-explorer-elevated.aspx</id><published>2009-10-26T19:07:24Z</published><updated>2009-10-26T19:07:24Z</updated><content type="html">&lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt;Process Explorer&lt;/a&gt; is an excellent replacement for the default Windows Task Manager.&amp;#160; Process Explorer even automates this change via Options –&amp;gt; Replace Task Manager.&amp;#160; However, by default, this won’t launch Process Explorer elevated.&amp;#160; You can force it to run elevated by changing the registry (of course, the usual edit-the-registry-at-your-own-risk disclaimers apply).&lt;/p&gt;  &lt;p&gt;Under&lt;/p&gt;  &lt;p&gt;HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe&lt;/p&gt;  &lt;p&gt;append “/e” to the text for the value Debugger.&lt;/p&gt;  &lt;p&gt;“&amp;lt;your path&amp;gt;\Procexp.exe” &lt;strong&gt;&lt;font color="#ff0000"&gt;/e&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If Process Explorer is running, close it explicitly via File –&amp;gt; Exit.&amp;#160; Next time you launch it (which I always do via Ctrl-Shift-Esc), it will run elevated.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9913101" width="1" height="1"&gt;</content><author><name>donovani</name><uri>http://blogs.msdn.com/members/donovani.aspx</uri></author><category term="Windows" scheme="http://blogs.msdn.com/donovans/archive/tags/Windows/default.aspx" /></entry><entry><title>Windows: Run elevated shortcut</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/archive/2009/09/10/windows-run-elevated-shortcut.aspx" /><id>http://blogs.msdn.com/donovans/archive/2009/09/10/windows-run-elevated-shortcut.aspx</id><published>2009-09-11T03:57:23Z</published><updated>2009-09-11T03:57:23Z</updated><content type="html">&lt;p&gt;You can launch any item shown in the Windows Start menu elevated by highlighting the item and either right-clicking and choosing Run as Administrator, or hitting Ctrl-Shift-Enter.&amp;#160; Note that this does not work when launching items from the Run window (Win-R).&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9893948" width="1" height="1"&gt;</content><author><name>donovani</name><uri>http://blogs.msdn.com/members/donovani.aspx</uri></author><category term="Windows" scheme="http://blogs.msdn.com/donovans/archive/tags/Windows/default.aspx" /></entry><entry><title>Excel Tip #4: Adjust the Width of the Horizontal Scroll Bar</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/archive/2009/08/25/excel-tip-4-adjust-the-width-of-the-horizontal-scroll-bar.aspx" /><id>http://blogs.msdn.com/donovans/archive/2009/08/25/excel-tip-4-adjust-the-width-of-the-horizontal-scroll-bar.aspx</id><published>2009-08-25T21:36:55Z</published><updated>2009-08-25T21:36:55Z</updated><content type="html">&lt;p&gt;It’s not obvious unless you are looking for it, but you can change the width of the horizontal scroll bar in Excel.&amp;#160; On the left-hand side of the scroll bar there is an anchor you can use to resize.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ExcelTip4_Before" border="0" alt="ExcelTip4_Before" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip4AdjusttheWidthoftheHorizontalSc_A114/ExcelTip4_Before_5.jpg" width="503" height="174" /&gt; &lt;/p&gt;  &lt;p&gt;Can become&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ExcelTip4_After" border="0" alt="ExcelTip4_After" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip4AdjusttheWidthoftheHorizontalSc_A114/ExcelTip4_After_3.jpg" width="503" height="174" /&gt; &lt;/p&gt;  &lt;p&gt;This can be very useful in a workbook with lots of sheets or for wide sheets where you do a lot of scrolling.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9883965" width="1" height="1"&gt;</content><author><name>donovani</name><uri>http://blogs.msdn.com/members/donovani.aspx</uri></author><category term="Excel" scheme="http://blogs.msdn.com/donovans/archive/tags/Excel/default.aspx" /></entry><entry><title>Excel Tip #3: Worksheet Tab Color</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/archive/2008/07/17/excel-tip-3-worksheet-tab-color.aspx" /><id>http://blogs.msdn.com/donovans/archive/2008/07/17/excel-tip-3-worksheet-tab-color.aspx</id><published>2008-07-18T09:11:17Z</published><updated>2008-07-18T09:11:17Z</updated><content type="html">&lt;p&gt;For workbooks that contain more than one category of worksheet, you can use color to add visual distinction to the worksheet tabs along the bottom of the Excel window.&amp;#160; Right-click on the worksheet tab to bring up the dialog:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip3WorksheetTabColor_D3D/ExcelTip3_TabColorDialog_2.jpg"&gt;&lt;img title="ExcelTip3_TabColorDialog" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="267" alt="ExcelTip3_TabColorDialog" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip3WorksheetTabColor_D3D/ExcelTip3_TabColorDialog_thumb.jpg" width="392" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Your tabs are now colorful:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip3WorksheetTabColor_D3D/ExcelTip3_TabColor_4.jpg"&gt;&lt;img title="ExcelTip3_TabColor" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="47" alt="ExcelTip3_TabColor" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip3WorksheetTabColor_D3D/ExcelTip3_TabColor_thumb_1.jpg" width="209" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8747033" width="1" height="1"&gt;</content><author><name>donovani</name><uri>http://blogs.msdn.com/members/donovani.aspx</uri></author><category term="Excel" scheme="http://blogs.msdn.com/donovans/archive/tags/Excel/default.aspx" /></entry><entry><title>Excel Tip #2: Identifying Precedent and Dependent Cells, Method 2</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/archive/2008/07/07/excel-tip-2-identifying-precedent-and-dependent-cells-method-2.aspx" /><id>http://blogs.msdn.com/donovans/archive/2008/07/07/excel-tip-2-identifying-precedent-and-dependent-cells-method-2.aspx</id><published>2008-07-07T23:16:40Z</published><updated>2008-07-07T23:16:40Z</updated><content type="html">&lt;p&gt;Excel can help you understand or troubleshoot cell references by identifying the cells dependent upon the selected cell and those that the selected cell depends upon.&lt;/p&gt;  &lt;p&gt;One way to accomplish this is via the Go To Special dialog.&amp;#160; It can be launched from the Find &amp;amp; Select menu of the Editing group in the Home tab.&lt;/p&gt;  &lt;p&gt;&lt;img title="ExcelTip2_GoToSpecial" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="353" alt="ExcelTip2_GoToSpecial" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip2IdentifyingPrecedentandDependen_B39/ExcelTip1_GoToSpecial_3.jpg" width="232" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;To demonstrate how this works, let’s create a simple worksheet:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip2IdentifyingPrecedentandDependen_B39/ExcelTip1_Definition_2.jpg"&gt;&lt;img title="ExcelTip2_Definition" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="96" alt="ExcelTip2_Definition" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip2IdentifyingPrecedentandDependen_B39/ExcelTip1_Definition_thumb.jpg" width="168" border="0" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip2IdentifyingPrecedentandDependen_B39/ExcelTip1_View_2.jpg"&gt;&lt;img title="ExcelTip2_View" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="99" alt="ExcelTip2_View" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip2IdentifyingPrecedentandDependen_B39/ExcelTip1_View_thumb.jpg" width="104" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Select cell A3 and bring up the Go To Special dialog:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip2IdentifyingPrecedentandDependen_B39/ExcelTip1_GoToSpecialDialog_2.jpg"&gt;&lt;img title="ExcelTip2_GoToSpecialDialog" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="328" alt="ExcelTip2_GoToSpecialDialog" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip2IdentifyingPrecedentandDependen_B39/ExcelTip1_GoToSpecialDialog_thumb.jpg" width="302" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Choose Precedents and Direct Only and click OK.&amp;#160; This will select all cells directly dependent upon a the selected cell. Since A3 was selected before opening the dialog, cell A2 will be selected after hitting OK.&amp;#160; To extend the search to all ancestors of the selected cell, choose All Levels instead of Direct Only.&amp;#160; Selecting A3 before the dialog will now select A1 and A2 after hitting OK.&amp;#160; A1 is added since A1 depends on A2 which depends on the selected cell A3.&lt;/p&gt;  &lt;p&gt;Dependencies work the same way.&amp;#160; Select A1 and choose Dependents and Direct Only in the Go To Special dialog.&amp;#160; You’ll see A2 selected when you hit OK since A2 directly depends upon A1.&amp;#160; Choose Dependents and All Levels and both A2 and A3 will be selected when you hit OK since A3 depends on A2 which depends on A1.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Note that since the effect of these actions may select multiple cells, the auto calculation data in the Excel status bar is populated:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip2IdentifyingPrecedentandDependen_B39/ExcelTip1_StatusBarAutoCalculate_2.jpg"&gt;&lt;img title="ExcelTip2_StatusBarAutoCalculate" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="48" alt="ExcelTip2_StatusBarAutoCalculate" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip2IdentifyingPrecedentandDependen_B39/ExcelTip1_StatusBarAutoCalculate_thumb.jpg" width="407" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8703929" width="1" height="1"&gt;</content><author><name>donovani</name><uri>http://blogs.msdn.com/members/donovani.aspx</uri></author><category term="Excel" scheme="http://blogs.msdn.com/donovans/archive/tags/Excel/default.aspx" /></entry><entry><title>Excel Tip #1: Identifying Precedent and Dependent Cells, Method 1</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/archive/2008/07/07/excel-tip-1-identifying-precedent-and-dependent-cells-method-1.aspx" /><id>http://blogs.msdn.com/donovans/archive/2008/07/07/excel-tip-1-identifying-precedent-and-dependent-cells-method-1.aspx</id><published>2008-07-07T23:14:16Z</published><updated>2008-07-07T23:14:16Z</updated><content type="html">&lt;p&gt;Excel can help you understand or troubleshoot cell references by identifying the cells dependent upon the selected cell and those that the selected cell depends upon.&lt;/p&gt;  &lt;p&gt;One method for doing this is via the Formula Auditing group in the Formulas tab.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip1IdentifyingPrecedentandDependen_B9F5/ExcelTip1_FormulaAuditing_2.jpg"&gt;&lt;img title="ExcelTip1_FormulaAuditing" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="108" alt="ExcelTip1_FormulaAuditing" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip1IdentifyingPrecedentandDependen_B9F5/ExcelTip1_FormulaAuditing_thumb.jpg" width="323" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Let’s start by creating a simple worksheet:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip1IdentifyingPrecedentandDependen_B9F5/ExcelTip2_Definition_2.jpg"&gt;&lt;img title="ExcelTip1_Definition" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="96" alt="ExcelTip1_Definition" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip1IdentifyingPrecedentandDependen_B9F5/ExcelTip2_Definition_thumb.jpg" width="168" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip1IdentifyingPrecedentandDependen_B9F5/ExcelTip1_View_2.jpg"&gt;&lt;img title="ExcelTip1_View" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="98" alt="ExcelTip1_View" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip1IdentifyingPrecedentandDependen_B9F5/ExcelTip1_View_thumb.jpg" width="124" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Select A3 then click the Trace Precedents button once.&amp;#160; You’ll see an arrow going from A2 to A3 indicating A3 depends upon A2.&amp;#160; Click the Trace Precedents button again and you’ll see another arrow from A1 to A2 since A2 depends on A1.&amp;#160; Click on Remove Arrows to clear the arrows.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip1IdentifyingPrecedentandDependen_B9F5/ExcelTip1_TracePrecedents1_2.jpg"&gt;&lt;img title="ExcelTip1_TracePrecedents1" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="84" alt="ExcelTip1_TracePrecedents1" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip1IdentifyingPrecedentandDependen_B9F5/ExcelTip1_TracePrecedents1_thumb.jpg" width="93" border="0" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip1IdentifyingPrecedentandDependen_B9F5/ExcelTip1_TracePrecedents2_2.jpg"&gt;&lt;img title="ExcelTip1_TracePrecedents2" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="85" alt="ExcelTip1_TracePrecedents2" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip1IdentifyingPrecedentandDependen_B9F5/ExcelTip1_TracePrecedents2_thumb.jpg" width="93" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Finding dependents works the same way.&amp;#160; Select A1 and click Trace Dependents once.&amp;#160; An arrow will appear going from A1 to A2 since A2 depends upon A1.&amp;#160; Click Trace Dependents again and another arrow will go from A2 to A3 since A3 depends upon A2.&amp;#160; Click on Remove Arrows to clear the arrows.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip1IdentifyingPrecedentandDependen_B9F5/ExcelTip1_TraceDependents1_2.jpg"&gt;&lt;img title="ExcelTip1_TraceDependents1" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="88" alt="ExcelTip1_TraceDependents1" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip1IdentifyingPrecedentandDependen_B9F5/ExcelTip1_TraceDependents1_thumb.jpg" width="93" border="0" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip1IdentifyingPrecedentandDependen_B9F5/ExcelTip1_TraceDependents2_2.jpg"&gt;&lt;img title="ExcelTip1_TraceDependents2" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="87" alt="ExcelTip1_TraceDependents2" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/ExcelTip1IdentifyingPrecedentandDependen_B9F5/ExcelTip1_TraceDependents2_thumb.jpg" width="95" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8703915" width="1" height="1"&gt;</content><author><name>donovani</name><uri>http://blogs.msdn.com/members/donovani.aspx</uri></author><category term="Excel" scheme="http://blogs.msdn.com/donovans/archive/tags/Excel/default.aspx" /></entry><entry><title>Complex scripts in PDF</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/archive/2007/10/24/complex-scripts-in-pdf.aspx" /><id>http://blogs.msdn.com/donovans/archive/2007/10/24/complex-scripts-in-pdf.aspx</id><published>2007-10-24T22:24:54Z</published><updated>2007-10-24T22:24:54Z</updated><content type="html">&lt;p&gt;There is currently a bug in our SQL Server 2005 PDF renderer which may cause it to generate incorrect glyphs for text in a complex left-to-right script.&amp;#xA0; The reason this occurs is that we need to embed font glyph indices and metric information into the PDF document.&amp;#xA0; For text in a right-to-left complex script, we get this information from the Uniscribe API which knows all about combining and morphing characters into glyphs.&amp;#xA0; For everything else, we use GDI methods which do not understand how to handle complex scripts.&amp;#xA0; For an example of the problem, look at the following &lt;a href="http://en.wikipedia.org/wiki/Gujarati_script" target="_blank"&gt;Gujarati script&lt;/a&gt; as it appears in HTML (correct) and PDF (incorrect):&lt;/p&gt;  &lt;p&gt;&amp;#xA0;&lt;/p&gt;  &lt;p&gt;&lt;img id="id" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="2007-10-18 Gujarati characters in PDF" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/6107639a3af8_95A4/2007-10-18%20Gujarati%20characters%20in%20PDF_3.png" width="459" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;I am working on a fix for both our SQL Server 2005 and upcoming SQL Server 2008 PDF renderers.&amp;#xA0; If you have text that is affected by this bug, please email me with details (an RDL containing the problematic strings is preferred) to help us be sure the fix we implement is complete.&amp;#xA0; You can find my email address on &lt;a href="http://blogs.msdn.com/donovans/about.aspx" target="_blank"&gt;my About page&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Thank you.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5655841" width="1" height="1"&gt;</content><author><name>donovani</name><uri>http://blogs.msdn.com/members/donovani.aspx</uri></author><category term="Reporting Services" scheme="http://blogs.msdn.com/donovans/archive/tags/Reporting+Services/default.aspx" /></entry><entry><title>SQL Server 2005 SP2 Cumulative Update 4 is available</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/archive/2007/10/17/sql-server-2005-sp2-cumulative-update-4-is-available.aspx" /><id>http://blogs.msdn.com/donovans/archive/2007/10/17/sql-server-2005-sp2-cumulative-update-4-is-available.aspx</id><published>2007-10-17T21:30:10Z</published><updated>2007-10-17T21:30:10Z</updated><content type="html">&lt;p&gt;The latest SQL Server 2005 SP2 Cumulative Update (CU4) &lt;a href="http://support.microsoft.com/kb/941450/en-us" target="_blank"&gt;is now available&lt;/a&gt;.&amp;#xA0; You can get it by calling into customer support or by &lt;a href="http://support.microsoft.com/gp/CUHotFix_LandingPage_Request" target="_blank"&gt;making an online request&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#xA0;&lt;/p&gt;  &lt;p&gt;There are two fixes in the feature areas I own that are included in this update:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;(Bug ID 50001816) When you export a SQL Server 2005 Reporting Services report to a .pdf file, blank pages are added.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Our pagination logic would sometimes incorrectly push items inside a table to the next page which, under the right circumstances, would cause a blank page to appear.&lt;/p&gt;  &lt;p&gt;Note that this bug would only cause blank pages to appear intermittently in PDF.&amp;#xA0; If you are seeing consistent blank pages, first check to make sure that: body width + page left margin + page right margin &amp;lt; page width.&lt;/p&gt;  &lt;p&gt;&amp;#xA0;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;(Bug ID 50001498) Text in a text box with vertical text in a RTL layout faces the wrong direction.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Right-to-left (including bidi) text will not display with the correct word order when the writing-mode property of a textbox is set to tb-rl.&amp;#xA0; This affects the image renderer (which includes printing) in addition to the win and webforms controls.&amp;#xA0; The sister issue is bug ID 50001488 - FIX: A SQL Server 2005 Reporting Services report that uses the Right-to-Left (RTL) layout displays incorrectly in Internet Explorer 7.&lt;/p&gt;  &lt;p&gt;Note that the fix included in CU4 does not contain updates to the controls themselves so if you are using the controls in local mode and hitting this issue, you will need to wait for the next update from our developer division.&lt;/p&gt;  &lt;p&gt;This was an interesting bug that came about as a result of a customer working around a limitation in our product.&amp;#xA0; In our 2005 release, we do not support the direction property on chart axis titles.&amp;#xA0; The work-around is to use textboxes placed outside the chart that have direction set.&amp;#xA0; This bug (and its sister) were discovered when we tried to implement the work-around.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5496679" width="1" height="1"&gt;</content><author><name>donovani</name><uri>http://blogs.msdn.com/members/donovani.aspx</uri></author><category term="Reporting Services" scheme="http://blogs.msdn.com/donovans/archive/tags/Reporting+Services/default.aspx" /></entry><entry><title>Rendering reports via Url Access</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/archive/2007/10/12/rendering-reports-via-url-access.aspx" /><id>http://blogs.msdn.com/donovans/archive/2007/10/12/rendering-reports-via-url-access.aspx</id><published>2007-10-13T01:15:54Z</published><updated>2007-10-13T01:15:54Z</updated><content type="html">&lt;p&gt;Querying Reporting Services for a report couldn't be easier with Url Access (&lt;a title="http://msdn2.microsoft.com/en-us/library/ms153586.aspx" href="http://msdn2.microsoft.com/en-us/library/ms153586.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms153586.aspx&lt;/a&gt;).&amp;#xA0; For example: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 10pt; color: #2b91af; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt;String&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt; report = &lt;span style="color: #a31515"&gt;&amp;quot;/Folder/Report&amp;quot;&lt;/span&gt;;         &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2b91af; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt;String&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt; filename = &lt;span style="color: #a31515"&gt;&amp;quot;Report.pdf&amp;quot;&lt;/span&gt;;         &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2b91af; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt;List&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;String&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;&amp;gt;&amp;gt; parameters =         &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;String&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;&amp;gt;&amp;gt;();         &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt;parameters.Add(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;String&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;&amp;gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Param1&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Value1&amp;quot;&lt;/span&gt;));         &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt;parameters.Add(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;String&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;&amp;gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Param2:isnull&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;));         &lt;br /&gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt;System.Net.&lt;span style="color: #2b91af"&gt;WebClient&lt;/span&gt; client = &lt;span style="color: blue"&gt;new&lt;/span&gt; System.Net.&lt;span style="color: #2b91af"&gt;WebClient&lt;/span&gt;();         &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt;client.Credentials = System.Net.&lt;span style="color: #2b91af"&gt;CredentialCache&lt;/span&gt;.DefaultCredentials;         &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2b91af; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt;String&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt; url = &lt;span style="color: #a31515"&gt;&amp;quot;http://localhost/reportserver?&amp;quot;&lt;/span&gt; +         &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; report + &lt;span style="color: #a31515"&gt;&amp;quot;&amp;amp;rs:Command=Render&amp;amp;rs:Format=PDF&amp;quot;&lt;/span&gt;;         &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt;foreach&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt; (&lt;span style="color: #2b91af"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;String&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;&amp;gt; parameter &lt;span style="color: blue"&gt;in&lt;/span&gt; parameters)         &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/span&gt;url += &lt;span style="color: #a31515"&gt;&amp;quot;&amp;amp;&amp;quot;&lt;/span&gt; + parameter.Key + &lt;span style="color: #a31515"&gt;&amp;quot;=&amp;quot;&lt;/span&gt; + parameter.Value;         &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: " mso-bidi-font-family:="mso-bidi-font-family:" verdana?,?sans-serif?;="verdana?,?sans-serif?;" arial?="Arial?"&gt;client.DownloadFile(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Uri&lt;/span&gt;(url), filename); &lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5430177" width="1" height="1"&gt;</content><author><name>donovani</name><uri>http://blogs.msdn.com/members/donovani.aspx</uri></author><category term="Reporting Services" scheme="http://blogs.msdn.com/donovans/archive/tags/Reporting+Services/default.aspx" /></entry><entry><title>Unit testing a Katmai Reporting Services renderer</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/archive/2007/09/25/unit-testing-a-katmai-reporting-services-renderer.aspx" /><id>http://blogs.msdn.com/donovans/archive/2007/09/25/unit-testing-a-katmai-reporting-services-renderer.aspx</id><published>2007-09-26T02:09:00Z</published><updated>2007-09-26T02:09:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;I am in the process of documenting the way my Katmai unit tests work.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;There’s nothing inventive about them – they are straightforward and meant to get the job done.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I use the VSTS unit runner which works though not particularly well.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I do not go through the machinations of using and keeping up to date the VSTS method of accessing private/internal type members.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Instead, I use partial classes as described below.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I also use mock objects to make things easy that would otherwise be difficult to test, for instance doing away with having to maintain “baseline” TIFF files that describe the correct rendering of a given report.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Attempting to maintain bit-perfect baselines is generally an exercise in frustration – mock objects are so much better in a majority of cases.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;My two primary frustrations with unit testing using the built-in VSTS infrastructure is how slow the runner is and how painful it is to run a single test or group of tests.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;VSTS Orcas is making great headway on both of these issues and I’m willing to slog it out in VS2005 a while longer until Orcas RTMs.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;The way the Katmai image-based renderers work is fairly straightforward.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;There is a &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Renderer&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; class which walks a report layout tree and sends commands to a writer class.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;There are currently 3 writer classes in this assembly – one for compatibility with the WinForms control we shipped in Visual Studio 2005, one for PDF, and one for images (TIFF, EMF-printing, JPG, etc).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The writer classes accept basic commands (start a new page, draw a line, write some text) and translates them into format-specific output.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Taking the following example&amp;nbsp;&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;ImageWriter&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; class:&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; MARGIN-LEFT: 9pt; BORDER-LEFT: windowtext 1pt solid; MARGIN-RIGHT: 9pt; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-shadow: yes"&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;internal&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;partial sealed&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;ImageWriter&lt;BR&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;{&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;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Graphics&lt;/SPAN&gt;&lt;FONT color=#000000&gt; m_graphics;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 10pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;internal&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; DrawString(...);&lt;BR&gt;}&lt;SPAN style="COLOR: #2b91af"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;When the &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Renderer&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; class comes to a textbox, it calls into &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;ImageWriter&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;.&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;DrawString&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;, passing in font, color, and text information.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;DrawString&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; then calls into &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;System.Drawing.Graphics&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;.&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;DrawString&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; via the &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;m_graphics&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; member.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;To test this interaction, since the class is &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;internal&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; to the ImageRenderer assembly, I need to add the source file containing the &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;ImageWriter&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; class directly into my VSTS test project.&amp;nbsp; &lt;/FONT&gt;&lt;FONT face=Calibri size=3&gt;Now I can write a test that mimics the &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Renderer&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; call into the writer:&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; MARGIN-LEFT: 9pt; BORDER-LEFT: windowtext 1pt solid; MARGIN-RIGHT: 9pt; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-shadow: yes"&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;TestMethod&lt;/SPAN&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; Test_DrawString()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Renderer&lt;/SPAN&gt; renderer = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Renderer&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;renderer.ImageWriter.DrawString(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Font&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"Arial"&lt;/SPAN&gt;, 10f), &lt;SPAN style="COLOR: #2b91af"&gt;Color&lt;/SPAN&gt;.Black,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #a31515"&gt;"Test String"&lt;/SPAN&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;RectangleF&lt;/SPAN&gt;(0f, 0f, 10f, 10f));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;To verify that &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;ImageWriter&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; is indeed calling &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Graphics&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;.&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;DrawString&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;, we can use a simple mock &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Graphics&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; object.&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; MARGIN-LEFT: 9pt; BORDER-LEFT: windowtext 1pt solid; MARGIN-RIGHT: 9pt; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-shadow: yes"&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;internal&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;sealed&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Graphics&lt;BR&gt;&lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;internal&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Queue&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;MethodInvocation&lt;/SPAN&gt;&amp;gt; MethodInvocations;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;~Graphics()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;Dispose();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; Dispose()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (MethodInvocations!= &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Assert&lt;/SPAN&gt;.AreEqual&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;Int32&lt;/SPAN&gt;&amp;gt;(0, MethodInvocations.Count,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;"Not all expected methods were invoked"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;MethodInvocations = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;internal&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;override&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void &lt;/SPAN&gt;DrawString(&lt;SPAN style="COLOR: #2b91af"&gt;Font&lt;/SPAN&gt; font, &lt;SPAN style="COLOR: #2b91af"&gt;Color&lt;/SPAN&gt; color,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;String&lt;/SPAN&gt; string, &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;RectangleF&lt;/SPAN&gt; position)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Assert&lt;/SPAN&gt;.IsNotNull(MethodInvocations);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;MethodInvocation&lt;/SPAN&gt; method = MethodInvocations.Dequeue();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;MethodInvocation&lt;/SPAN&gt;.VerifyMethodInvocationsAreEqual(method,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;MethodInvocation&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Object&lt;/SPAN&gt;[]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;{ font, color, string, position }));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;BR&gt;&lt;FONT face=Calibri size=3&gt;The &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;MethodInvocation&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; class stores the method name and parameters for a particular invocation.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The static &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;VerifyMethodInvocationsAreEqual&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; method takes two &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;MethodInvocation&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; objects and does a deep comparison of them.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Getting access to the private &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Graphics&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; object is where partial classes come in.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;My main &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;ImageWriter&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; class is tagged &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;partial&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; so I can extend it in my unit test source file and wrap access to private members:&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; MARGIN-LEFT: 9pt; BORDER-LEFT: windowtext 1pt solid; MARGIN-RIGHT: 9pt; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-shadow: yes"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;internal&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;sealed&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;partial&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ImageWriter&lt;/SPAN&gt;&lt;/SPAN&gt; 
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;internal&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Graphics&lt;/SPAN&gt; Test_m_graphics&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;get &lt;/SPAN&gt;{ &lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; m_graphics; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;set &lt;/SPAN&gt;{ m_graphics = &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;BR&gt;&lt;FONT face=Calibri size=3&gt;Updating the test method to use this wrapper and the mock object is now easy:&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; MARGIN-LEFT: 9pt; BORDER-LEFT: windowtext 1pt solid; MARGIN-RIGHT: 9pt; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-shadow: yes"&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;TestMethod&lt;/SPAN&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; Test_DrawString()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Renderer&lt;/SPAN&gt; renderer = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Renderer&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;using(&lt;SPAN style="COLOR: #2b91af"&gt;Graphics&lt;/SPAN&gt; graphics = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Graphics&lt;/SPAN&gt;())&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;renderer.Test_m_graphics = graphics;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Queue&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;MethodInvocation&lt;/SPAN&gt;&amp;gt; methodList =&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Queue&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;MethodInvocation&lt;/SPAN&gt;&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;methodList.Enqueue(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;MethodInvocation&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"DrawString"&lt;/SPAN&gt;,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Object&lt;/SPAN&gt;[]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;{ &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Font&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"Arial"&lt;/SPAN&gt;, 10f), &lt;SPAN style="COLOR: #2b91af"&gt;Color&lt;/SPAN&gt;.Black, &lt;SPAN style="COLOR: #a31515"&gt;"Test String"&lt;/SPAN&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;RectangleF&lt;/SPAN&gt;(0f, 0f, 10f, 10f) }));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;renderer.Graphics.MethodInvocations = methodList;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;renderer.ImageWriter.DrawString(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Font&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"Arial"&lt;/SPAN&gt;, 10f), &lt;SPAN style="COLOR: #2b91af"&gt;Color&lt;/SPAN&gt;.Black,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #a31515"&gt;"Test String"&lt;/SPAN&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;RectangleF&lt;/SPAN&gt;(0f, 0f, 10f, 10f));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-layout-grid-align: none; mso-border-shadow: yes; mso-border-alt: solid windowtext 1.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;BR&gt;&lt;FONT face=Calibri size=3&gt;Test methods like this are easy to create and easy to understand.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The biggest downside I see is that the assert phase of the &lt;/FONT&gt;&lt;A href="http://weblogs.java.net/blog/wwake/archive/2003/12/" mce_href="http://weblogs.java.net/blog/wwake/archive/2003/12/"&gt;&lt;FONT face=Calibri size=3&gt;AAA pattern&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; is not immediately obvious, especially to someone not used to the C# using () statement.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;With that caveat, however, I like the way this flows and it just feels natural to me.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;And I think that’s the key to unit testing.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It has to be easy to do, easy to maintain and fit naturally into your development style.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If not, it will languish and become useless.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Stale tests that either don’t compile or, worse yet, give false positives, are worse than no tests at all.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5130925" width="1" height="1"&gt;</content><author><name>donovani</name><uri>http://blogs.msdn.com/members/donovani.aspx</uri></author><category term="Visual Studio" scheme="http://blogs.msdn.com/donovans/archive/tags/Visual+Studio/default.aspx" /><category term="Reporting Services" scheme="http://blogs.msdn.com/donovans/archive/tags/Reporting+Services/default.aspx" /></entry><entry><title>PowerPoint Branching</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/archive/2007/09/24/powerpoint-branching.aspx" /><id>http://blogs.msdn.com/donovans/archive/2007/09/24/powerpoint-branching.aspx</id><published>2007-09-25T02:46:58Z</published><updated>2007-09-25T02:46:58Z</updated><content type="html">&lt;ul&gt; &lt;p&gt;I was experimenting with using PowerPoint to create self-guided training material and discovered the ability to custom slide shows.&amp;nbsp; I don't know a whole lot about creating sophisticated PowerPoint decks, but this is a pretty nifty technique that is simple to apply.&amp;nbsp; It allows PowerPoint shows to contain a rudimentary branching effect. &lt;p&gt;If we think of the flow through our deck as a graph: &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="134" alt="clip_image001" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/PowerPointBranching_EBCB/clip_image001_3.png" width="522" border="0"&gt; &lt;p&gt;We can mark a certain set of slides as defining a custom slide show.&amp;nbsp; For the above diagram, we would create the "Equation" branch and the "Describe" branch as well as a branch per "Learning Style".&amp;nbsp; Do this by:&lt;/p&gt; &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="190" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/PowerPointBranching_EBCB/clip_image002_3.png" width="305" border="0"&gt;&lt;/p&gt; &lt;p&gt;And create your new slide shows by selecting the appropriate set of slides from your current deck: &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="227" alt="clip_image003" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/PowerPointBranching_EBCB/clip_image003_3.png" width="415" border="0"&gt; &lt;p&gt;Next, go to each page where branching is possible, choose the text you want to launch the slide show, and add an action for it: &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="95" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/PowerPointBranching_EBCB/clip_image004_3.png" width="244" border="0"&gt; &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="167" alt="clip_image005" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/PowerPointBranching_EBCB/clip_image005_3.png" width="367" border="0"&gt; &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="226" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/PowerPointBranching_EBCB/clip_image006_3.png" width="345" border="0"&gt; &lt;p&gt;Be sure and check the Show and Return box when choosing a custom show action.&amp;nbsp; If you don't the slide show will end as soon as the current branch is done. &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="40" alt="clip_image007" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/PowerPointBranching_EBCB/clip_image007_3.png" width="298" border="0"&gt; &lt;p&gt;If there is more than one level of branching is used, use breadcrumbs to let learners keep track of where they are and how to get back in case they want to change one of their choices or go down more than one path. Here I placed them in the page footers: &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="131" alt="clip_image008" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/PowerPointBranching_EBCB/clip_image008_3.png" width="274" border="0"&gt; &lt;p&gt;This is an interesting technique but it certainly has some rough edges.&amp;nbsp; For the trainer's part, keeping all the links updated is a pain for larger decks.&amp;nbsp; Putting links in footer text is a page-by-page endeavor as far as I can tell. &lt;p&gt;It is possible to define the action of a click to be opening another PowerPoint file.&amp;nbsp; This might make maintenance of larger decks easier, though I'm not sure how well breadcrumbs would work.&amp;nbsp; It would also make shared slides more difficult to maintain.&lt;/p&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5108735" width="1" height="1"&gt;</content><author><name>donovani</name><uri>http://blogs.msdn.com/members/donovani.aspx</uri></author><category term="Teaching" scheme="http://blogs.msdn.com/donovans/archive/tags/Teaching/default.aspx" /></entry><entry><title>Home wireless network</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/archive/2007/08/22/home-wireless-network.aspx" /><id>http://blogs.msdn.com/donovans/archive/2007/08/22/home-wireless-network.aspx</id><published>2007-08-22T10:06:55Z</published><updated>2007-08-22T10:06:55Z</updated><content type="html">&lt;p&gt;A week or so ago, I finally upgraded my home wireless network to 54MBit/s via &lt;a href="http://en.wikipedia.org/wiki/802.11#802.11g" target="_blank"&gt;802.11g&lt;/a&gt;.&amp;nbsp; A bit of research led me to choose a &lt;a href="http://www.linksys.com/servlet/Satellite?c=L_Product_C2&amp;amp;childpagename=US%2FLayout&amp;amp;cid=1133202177241&amp;amp;pagename=Linksys%2FCommon%2FVisitorWrapper&amp;amp;lid=7724139789B08" target="_blank"&gt;Linksys WRT54GL&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/WRT54G#WRT54GL" target="_blank"&gt;v1.1&lt;/a&gt; router.&amp;nbsp; The stock firmware didn't support some of the features I wanted (like using DHCP to assign static IPs based upon MAC address) but there are several &lt;a href="http://en.wikipedia.org/wiki/WRT54G#Third-party_firmware_projects" target="_blank"&gt;third party open source firmware projects&lt;/a&gt; for the WRT54GL and it was&amp;nbsp;fairly easy to find a stable firmware with support for the feature set&amp;nbsp;I wanted.&amp;nbsp; I ended up going with &lt;a href="http://www.dd-wrt.com/dd-wrtv2/ddwrt.php" target="_blank"&gt;DD-WRT&lt;/a&gt; because of its features, available documentation,&amp;nbsp;and activity level of their forums.&lt;/p&gt; &lt;p&gt;I did come across two gotchas, however:&lt;/p&gt; &lt;p&gt;First, I have internet phone service through Comcast and the &lt;a href="http://www.arrisi.com/product_catalog/listers/index.asp?id=385" target="_blank"&gt;Arris phone/cable modem&lt;/a&gt; they supply locks on to a particular MAC address.&amp;nbsp; After I unplugged it from my previous router, I had to power cycle the modem before I could use the internet.&lt;/p&gt; &lt;p&gt;Second, I was having a problem where after several hours the router seemed to go off into never-never land.&amp;nbsp; Browsing the internet or even trying to bring up the router administration pages timed out until I reset the router.&amp;nbsp; Turns out I was using up all of the active IP connections buffer.&amp;nbsp; Bumping the buffer from 512 connections to the max of 4096 cleared up the issue.&amp;nbsp; To help keep the buffer cleaner, I also decreased the TCP and UDP timeouts.&lt;/p&gt; &lt;p&gt;Putting those gotchas behind me, the router is working like a champ and should easily last me until it's time to upgrade to &lt;a href="http://en.wikipedia.org/wiki/802.11#802.11n" target="_blank"&gt;802.11n&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4506088" width="1" height="1"&gt;</content><author><name>donovani</name><uri>http://blogs.msdn.com/members/donovani.aspx</uri></author><category term="Hardware" scheme="http://blogs.msdn.com/donovans/archive/tags/Hardware/default.aspx" /></entry><entry><title>Vista: Open Command Window Here</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/archive/2007/08/01/vista-open-command-window-here.aspx" /><id>http://blogs.msdn.com/donovans/archive/2007/08/01/vista-open-command-window-here.aspx</id><published>2007-08-02T00:09:34Z</published><updated>2007-08-02T00:09:34Z</updated><content type="html">&lt;p&gt;Another useful but hard to discover feature of Vista's Windows Explorer is the ability to shift-right-click on a folder and launch a command window at that path:&lt;/p&gt; &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="226" alt="2007-08-01 Open Command Window Here" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/VistaOpenCommandWindowHere_C71A/2007-08-01%20Open%20Command%20Window%20Here_1.png" width="256" border="0"&gt; &lt;/p&gt; &lt;p&gt;Note that this trick only works in the viewing pane and not in the tree view.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4175935" width="1" height="1"&gt;</content><author><name>donovani</name><uri>http://blogs.msdn.com/members/donovani.aspx</uri></author><category term="Vista" scheme="http://blogs.msdn.com/donovans/archive/tags/Vista/default.aspx" /></entry><entry><title>Vista: Copy as Path</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/archive/2007/08/01/vista-copy-as-path.aspx" /><id>http://blogs.msdn.com/donovans/archive/2007/08/01/vista-copy-as-path.aspx</id><published>2007-08-01T19:43:21Z</published><updated>2007-08-01T19:43:21Z</updated><content type="html">&lt;p&gt;Useful but hard to discover feature in Vista.&amp;nbsp; To copy&amp;nbsp;a filename with full path information to the clipboard, shift-right-click on a file and choose Copy as Path.&amp;nbsp; For example:&lt;/p&gt; &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="285" alt="2007-08-01 Copy as Path" src="http://blogs.msdn.com/blogfiles/donovans/WindowsLiveWriter/VistaCopyasPath_88B2/2007-08-01%20Copy%20as%20Path_1.png" width="228" border="0"&gt; &lt;/p&gt; &lt;p&gt;Copies the following to my clipboard:&lt;/p&gt; &lt;p&gt;"C:\dump\Reports\10435.rdl"&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4173019" width="1" height="1"&gt;</content><author><name>donovani</name><uri>http://blogs.msdn.com/members/donovani.aspx</uri></author><category term="Vista" scheme="http://blogs.msdn.com/donovans/archive/tags/Vista/default.aspx" /></entry><entry><title>Reporting Services: PDF Renderer FAQ, part 2</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/donovans/archive/2007/07/20/reporting-services-pdf-renderer-faq-part-2.aspx" /><id>http://blogs.msdn.com/donovans/archive/2007/07/20/reporting-services-pdf-renderer-faq-part-2.aspx</id><published>2007-07-21T00:49:41Z</published><updated>2007-07-21T00:49:41Z</updated><content type="html">&lt;p&gt;&lt;/p&gt; &lt;p&gt;This is a continuation of my work on&amp;nbsp;FAQ for the PDF renderer.&amp;nbsp; A compiled version of these postings will will live at &lt;a href="http://blogs.msdn.com/donovans/pages/reporting-services-pdf-renderer-faq.aspx"&gt;http://blogs.msdn.com/donovans/pages/reporting-services-pdf-renderer-faq.aspx&lt;/a&gt;.&lt;/p&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;File Size&lt;/h2&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h3&gt;Why are the PDFs exported from the Win/WebForms control so large?&lt;/h3&gt; &lt;p&gt;Compression of the PDF document is not supported in Visual Studio 2005 &lt;a href="http://msdn2.microsoft.com/en-us/library/ms251671(VS.80).aspx"&gt;WinForms or WebForms&lt;/a&gt; controls running in local mode.&amp;nbsp; When these controls run in server mode, this limitation is not present and the server will compress the PDF files.&lt;/p&gt; &lt;p&gt;The controls that will ship with&amp;nbsp;Visual Studio 2008 will not have this limitation, however they will not be able to compress as well as PDF files generated on the server.&amp;nbsp; These controls will make use of the .NET System.IO.Compression classes which are not as efficient as the native compression libraries the server uses.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;I'm not using the controls in local mode and my PDFs are still big.&amp;nbsp; Why?&lt;/h3&gt; &lt;p&gt;If your PDF contains charts or PNG images, those images may be translated into bitmaps before being added to the PDF file.&amp;nbsp; Although this bitmap data will be recompressed, it will not be as space efficient as the original image.&amp;nbsp; To avoid this translation, use JPEG images or PNG files of color type 3 (PNG color&amp;nbsp;type information can be found at &lt;a title="http://en.wikipedia.org/wiki/PNG" href="http://en.wikipedia.org/wiki/PNG)."&gt;http://en.wikipedia.org/wiki/PNG).&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Prior to Reporting Services 2005 SP1, PNG images of additional color types were allowed.&amp;nbsp; Unfortunately, in order to fix a bug causing some PNGs to appear corrupted when rendered to PDF we needed to add the color type restriction.&amp;nbsp; Even more unfortunate is the fact that charts are sent to the PDF renderer as non-color type 3 PNGs of high DPI.&amp;nbsp; This is certainly a limitation we want to remove in the future but very unlikely it will be fixed in Reporting Services 2005.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3981049" width="1" height="1"&gt;</content><author><name>donovani</name><uri>http://blogs.msdn.com/members/donovani.aspx</uri></author><category term="Reporting Services" scheme="http://blogs.msdn.com/donovans/archive/tags/Reporting+Services/default.aspx" /></entry></feed>