<?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">ToddHa's WebLog</title><subtitle type="html">Musings, notions, thoughts about technology and software.</subtitle><id>http://blogs.msdn.com/toddha/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/toddha/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2007-10-22T20:28:41Z</updated><entry><title>Live Mesh for Mac tip : Quickly Add New Folders to your Mesh</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/archive/2008/11/06/live-mesh-for-mac-tip-quickly-add-new-folders-to-your-mesh.aspx" /><id>http://blogs.msdn.com/toddha/archive/2008/11/06/live-mesh-for-mac-tip-quickly-add-new-folders-to-your-mesh.aspx</id><published>2008-11-07T00:12:53Z</published><updated>2008-11-07T00:12:53Z</updated><content type="html">&lt;p&gt;Here's a tip on how to quickly add an existing folder to your Mesh.&lt;/p&gt;  &lt;p&gt;1. Make sure Live Mesh is running, signed in, and the device has been added to your Mesh. (this is the basic stuff)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/toddha/WindowsLiveWriter/LiveMeshforMactipQuicklyAddNewFolderstoy_B9B5/picture1_4.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="picture1" src="http://blogs.msdn.com/blogfiles/toddha/WindowsLiveWriter/LiveMeshforMactipQuicklyAddNewFolderstoy_B9B5/picture1_thumb_1.png" width="244" height="173" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;2. Select a folder in Finder and drag it to the Live Mesh icon in your dock.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/toddha/WindowsLiveWriter/LiveMeshforMactipQuicklyAddNewFolderstoy_B9B5/picture2_4.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="picture2" src="http://blogs.msdn.com/blogfiles/toddha/WindowsLiveWriter/LiveMeshforMactipQuicklyAddNewFolderstoy_B9B5/picture2_thumb_1.png" width="244" height="123" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3. Click OK.&lt;/p&gt;  &lt;p&gt;That's it!&lt;/p&gt;  &lt;p&gt;&lt;font size="1"&gt;*excuse the crudity of my pictures, I whipped them up in MS Paint. :)&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9050552" width="1" height="1"&gt;</content><author><name>toddha</name><uri>http://blogs.msdn.com/members/toddha.aspx</uri></author><category term="OSX" scheme="http://blogs.msdn.com/toddha/archive/tags/OSX/default.aspx" /><category term="Live Mesh" scheme="http://blogs.msdn.com/toddha/archive/tags/Live+Mesh/default.aspx" /></entry><entry><title>PDC 2008 Sessions</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/archive/2008/10/31/asdf.aspx" /><id>http://blogs.msdn.com/toddha/archive/2008/10/31/asdf.aspx</id><published>2008-10-31T22:12:00Z</published><updated>2008-10-31T22:12:00Z</updated><content type="html">&lt;P&gt;If you didn't get a chance to go to PDC this past week, you can take a watch a bunch (all?) of the sesions over at &lt;A href="http://www.microsoftpdc.com/"&gt;MicrosoftPDC.com&lt;/A&gt;. Although I've only watched one so far (I'm working on &lt;A href="http://channel9.msdn.com/pdc2008/BB41/"&gt;this&lt;/A&gt; one right now), I will say I thoroughly enjoyed Daniel Moth's session regarding &lt;A href="http://channel9.msdn.com/pdc2008/TL26/" mce_href="http://channel9.msdn.com/pdc2008/TL26/"&gt;Parallel Programming for Managed Developers with the Next Version of MS Visual Studio&lt;/A&gt;. Note that it requires Silverlight 2.0 installed, but you can install that on your Windows or Mac.&lt;/P&gt;
&lt;P&gt;Personally, I'm going to go through the new Windows 7 sessions, the Live Mesh sessions, and the Windows Home Server sessions.&lt;/P&gt;
&lt;P&gt;Now if I could only figure out a way to watch this on my mobile phone so that I can watch it on my hour long bus ride back and forth to work every day... Sure, they have WiFi on our buses, but I rarely want to whip out my laptop and wedge it between me and the seat in front of me.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9027161" width="1" height="1"&gt;</content><author><name>toddha</name><uri>http://blogs.msdn.com/members/toddha.aspx</uri></author></entry><entry><title>Across the [technological] pond</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/archive/2008/10/09/across-the-technological-pond.aspx" /><id>http://blogs.msdn.com/toddha/archive/2008/10/09/across-the-technological-pond.aspx</id><published>2008-10-09T23:50:00Z</published><updated>2008-10-09T23:50:00Z</updated><content type="html">&lt;P&gt;I haven't been writing much here recently for a few reasons.&lt;/P&gt;
&lt;P&gt;1. Seattle is *very* nice in the summer time. Why stay inside blogging when you can go &lt;A href="http://maps.live.com/default.aspx?v=2&amp;amp;FORM=LMLTCP&amp;amp;cp=ry42774t4qms&amp;amp;style=b&amp;amp;lvl=1&amp;amp;tilt=-90&amp;amp;dir=0&amp;amp;alt=-1000&amp;amp;scene=3695088&amp;amp;phx=0&amp;amp;phy=0&amp;amp;phscl=1&amp;amp;encType=1"&gt;to the Center for Wooden Boats in Lake Union&lt;/A&gt;, &lt;A href="http://maps.live.com/default.aspx?v=2&amp;amp;FORM=LMLTCP&amp;amp;cp=ry19594t4fbm&amp;amp;style=b&amp;amp;lvl=2&amp;amp;tilt=-90&amp;amp;dir=0&amp;amp;alt=-1000&amp;amp;scene=3695600&amp;amp;phx=0&amp;amp;phy=0&amp;amp;phscl=1&amp;amp;encType=1"&gt;Pike Place market&lt;/A&gt;, or &lt;A href="http://maps.live.com/default.aspx?v=2&amp;amp;FORM=LMLTCP&amp;amp;cp=47.624157~-122.504447&amp;amp;style=r&amp;amp;lvl=15&amp;amp;tilt=-90&amp;amp;dir=0&amp;amp;alt=-1000&amp;amp;scene=3702619&amp;amp;phx=0&amp;amp;phy=0&amp;amp;phscl=1&amp;amp;encType=1"&gt;take a ferry to Bainbridge&lt;/A&gt;?&lt;/P&gt;
&lt;P&gt;2. Got married. We got married back home in Kansas City which took a while to plan for, especially since we were doing it all long distance. Afterwards we went to San Francisco for a few days and took the &lt;A href="http://www.amtrak.com/servlet/ContentServer?pagename=Amtrak/am2Route/Vertical_Route_Page&amp;amp;c=am2Route&amp;amp;cid=1081256321841&amp;amp;ssid=135" mce_href="http://www.amtrak.com/servlet/ContentServer?pagename=Amtrak/am2Route/Vertical_Route_Page&amp;amp;c=am2Route&amp;amp;cid=1081256321841&amp;amp;ssid=135"&gt;Coast Starlight&lt;/A&gt; train back. It's a very pretty ride, but I recommend you get a sleeper car. It's hard to sleep in coach and you don't get all the dining benefits the sleeper car has.&lt;/P&gt;
&lt;P&gt;3. Changed jobs. I'm working on the Mac client for &lt;A href="http://www.mesh.com/" mce_href="http://www.mesh.com"&gt;Live Mesh&lt;/A&gt;. I found the perfect job; not only do I get to work on UI and client code, but I get to spend my day on Macs (and sometimes PCs). Sure, compared to what I'm used to, the APIs are all different, the language is different, the OS is different, but that's the fun of it.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8993319" width="1" height="1"&gt;</content><author><name>toddha</name><uri>http://blogs.msdn.com/members/toddha.aspx</uri></author><category term="Personal" scheme="http://blogs.msdn.com/toddha/archive/tags/Personal/default.aspx" /><category term="Objective-C" scheme="http://blogs.msdn.com/toddha/archive/tags/Objective-C/default.aspx" /><category term="Programming" scheme="http://blogs.msdn.com/toddha/archive/tags/Programming/default.aspx" /><category term="OSX" scheme="http://blogs.msdn.com/toddha/archive/tags/OSX/default.aspx" /><category term="Live Mesh" scheme="http://blogs.msdn.com/toddha/archive/tags/Live+Mesh/default.aspx" /></entry><entry><title>The ABCDs of being understood</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/archive/2008/07/29/the-abcds-of-being-understood.aspx" /><id>http://blogs.msdn.com/toddha/archive/2008/07/29/the-abcds-of-being-understood.aspx</id><published>2008-07-29T20:48:00Z</published><updated>2008-07-29T20:48:00Z</updated><content type="html">&lt;P&gt;A quick note : never say "crud" in a meeting if the thing you are speaking about has anything to do with reading or writing data.&lt;/P&gt;
&lt;P&gt;For example, I was just in a meeting when somebody said, "This does a lot of crud...there's all this crud here...". In the picture were a few data components, and he was literally (I think) using the term "crud" to refer to "stuff".&amp;nbsp;The problem is&amp;nbsp;I had to stop try to figure out if he was talking about other components and interworkings in the picture, or if he meant "CRUD" (Create, Read, Update, Delete). This makes listeners focus on the wrong part of what you're trying to say.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Wikipedia : &lt;A class="" href="http://en.wikipedia.org/wiki/Create%2C_read%2C_update_and_delete" mce_href="http://en.wikipedia.org/wiki/Create%2C_read%2C_update_and_delete"&gt;CRUD&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Helpful Thesaurus 101&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Instead of "crud" (in the truest sense of the word), say instead:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;stuff&lt;/LI&gt;
&lt;LI&gt;clutter&lt;/LI&gt;
&lt;LI&gt;things&lt;/LI&gt;
&lt;LI&gt;crap&lt;/LI&gt;
&lt;LI&gt;mess&lt;/LI&gt;
&lt;LI&gt;interworkings&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;On the flip side, Instead of "CRUD", say instead:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;[data] operations&lt;/LI&gt;
&lt;LI&gt;data management&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;[I hate explaining things like this, but the title is a play off of "The ABCs of ..." and "ABCD", which is a synonym for CRUD, and stands for Add, Browse, Change, Delete.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8789534" width="1" height="1"&gt;</content><author><name>toddha</name><uri>http://blogs.msdn.com/members/toddha.aspx</uri></author></entry><entry><title>High Contrast Settings for Visual Studio</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/archive/2008/07/02/high-contrast-settings-for-visual-studio.aspx" /><id>http://blogs.msdn.com/toddha/archive/2008/07/02/high-contrast-settings-for-visual-studio.aspx</id><published>2008-07-02T20:04:27Z</published><updated>2008-07-02T20:04:27Z</updated><content type="html">&lt;p&gt;Every person has a set of tools and whatnot for their development environment that they use &amp;amp; have grown accustomed to. For example, a couple of (publicly available) tools that I use day in and day out are &lt;a href="http://textpad.com" target="_blank"&gt;TextPad&lt;/a&gt; and &lt;a href="http://www.scootersoftware.com/" target="_blank"&gt;Beyond Compare&lt;/a&gt;. Another &amp;quot;tool&amp;quot; that I absolutely have to have is my Visual Studio font settings. At the end of the day, they look like this:&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/toddha/WindowsLiveWriter/HighContrast_8C1E/Capture.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="480" alt="Capture" src="http://blogs.msdn.com/blogfiles/toddha/WindowsLiveWriter/HighContrast_8C1E/Capture_thumb.png" width="610" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;(Note that the code is actually for one of my work-in-progress side projects--a card game--and not Microsoft code).&lt;/p&gt;  &lt;p&gt;As you can see, it's white on black, as opposed to the standard black on white schema. It makes it much easier for my eyes to see. The font settings are still a work in progress as well, but as I haven't really touched them in a while, I'm posting them here. They theoretically should work in all versions of Visual Studio 2008, but no promises.&lt;/p&gt;  &lt;p&gt;&lt;code&gt;&amp;lt;UserSettings&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ApplicationIdentity version=&amp;quot;9.0&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ToolsOptions&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ToolsOptionsCategory name=&amp;quot;Environment&amp;quot; RegisteredName=&amp;quot;Environment&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ToolsOptions&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Category name=&amp;quot;Environment_Group&amp;quot; RegisteredName=&amp;quot;Environment_Group&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Category name=&amp;quot;Environment_FontsAndColors&amp;quot; Category=&amp;quot;{1EDA5DD4-927A-43a7-810E-7FD247D0DA1D}&amp;quot; Package=&amp;quot;{DA9FB551-C724-11d0-AE1F-00A0C90FFFC3}&amp;quot; RegisteredName=&amp;quot;Environment_FontsAndColors&amp;quot; PackageName=&amp;quot;Visual Studio Environment Package&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;PropertyValue name=&amp;quot;Version&amp;quot;&amp;gt;2&amp;lt;/PropertyValue&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;FontsAndColors Version=&amp;quot;2.0&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Categories&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Category GUID=&amp;quot;{358463D0-D084-400F-997E-A34FC570BC72}&amp;quot; FontIsDefault=&amp;quot;Yes&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;SelectedText&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;ChangedText&amp;quot; Foreground=&amp;quot;0x000000FF&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Category&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Category GUID=&amp;quot;{40660F54-80FA-4375-89A3-8D06AA954EBA}&amp;quot; FontIsDefault=&amp;quot;Yes&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Plain Text&amp;quot; Foreground=&amp;quot;0x00FFFFFF&amp;quot; Background=&amp;quot;0x00000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Selected Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Inactive Selected Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Category&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Category GUID=&amp;quot;{5C48B2CB-0366-4FBF-9786-0BB37E945687}&amp;quot; FontIsDefault=&amp;quot;Yes&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Plain Text&amp;quot; Foreground=&amp;quot;0x00FFFFFF&amp;quot; Background=&amp;quot;0x00000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Selected Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Inactive Selected Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Current list location&amp;quot; Foreground=&amp;quot;0x00A3DBFF&amp;quot; Background=&amp;quot;0x01000007&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Category&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Category GUID=&amp;quot;{6BB65C5A-2F31-4BDE-9F48-8A38DC0C63E7}&amp;quot; FontIsDefault=&amp;quot;Yes&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Plain Text&amp;quot; Foreground=&amp;quot;0x00FFFFFF&amp;quot; Background=&amp;quot;0x00000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Selected Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Inactive Selected Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Category&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Category GUID=&amp;quot;{8259ACED-490A-41B3-A0FB-64C842CCDC80}&amp;quot; FontIsDefault=&amp;quot;Yes&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;SelectedText&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;ChangedText&amp;quot; Foreground=&amp;quot;0x000000FF&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Category&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Category GUID=&amp;quot;{9973EFDF-317D-431C-8BC1-5E88CBFD4F7F}&amp;quot; FontIsDefault=&amp;quot;Yes&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Plain Text&amp;quot; Foreground=&amp;quot;0x00FFFFFF&amp;quot; Background=&amp;quot;0x00000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Selected Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Inactive Selected Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Current list location&amp;quot; Foreground=&amp;quot;0x00A3DBFF&amp;quot; Background=&amp;quot;0x01000007&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Category&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Category GUID=&amp;quot;{9E632E6E-D786-4F9A-8D3E-B9398836C784}&amp;quot; FontIsDefault=&amp;quot;Yes&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Plain Text&amp;quot; Foreground=&amp;quot;0x00FFFFFF&amp;quot; Background=&amp;quot;0x00000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Selected Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Inactive Selected Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Category&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Category GUID=&amp;quot;{A27B4E24-A735-4D1D-B8E7-9716E1E3D8E0}&amp;quot; FontName=&amp;quot;Courier New&amp;quot; FontSize=&amp;quot;11&amp;quot; CharSet=&amp;quot;0&amp;quot; FontIsDefault=&amp;quot;No&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Plain Text&amp;quot; Foreground=&amp;quot;0x00FFFFFF&amp;quot; Background=&amp;quot;0x00000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Indicator Margin&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x00808080&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Line Numbers&amp;quot; Foreground=&amp;quot;0x00C0C0C0&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Comment&amp;quot; Foreground=&amp;quot;0x0000FF00&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;CSS Comment&amp;quot; Foreground=&amp;quot;0x0000FF00&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;CSS Keyword&amp;quot; Foreground=&amp;quot;0x00FF5B5B&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;CSS Property Value&amp;quot; Foreground=&amp;quot;0x00FF5B5B&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;CSS String Value&amp;quot; Foreground=&amp;quot;0x00FF5B5B&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Disassembly Symbol&amp;quot; Foreground=&amp;quot;0x00FF0080&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;HTML Comment&amp;quot; Foreground=&amp;quot;0x0000FF00&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Keyword&amp;quot; Foreground=&amp;quot;0x00FF5B5B&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Preprocessor Keyword&amp;quot; Foreground=&amp;quot;0x00FF5B5B&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;String&amp;quot; Foreground=&amp;quot;0x000000FF&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;String(C# @ Verbatim)&amp;quot; Foreground=&amp;quot;0x000000FF&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;User Keywords&amp;quot; Foreground=&amp;quot;0x00FF5B5B&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Visual Basic Read Only Marker&amp;quot; Foreground=&amp;quot;0x00000000&amp;quot; Background=&amp;quot;0x00E6EFEE&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Warning&amp;quot; Foreground=&amp;quot;0x0000FFFF&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;XAML Text&amp;quot; Foreground=&amp;quot;0x00FFFFFF&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;XML Attribute Quotes&amp;quot; Foreground=&amp;quot;0x00FFFFFF&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;XML Attribute Value&amp;quot; Foreground=&amp;quot;0x00FF5B5B&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;XML Delimiter&amp;quot; Foreground=&amp;quot;0x00FF5B5B&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;XML Doc Attribute&amp;quot; Foreground=&amp;quot;0x00C0C0C0&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;XML Doc Comment&amp;quot; Foreground=&amp;quot;0x0000FF00&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;XML Doc Tag&amp;quot; Foreground=&amp;quot;0x00C0C0C0&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;XML Keyword&amp;quot; Foreground=&amp;quot;0x00FF5B5B&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;XML Name&amp;quot; Foreground=&amp;quot;0x000000FF&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;XML Text&amp;quot; Foreground=&amp;quot;0x00FFFFFF&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Category&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Category GUID=&amp;quot;{A7EE6BEE-D0AA-4B2F-AD9D-748276A725F6}&amp;quot; FontIsDefault=&amp;quot;Yes&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;SelectedText&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;ChangedText&amp;quot; Foreground=&amp;quot;0x000000FF&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Category&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Category GUID=&amp;quot;{CE2ECED5-C21C-464C-9B45-15E10E9F9EF9}&amp;quot; FontIsDefault=&amp;quot;Yes&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Plain Text&amp;quot; Foreground=&amp;quot;0x00FFFFFF&amp;quot; Background=&amp;quot;0x00000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Selected Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Inactive Selected Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Category&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Category GUID=&amp;quot;{EE1BE240-4E81-4BEB-8EEA-54322B6B1BF5}&amp;quot; FontIsDefault=&amp;quot;Yes&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Plain Text&amp;quot; Foreground=&amp;quot;0x00FFFFFF&amp;quot; Background=&amp;quot;0x00000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Selected Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Item Name=&amp;quot;Inactive Selected Text&amp;quot; Foreground=&amp;quot;0x02000000&amp;quot; Background=&amp;quot;0x02000000&amp;quot; BoldFont=&amp;quot;No&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Items&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Category&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Categories&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/FontsAndColors&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Category&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Category&amp;gt;       &lt;br /&gt;&amp;lt;/UserSettings&amp;gt;&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;To import the code: &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Copy the above code &amp;amp; paste it into a new file. Save with the extension .vssettings.&lt;/li&gt;    &lt;li&gt;In Visual Studio, go to Tools -&amp;gt; Import and Export Settings.&lt;/li&gt;    &lt;li&gt;Select &amp;quot;Import selected environment settings&amp;quot;.&lt;/li&gt;    &lt;li&gt;Backup your current settings.&lt;/li&gt;    &lt;li&gt;Browse to where you saved the file in step 1. Click Next.&lt;/li&gt;    &lt;li&gt;Ensure that All Settings -&amp;gt; Options -&amp;gt; Environment -&amp;gt; Fonts and Colors is checked.&lt;/li&gt;    &lt;li&gt;Click Finish.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;That should be it!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8681736" width="1" height="1"&gt;</content><author><name>toddha</name><uri>http://blogs.msdn.com/members/toddha.aspx</uri></author><category term="Programming" scheme="http://blogs.msdn.com/toddha/archive/tags/Programming/default.aspx" /><category term="Visual Studio" scheme="http://blogs.msdn.com/toddha/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>Unblock? Try Unzip!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/archive/2008/06/26/faster-way-to-unblock-files-in-explorer.aspx" /><id>http://blogs.msdn.com/toddha/archive/2008/06/26/faster-way-to-unblock-files-in-explorer.aspx</id><published>2008-06-26T23:19:00Z</published><updated>2008-06-26T23:19:00Z</updated><content type="html">&lt;P&gt;I downloaded some files from the internet the other day and it didn't have an installer. I copied them into my Program Files directory (I made a new folder), and created a shortcut to them. Unfortunately, every time I ran the application, I was confronted with a dialog asking me if I really wanted to run this file, as it was downloaded from the internet.&lt;/P&gt;
&lt;P&gt;So what I did is right click the file, click properties, and click "Unblock". This takes a long time, especially if you have a few hundred files to unblock. Also, this won't take effect unless you have permissions to those files. For example, if you install a program (i.e. Process Explorer) and you've already copied it to the program files directory as administrator, and your explorer isn't running as admin, you won't be able to unblock those files. You can click unblock and it will look like it worked, but the next time you right click and click properties, it will still be blocked.&lt;/P&gt;
&lt;P&gt;My solution was to select all of the files &amp;amp; directories I wanted to unblock, right click, add it to a zip file. Delete the old files, and extract the zip file to the same directory structure. All files are now unblocked without having to manually click unblock on each file.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8658158" width="1" height="1"&gt;</content><author><name>toddha</name><uri>http://blogs.msdn.com/members/toddha.aspx</uri></author></entry><entry><title>UnitTest.Musings.Random()</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/archive/2008/06/08/unittest-musings-random.aspx" /><id>http://blogs.msdn.com/toddha/archive/2008/06/08/unittest-musings-random.aspx</id><published>2008-06-08T22:16:41Z</published><updated>2008-06-08T22:16:41Z</updated><content type="html">&lt;p&gt;While I was doing some chores today, I began to have random musings about unit tests. It's strange how one's mind works while doing (mostly) manual labor.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Separating Code Coverage by Target&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;It's hard to get actual code coverage numbers for a specific target (i.e. class) without getting code coverage from others. Normally one writes unit tests to cover a single class. For example, I might have a class which represents a hand of cards, and in that class I might have a function which gets, as a string value, every card in the class :&lt;/p&gt; &lt;code&gt;   &lt;p&gt;public class Hand     &lt;br /&gt;{&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private Card[] cards;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ...       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public override string ToString()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; StringBuilder sb = new StringBuilder();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach (Card card in cards)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sb.Append(card.ToString());       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return sb.ToString();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ...       &lt;br /&gt;}&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;So if I wrote a unit test that covered the &lt;em&gt;ToString&lt;/em&gt; function, I'd also cover a bit of the &lt;em&gt;Card&lt;/em&gt; class. Once you amount a plethora of unit tests, you won't know what you explicitly have unit tests for and what you don't. You might say, well, as long as it's covered, I can see which lines of code aren't and write tests to explicitly cover those. That's not recommended for a few reasons -- like what happens if the code above changes and doesn't call &lt;em&gt;Card::ToString()&lt;/em&gt; anymore? You might not notice that you lost a few percentage of coverage. And then what if &lt;em&gt;Card::ToString&lt;/em&gt; gets a bug introduced that doesn't get caught, because the developers think that the ToString method is called from somewhere else in some other unit test? They may be caring developers and run all unit tests and inspect all of the code coverage numbers before and after, but odds are they won't.&lt;/p&gt;  &lt;p&gt;What you really want is a way to tell the unit tests &amp;quot;Hey, from these set of tests only grab code coverage numbers from this target (i.e. function, class, etc.). I don't want to know about the other things it touches besides what I explicitly say.&amp;quot; It's possible that I could get a large code coverage number simply by calling a simple button-&amp;gt;click!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;100% Code Coverage Myth&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This is a common one, but I'll take a moment and rehash it. 100% code coverage is great, don't get me wrong. But what about the code you didn't write, the case you didn't handle, the data validation exception you didn't think to throw. I can easily get 100% code coverage of the &lt;em&gt;Hand&lt;/em&gt; class above. But what happens if I do something easy to look for, like don't initialize &lt;em&gt;cards&lt;/em&gt;? What if &lt;em&gt;cards&lt;/em&gt; is initialized but the &lt;em&gt;null&lt;/em&gt; is stored in the array at a few positions?&lt;/p&gt;  &lt;p&gt;Again, 100% coverage is great, but it doesn't make me feel any better about the quality of the code. If somebody were to come to me and say that they hit 100% C.C., I'll tell them that their code probably isn't complete. And if it is (which is almost as hard as proving P==NP), then they either spent a lot of time on it, or it's not a whole lot of code.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Good(!!) Unit Tests&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;It's super important to write really good unit tests. By that I mean make sure you verify as much as possible without getting out of the scope of the tests. Don't check side effects in other target (as those might change), but DO check as much as you can in the current target.&lt;/p&gt;  &lt;p&gt;I ran into this problem this week. I was looking to figure out why we had a bug and why we didn't catch it. So I looked at the unit tests that covered the feature that had the bug. I made sure that I wrote a unit test that covered the bug and ran the unit test. For the results, I used some built in functions that did the validation for me. &amp;quot;Interesting...it works! That's not right...&amp;quot; So I debugged it and followed it along. I could see that the data wasn't correct, so I continued tracing to see why it thought it was. I uncovered the following snippet of code (names changed to protect the innocent):&lt;/p&gt; &lt;code&gt;   &lt;p&gt;SomeObject actualItem = datastore.GetObjectById(expectedItem.Id);      &lt;br /&gt;Debug.WriteLine(expectedItem.ToString());       &lt;br /&gt;Debug.WriteLine(actualItem.ToString());       &lt;br /&gt;Assert.IsNotNull(actualItem);&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;Hm. He was checking that the item in the data store exists. But he didn't check that it was actually the correct data. This unit test went ALMOST all of the way, but it looks like the developer forgot to write the critical line :&lt;/p&gt; &lt;code&gt;   &lt;p&gt;Assert.AreEqual&amp;lt;SomeObject&amp;gt;(actualItem, expectedItem);&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;So I added the line to the verification, and found that a half of the unit tests, including my new one, failed. Wow! So I fixed the bug, went back and ran the unit tests again. All still failed! Why? It turns out that I had encountered two more bugs that hadn't been caught yet.&lt;/p&gt;  &lt;p&gt;Hence why writing good(!!) unit tests is important.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;A Unit Test's Brevity&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A coworker and I often challenge each other on this point. I believe that shorter unit tests are better. My idea is to create some basic unit test runtime which you can use to create all of your objects in a few lines of code, which allows you to get quickly to what's really important. Additionally, you may even be able to write functions which simplify the validation of the data. Sure, you could use &lt;em&gt;AreEqual&lt;/em&gt;, but maybe you want to spit out to the debug output what each object is before the &lt;em&gt;AreEqual&lt;/em&gt; call? What if you have to read it from a service? He doesn't have an objection to this part at all. &lt;/p&gt;  &lt;p&gt;However, he believes that writing longer unit tests are better (in general). &amp;quot;While I'm here checking Z, I might as well check W, X, and Y.&amp;quot; That way I can pack it all into one unit test. My argument is that, while checking W, X, and Y while you're checking Z, this is only good if W, X, and Y never change. Plus, you really need separate tests for W, X, and Y. That way if W passes but X and Y don't, you're not debugging through large piles of code. You know &amp;quot;Hey, X didn't pass, so I better take a look at that piece of code first instead of W or Y.&amp;quot; Beyond that, if you're duplicating these unit tests in others, when one validation changes, the others have to change as well -- unless you duplicate it, but then you're duplicating a bunch of hopefully verbose code all over the place. Even putting extra validation function calls often makes it confusing what &lt;strong&gt;&lt;u&gt;exactly&lt;/u&gt;&lt;/strong&gt; the unit test is supposed to be testing. What if the maintainer doesn't understand the unit test's point (due to commenting, naming of the test, etc.) and removes the key validation point that was the actual meat of the unit test? Unit tests being easy to understand is key for maintaining that code.&lt;/p&gt;  &lt;p&gt;Another pretty unimportant thought I just had is that if the unit tests are super beefy, it's POSSIBLE that you'll run past the unit test timeout you've defined, if you follow the point that unit tests should check as much as possible for your target. If it takes 5 seconds to check each object and your unit test is 2 minutes per unit test, you may run out of time.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8583269" width="1" height="1"&gt;</content><author><name>toddha</name><uri>http://blogs.msdn.com/members/toddha.aspx</uri></author></entry><entry><title>A Very Clever URL Joke</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/archive/2008/05/01/a-very-clever-url-joke.aspx" /><id>http://blogs.msdn.com/toddha/archive/2008/05/01/a-very-clever-url-joke.aspx</id><published>2008-05-02T01:01:00Z</published><updated>2008-05-02T01:01:00Z</updated><content type="html">&lt;P&gt;I was randomly browsing XKCD the other day, and saw something funny. If you go to &lt;A href="http://xkcd.com/405/" target=_blank mce_href="http://xkcd.com/405/"&gt;http://xkcd.com/405/&lt;/A&gt; and click on the &lt;I&gt;Previous&lt;/I&gt; button, you're taken to &lt;I&gt;http://xkcd.com/403/&lt;/I&gt;. If you click &lt;EM&gt;Next&lt;/EM&gt; from there you're taken back to &lt;I&gt;http://xkcd.com/405/&lt;/I&gt;. If you click &lt;EM&gt;Previous&lt;/EM&gt; a bunch, you'll see that you're taken to 402, 401, 400, 399, 398, etc. And vice versa for clicking on &lt;I&gt;Next&lt;/I&gt;.&lt;/P&gt;
&lt;P&gt;See anything strange?&lt;/P&gt;
&lt;P&gt;(&lt;A href="http://en.wikipedia.org/wiki/HTTP_404" mce_href="http://en.wikipedia.org/wiki/HTTP_404"&gt;Answer&lt;/A&gt;) :)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8447731" width="1" height="1"&gt;</content><author><name>toddha</name><uri>http://blogs.msdn.com/members/toddha.aspx</uri></author><category term="NonTech Personal" scheme="http://blogs.msdn.com/toddha/archive/tags/NonTech+Personal/default.aspx" /></entry><entry><title>Hello World, Windows Mobile setup style</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/archive/2008/04/22/hello-world-windows-mobile-setup-style.aspx" /><id>http://blogs.msdn.com/toddha/archive/2008/04/22/hello-world-windows-mobile-setup-style.aspx</id><published>2008-04-22T04:28:00Z</published><updated>2008-04-22T04:28:00Z</updated><content type="html">&lt;p&gt;One of the items that I haven't found a whole lot of talk about online or in books is how to write a custom installer for Windows Mobile, so I'm going to briefly talk about how to set one up.&lt;/p&gt;  &lt;p&gt;Why would you want to do this? The reasons seem simple enough, but the reason I ran into this was that I wanted to explicitly check to ensure that the .NET Compact Framework 3.5 was installed on the device before you try to install the application. Note that I don't block you from installing, just let you know that you need it.&lt;/p&gt;  &lt;p&gt;My steps assume a couple of things :    &lt;br /&gt;- you have Visual Studio installed with the Smart Device programmability and C++.     &lt;br /&gt;- you have at least a little knowledge about C++.     &lt;br /&gt;- you can use Visual Studio.     &lt;br /&gt;- you have an existing solution with a Smart Device CAB project (found under &amp;quot;Other Project Types, &amp;quot;Smart Device CAB project&amp;quot;).&lt;/p&gt;  &lt;p&gt;Add a new project to your solution. Under &amp;quot;Other Languages&amp;quot;, &amp;quot;Visual C++&amp;quot;, &amp;quot;Win32 Smart Device Project.&amp;quot;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/toddha/WindowsLiveWriter/CustomSetupActionsforWindowsMobile_FD59/EmptyProject_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="127" alt="EmptyProject" src="http://blogs.msdn.com/blogfiles/toddha/WindowsLiveWriter/CustomSetupActionsforWindowsMobile_FD59/EmptyProject_thumb.png" width="244" align="right" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A wizard will appear. Pick your platform of choice. On the next page, pick the application type of &amp;quot;DLL&amp;quot; and check the &amp;quot;Empty Project&amp;quot; text box. Click finish, and you should end up with something like what's shown.&lt;/p&gt;  &lt;p&gt;Right click the Source Files and add a new item. Pick &amp;quot;Module-Definition File (.def)&amp;quot; and enter a name. I picked Exports.def. Open this file and add the following:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;EXPORTS      &lt;br /&gt;      &lt;br /&gt;Install_Init       &lt;br /&gt;Install_Exit       &lt;br /&gt;Uninstall_Init       &lt;br /&gt;Uninstall_Exit&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Save and close the file. Add another source file; this time make it a C++ File (.cpp). I named mine Installer.cpp. Open and paste the following code. This code defines the 4 exports we defined earlier.&lt;/p&gt;  &lt;p&gt;&lt;code&gt;#include &amp;lt;windows.h&amp;gt;&lt;windows.h&gt;     &lt;br /&gt;#include &amp;quot;ce_setup.h&amp;quot;      &lt;br /&gt;      &lt;br /&gt;codeINSTALL_INIT       &lt;br /&gt;&lt;/code&gt;&lt;code&gt;Install_Init(     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; HWND hwndParent,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; BOOL fFirstCall,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; BOOL fPreviouslyInstalled,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; LPCTSTR pszInstallDir)      &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; MessageBox(      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; hwndParent,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TEXT(&amp;quot;Hello world!&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TEXT(&amp;quot;Hello world.&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MB_OK);      &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return codeINSTALL_INIT_CONTINUE;       &lt;br /&gt;}      &lt;br /&gt;      &lt;br /&gt;codeINSTALL_EXIT       &lt;br /&gt;Install_Exit(      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; HWND hwndParent,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; LPCTSTR pszInstallDir,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WORD cFailedDirs,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WORD cFailedFiles,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WORD cFailedRegKeys,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WORD cFailedRegVals,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WORD cFailedShortcuts)      &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return codeINSTALL_EXIT_DONE;      &lt;br /&gt;}      &lt;br /&gt;      &lt;br /&gt;codeUNINSTALL_INIT Uninstall_Init(HWND hwndParent, LPCTSTR pszInstallDir)      &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return codeUNINSTALL_INIT_CONTINUE;      &lt;br /&gt;}      &lt;br /&gt;      &lt;br /&gt;codeUNINSTALL_EXIT Uninstall_Exit(HWND hwndParent)      &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return codeUNINSTALL_EXIT_DONE;      &lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Now the previous code doesn't do a whole lot. It simply displays a message box when it starts to install. The four hooks are&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Install is starting.     &lt;br /&gt;2. Install has finished.      &lt;br /&gt;3. Uninstall is starting.      &lt;br /&gt;4. Uninstall has finished.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;All of the function definitions are defined in the &amp;quot;ce_setup.h&amp;quot; file we included earlier. For more information, you can go to (for Windows Mobile 5 Pocket PC) %ProgramFiles%\Windows Mobile 5.0 SDK R2\PocketPC\Include\Arm4vi\ce_setup.h). It explains in details all of the different codes you can return and what they mean.&lt;/p&gt;  &lt;p&gt;At this point everything the C++ project should build.&lt;/p&gt;  &lt;p&gt;We must include the custom setup DLL as one of the items installed. Right click the setup project you have and click View File System. In the Application Folder, Add Project Output of the Primary Output of your C++ project.&lt;/p&gt;  &lt;p&gt;Go back to Solution Explorer and click on the setup project. In the properties window, one of the settings is &amp;quot;CE Setup DLL&amp;quot;. Click this drop down box and click browse. Select the primary output in the Application Folder and click OK.&lt;/p&gt;  &lt;p&gt;Now build and everything should be ready to go! I copied the CAB file over to the emulator and ran it and got the following:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/toddha/WindowsLiveWriter/CustomSetupActionsforWindowsMobile_FD59/Capture.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="378" alt="Capture" src="http://blogs.msdn.com/blogfiles/toddha/WindowsLiveWriter/CustomSetupActionsforWindowsMobile_FD59/Capture_thumb.png" width="250" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;That should give you a basic starting point for writing custom Windows Mobile installers! Note that I chose the Pocket PC as it traditionally is much less locked down than Smartphone. With a non-one tier Smartphone, there are a few more hoops to jump through.&lt;/p&gt;  &lt;p&gt;Fun stuff:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8415807" width="1" height="1"&gt;</content><author><name>toddha</name><uri>http://blogs.msdn.com/members/toddha.aspx</uri></author></entry><entry><title>Subtle mistakes are often the worst</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/archive/2008/04/16/subtle-mistakes-are-often-the-worst.aspx" /><id>http://blogs.msdn.com/toddha/archive/2008/04/16/subtle-mistakes-are-often-the-worst.aspx</id><published>2008-04-16T11:08:32Z</published><updated>2008-04-16T11:08:32Z</updated><content type="html">&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/toddha/WindowsLiveWriter/SubtleMistakesareoftentheworst_DF7/EnvironmentVariables_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="355" alt="EnvironmentVariables" src="http://blogs.msdn.com/blogfiles/toddha/WindowsLiveWriter/SubtleMistakesareoftentheworst_DF7/EnvironmentVariables_thumb.png" width="323" align="right" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;A few weeks ago, I noticed that some of my installs on my laptop started failing. I thought it was odd, but most of the things I install are pre-beta, so I figured that they hadn't yet started to support Windows Server 2008. Some things, out of beta, like Windows Live Writer, don't support 2k8 at all, so my laptop is set up to dual boot between 2k8 and Vista. Strangely enough, the installs were often failing during the very beginning of the setup process. One such install that failed was the Silverlight 2 Beta 1 SDK. &lt;/p&gt;  &lt;p align="left"&gt;&lt;em&gt;[Un?]&lt;/em&gt;Fortunately, it was the first of many installers to actually give me good information and tell me that it couldn't write the installation log to the temp directory. I had plenty of hard drive space, so I took a look at what my environment variables were for TEMP and TMP so I could look at the permissions of that folder.&lt;/p&gt;  &lt;p align="left"&gt;What I saw (and isn't pictured), is that my user variables were set to:&lt;/p&gt;  &lt;p align="left"&gt;TEMP=%USERPROFILE%\AppData\Local\Temp;C:\Progra~1\Python25   &lt;br /&gt;TMP=%USERPROFILE%\AppData\Local\Temp&lt;/p&gt;  &lt;p align="left"&gt;Aha! The problem is so obvious now. A few weeks ago I installed Python. Python doesn't add itself to your path, so if you want to have access to it from anywhere, you need to add the Python install directory to your PATH variable. Apparently, I had tried doing this.&lt;/p&gt;  &lt;p align="left"&gt;Unfortunately, the UI you are presented with could use some ... tweaking. Notice that there are two sets of New, Edit, and Delete buttons, all with different hot keys. If you expect Alt+E to be Edit, you're correct. However, you're incorrect if you think it will edit the item that is selected and focused. When I hit Alt+E, it always edits the selected User variable, regardless of what is focused.&lt;/p&gt;  &lt;p align="left"&gt;It's a pretty poor UI, but fortunately it's one that most mainstream users won't need to see very often, if ever. And all others (like me) should take more time in editing their environment variables to make sure they are correct!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8398771" width="1" height="1"&gt;</content><author><name>toddha</name><uri>http://blogs.msdn.com/members/toddha.aspx</uri></author><category term="Python" scheme="http://blogs.msdn.com/toddha/archive/tags/Python/default.aspx" /><category term="Programming" scheme="http://blogs.msdn.com/toddha/archive/tags/Programming/default.aspx" /><category term="Windows" scheme="http://blogs.msdn.com/toddha/archive/tags/Windows/default.aspx" /></entry><entry><title>By the power of Grayskull!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/archive/2008/04/11/by-the-power-of-grayskull.aspx" /><id>http://blogs.msdn.com/toddha/archive/2008/04/11/by-the-power-of-grayskull.aspx</id><published>2008-04-12T00:30:00Z</published><updated>2008-04-12T00:30:00Z</updated><content type="html">&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;If you spend as much time as I do&amp;nbsp;in Visual Studio TF, there are certain things you may find a tad&amp;nbsp;bit&amp;nbsp;frustrating : timeouts, connecting to the server, etc. Fortunately the Visual Studio guys/gals have come up with a set of power tools which you can download here :&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;Visual Studio Team System 2008 Team Foundation Server Power Tools - December 2007 Release&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=7574836F-4A0B-454F-A340-85DA4698177C&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=7574836F-4A0B-454F-A340-85DA4698177C&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=7574836F-4A0B-454F-A340-85DA4698177C&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;Included of note&lt;BR&gt;-&amp;nbsp;Build Notification System Tray tool&lt;BR&gt;-&amp;nbsp;TFS Best Practices Analyzer&lt;BR&gt;-&amp;nbsp;tfpt command line tool&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;BR&gt;The TFPT command line tool is pretty nice, it includes something called TweakUI, which allows you to set things like timeouts, whether or not to connect to the server on startup, and concurrent connections to the server.&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;I also find the build system tray tool pretty useful, so you're always aware of the build state.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8382259" width="1" height="1"&gt;</content><author><name>toddha</name><uri>http://blogs.msdn.com/members/toddha.aspx</uri></author><category term="Visual Studio" scheme="http://blogs.msdn.com/toddha/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>Changing the default compare tool in Visual Studio TF</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/archive/2008/04/04/changing-the-default-compare-tool-in-visual-studio-tf.aspx" /><id>http://blogs.msdn.com/toddha/archive/2008/04/04/changing-the-default-compare-tool-in-visual-studio-tf.aspx</id><published>2008-04-04T21:49:00Z</published><updated>2008-04-04T21:49:00Z</updated><content type="html">&lt;P&gt;I ran across this today from James Manning's blog and found it insanely useful. The default compare tool in Visual Studio TF is fine but I personally want some more features.&amp;nbsp;If you have your own preferred compare tool, you can plug it in here:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="http://blogs.msdn.com/jmanning/articles/535573.aspx"&gt;http://blogs.msdn.com/jmanning/articles/535573.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Personally, I've been using Beyond Compare 2 for years and love that I can integrate it back into my daily routine.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8357925" width="1" height="1"&gt;</content><author><name>toddha</name><uri>http://blogs.msdn.com/members/toddha.aspx</uri></author><category term="Visual Studio" scheme="http://blogs.msdn.com/toddha/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>Microsoft Codename "Oslo"</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/archive/2008/02/04/microsoft-codename-oslo.aspx" /><id>http://blogs.msdn.com/toddha/archive/2008/02/04/microsoft-codename-oslo.aspx</id><published>2008-02-04T21:10:00Z</published><updated>2008-02-04T21:10:00Z</updated><content type="html">&lt;P&gt;So I may have missed this, but this is what I'm working on.&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.microsoft.com/soa/products/oslo.aspx href="http://www.microsoft.com/soa/products/oslo.aspx" mce_href="http://www.microsoft.com/soa/products/oslo.aspx"&gt;http://www.microsoft.com/soa/products/oslo.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;It's basically a bunch of stuff that ships in:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;- BizTalk Server "version 6"&lt;/P&gt;
&lt;P&gt;- System Center "version 5"&lt;/P&gt;
&lt;P&gt;- Visual Studio "version 10"&lt;/P&gt;
&lt;P&gt;- .NET Framework "version 4"&lt;/P&gt;
&lt;P&gt;- BizTalk Services "version 1"&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;At a high level, we ensure that everything we ship across this release works together, we find pain points early on to drive fixes back into the products before release, and drive new requirements into the teams.&lt;/P&gt;
&lt;P&gt;To understand a bit more, my team's blog is at &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/e2eblog/" mce_href="http://blogs.msdn.com/e2eblog/"&gt;http://blogs.msdn.com/e2eblog/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;There's a post from my PUM talking somewhat about who we are and what we do in more detail.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7443299" width="1" height="1"&gt;</content><author><name>toddha</name><uri>http://blogs.msdn.com/members/toddha.aspx</uri></author><category term="Oslo" scheme="http://blogs.msdn.com/toddha/archive/tags/Oslo/default.aspx" /></entry><entry><title>When Fixes Cause Problems</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/archive/2007/11/30/when-fixes-cause-problems.aspx" /><id>http://blogs.msdn.com/toddha/archive/2007/11/30/when-fixes-cause-problems.aspx</id><published>2007-11-30T04:46:41Z</published><updated>2007-11-30T04:46:41Z</updated><content type="html">&lt;p&gt;&lt;em&gt;Note that there are tons of stories about backwards compatibility; for some of the best go see &lt;/em&gt;&lt;a href="http://blogs.msdn.com/oldnewthing/search.aspx?q=backwards+compat&amp;amp;p=1"&gt;&lt;em&gt;Raymond&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;For a sample application that I'm writing, I'm using .NET CF 3.5. I had upgraded from the version shipped with Visual Studio 2008 Beta2 to the one shipped in VS2k8 RC1, and I hadn't had any problems. Take note, because if you've written some buggy code and are unaware of it, this may affect you, too (perhaps even coming from .NET CF 2.0 code).&lt;/p&gt;  &lt;p&gt;This morning, I upgraded from VS2k8 RC1 to VS2k8 RTM and all of a sudden, none of my network requests were working -- they ALL timed out.&lt;/p&gt;  &lt;p&gt;I kind of freaked out for a bit, thinking that it &lt;strong&gt;couldn't&lt;/strong&gt; have been my code -- I didn't change anything! Plus, as a developer, I've learned the hard and fast rule that it's &lt;strong&gt;never &lt;/strong&gt;my code -- it's always somebody else's. :) However, I was on a new machine, so I hadn't set up ActiveSync to my emulator. I convinced myself that AS was having issues and my PocketPC phone wasn't getting good service.&lt;/p&gt;  &lt;p&gt;An hour or so later, I realized it was my code.&lt;/p&gt;  &lt;p&gt;In my app, I have a rudimentary &lt;a href="http://labs.biztalk.net/connectivity.aspx"&gt;BizTalk Connectivity Services&lt;/a&gt; aware engine (although isn't specific, as it uses simple HTTP PUT/GET/POST) which takes a URL. This URL is given by the user, so there has to be some checking done on it. Mostly, this is done for me by the framework, but the one key addition which I added was checking to ensure that the URL had a trailing '/' at the end.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Thus, &lt;/p&gt;  &lt;p&gt;&lt;code&gt;http://connect.biztalk.net/services/username/service&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;turns into&lt;/p&gt;  &lt;p&gt;&lt;code&gt;http://connect.biztalk.net/services/username/service/&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Then, internally my operations all have corresponding URL I should append to the end. However, the bug in my code was that all of the URL operations START with a forward slash. So after I glued the different pieces of the URL together&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;&amp;quot;http://connect.biztalk.net/services/username/service/&amp;quot; + &amp;quot;/Operation&amp;quot;&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;I would get:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;http://connect.biztalk.net/services/username/service//Operation&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Apparently in the older versions, this would work fine. But in the version shipping with VS2k8 RTM, it won't work. Simple fix, but caused havok with me for a while. Fortunately, I hadn't released it, so it was easy enough to catch and fix.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6606420" width="1" height="1"&gt;</content><author><name>toddha</name><uri>http://blogs.msdn.com/members/toddha.aspx</uri></author><category term="C#" scheme="http://blogs.msdn.com/toddha/archive/tags/C_2300_/default.aspx" /><category term=".NET" scheme="http://blogs.msdn.com/toddha/archive/tags/.NET/default.aspx" /><category term="Programming" scheme="http://blogs.msdn.com/toddha/archive/tags/Programming/default.aspx" /><category term="Windows Mobile" scheme="http://blogs.msdn.com/toddha/archive/tags/Windows+Mobile/default.aspx" /><category term=".NET Compact Framework" scheme="http://blogs.msdn.com/toddha/archive/tags/.NET+Compact+Framework/default.aspx" /></entry><entry><title>Windows Mobile App Feedback</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/toddha/archive/2007/10/22/windows-mobile-app-feedback.aspx" /><id>http://blogs.msdn.com/toddha/archive/2007/10/22/windows-mobile-app-feedback.aspx</id><published>2007-10-22T22:28:41Z</published><updated>2007-10-22T22:28:41Z</updated><content type="html">&lt;p&gt;This is a question for those of you who write Windows Mobile applications (preferably managed, but native is fine too). We're developing a managed Windows Mobile application, and one of the issues we've run into is that we'd like to support both Smartphones and Pocket PCs (or WM6 Standard and WM6 professional devices, respectively).&lt;/p&gt;  &lt;p&gt;My first WM application was a Sudoku game I wrote that worked fine on both Smartphones and PocketPCs, but it was in my spare time. I didn't handle things like text input (A-Z, a-z, symbols, etc), localization, and Pocket PC input panels. I also wrote all of my own controls (of which there was exactly 1). I also didn't get code coverage numbers (a new post on that later this week).&lt;/p&gt;  &lt;p&gt;Unfortunately, there are some differences that make it hard to have one binary running on both. For example, we resize appropriately when the InputPanel control on the PocketPC is shown, but obviously, it's not required on the Smartphone. Another common problem we have is setting keyboard shortcuts. We want to make sure the application experience is great, regardless of whether you're on T-9 device or have a full fledged keyboard with touch screen.&lt;/p&gt;  &lt;p&gt;My current thought is have mostly the same source, but reinvent certain controls like the StatusBar and ComboBox so that they work and are accessible on both platforms. Then I'll have one primary project and have two outputs : one for Smartphone (with a custom set of #defines), and one for PocketPC (with its own set of #defines).&lt;/p&gt;  &lt;p&gt;So my question is:&lt;/p&gt;  &lt;p&gt;What do others do, and what do you recommend?&lt;/p&gt;  &lt;p&gt;I'm looking for both advice and personal experiences while developing a WM app.&lt;/p&gt;  &lt;p&gt;Thanks!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Edit: &lt;/strong&gt;To be clear, my plan is to have one primary project targeting the PPC, and one &amp;quot;ghost&amp;quot; project which targets Smartphone. All of the &amp;quot;ghost&amp;quot; project's files will actually be links to the primary project's files.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5607521" width="1" height="1"&gt;</content><author><name>toddha</name><uri>http://blogs.msdn.com/members/toddha.aspx</uri></author></entry></feed>