<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>@ Head : Whidbey</title><link>http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx</link><description>Tags: Whidbey</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Updates on the Snippet Editor</title><link>http://msmvps.com/blogs/bill/archive/2009/09/03/updates-on-the-snippet-editor.aspx</link><pubDate>Thu, 03 Sep 2009 01:03:56 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1720398</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1720398</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/09/03/updates-on-the-snippet-editor.aspx#comments</comments><description>&lt;p&gt;First the good news :&lt;/p&gt;  &lt;p&gt;The February release of the &lt;a href="http://billmccarthy.com/Projects/Snippet_Editor/default.html"&gt;Snippet Editor&lt;/a&gt; has now had &lt;strong&gt;10,000&lt;/strong&gt; downloads !&lt;/p&gt;  &lt;p&gt;Now for bug fix news:&lt;/p&gt;  &lt;p&gt;There were a couple of issues with the paths per language.&amp;#160; A problem with Express Editions of Visual Studio occurred due to partial entries in the registry I didn’t for-see. Initial design and testing was done with full versions of Visual Studio, but I want to ensure that it does work with the express versions, that’s why the tool is standalone not an add-in.&amp;#160; So the good news is I have fixed those bugs (I think).&amp;#160; &lt;/p&gt;  &lt;p&gt;If you want those fixes you can use the original source from Feb and just &lt;a href="http://snippeteditor.codeplex.com/SourceControl/changeset/view/36425#391917"&gt;download the updated products.vb&lt;/a&gt; file. I’ll probably look at rolling this up into a new release in the not to distant future.&lt;/p&gt;  &lt;p&gt;Enjoy :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1720398" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/DevCenter/default.aspx">DevCenter</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Snippets/default.aspx">Snippets</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://msmvps.com/blogs/bill/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS+10/default.aspx">VS 10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/XML/default.aspx">XML</category></item><item><title>String.IsNullOrEmpty : update on that nasty null reference exception</title><link>http://msmvps.com/blogs/bill/archive/2009/03/10/string-isnullorempty-update-on-that-nasty-null-reference-exception.aspx</link><pubDate>Tue, 10 Mar 2009 12:08:26 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1677289</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1677289</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/03/10/string-isnullorempty-update-on-that-nasty-null-reference-exception.aspx#comments</comments><description>&lt;p&gt;Back in April 2006, &lt;a href="http://msmvps.com/blogs/bill/archive/2006/04/04/89234.aspx" target="_blank"&gt;I blogged about a nasty JIT compiler optimisation&lt;/a&gt; that would cause String.IsNullOrEmpty to throw a null reference exception;&amp;#160; ironic really given that is the very thing you’d use the IsNullOrEmpty method to check against.&amp;#160; Well since then, due to popular demand on the connect site, this bug has been fixed in .NET 2.0 SP1 (which implies .NET 3.0 and 3.5)&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://msmvps.com/kb/940900/"&gt;&lt;em&gt;940900&lt;/em&gt;&lt;/a&gt;&lt;em&gt; (http://support.microsoft.com/kb/940900/ ) FIX: You receive the NullReferenceException exception when you call the String.IsNullOrEmpty function in an application that is built on the .NET Framework 2.0&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1677289" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VB10/default.aspx">VB10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Bug/default.aspx">Bug</category><category domain="http://msmvps.com/blogs/bill/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Snippet Editor 2.1 screen-cast</title><link>http://msmvps.com/blogs/bill/archive/2009/02/05/snippet-editor-2-1-screen-cast.aspx</link><pubDate>Thu, 05 Feb 2009 09:08:31 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1669250</guid><dc:creator>bill</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1669250</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/02/05/snippet-editor-2-1-screen-cast.aspx#comments</comments><description>&lt;p&gt;I’ve just uploaded a new screen cast:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://billmccarthy.com/Projects/Snippet_Editor/screencast.html" target="_blank"&gt;Snippet Editor Tips and Tricks&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Enjoy :)&lt;/p&gt;  &lt;p&gt;(oh and don’t forget the “&lt;a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;amp;hosted_button_id=2895732" target="_blank"&gt;buy me a beer&lt;/a&gt;” button)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1669250" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VB10/default.aspx">VB10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Snippets/default.aspx">Snippets</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://msmvps.com/blogs/bill/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS+10/default.aspx">VS 10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/XML/default.aspx">XML</category></item><item><title>New release of Snippet Editor</title><link>http://msmvps.com/blogs/bill/archive/2009/02/04/new-release-of-snippet-editor.aspx</link><pubDate>Tue, 03 Feb 2009 17:31:38 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1668548</guid><dc:creator>bill</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1668548</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/02/04/new-release-of-snippet-editor.aspx#comments</comments><description>&lt;p&gt;Snippet Editor 2.1 is now released on codeplex:    &lt;br /&gt;&lt;a title="http://www.codeplex.com/SnippetEditor" href="http://www.codeplex.com/SnippetEditor"&gt;http://www.codeplex.com/SnippetEditor&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Apart from the few minor bug fixes, it includes improved search and now support for Visual Studio 2010 as well as 2008 and 2005.&lt;/p&gt;  &lt;p&gt;I’ve also added a “buy me a beer” button to this blog, and on the codeplex site, so if you like the Snippet Editor you can help put a smile on my face :) &lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;amp;hosted_button_id=2895732"&gt;&lt;img title="donate" alt="donate" src="http://msmvps.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/bill/bymeabeer.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The snippet editor remains free: no advertisements, no nag screens.&amp;#160; &lt;/p&gt;  &lt;p&gt;yep, free as in beer ;)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enjoy :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1668548" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VB10/default.aspx">VB10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Snippets/default.aspx">Snippets</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://msmvps.com/blogs/bill/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS+10/default.aspx">VS 10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/XML/default.aspx">XML</category></item><item><title>Registered Organization on 64 bit</title><link>http://msmvps.com/blogs/bill/archive/2009/01/03/registered-organization-on-64-bit.aspx</link><pubDate>Sat, 03 Jan 2009 02:15:54 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1658392</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1658392</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/01/03/registered-organization-on-64-bit.aspx#comments</comments><description>&lt;p&gt;When I’ve started new Visual Studio projects on my Vista x64 box, the Company field would always show up as “Microsoft”… somewhat presumptuous and definitely annoying.&amp;#160; At first I thought the problem was with the templates, but upon inspection they had the correct template parameters, $registeredorganization$.&amp;#160; A quick look in my registry and those keys looked right; then it dawned on me. Visual Studio runs as a 32 bit process, not 64, so it effectively looks in :&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And that’s the solution. In there RegisteredOrganization was set to “Microsoft”.&amp;#160;&amp;#160; Changing that to your organization’s name solves the template issue.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1658392" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Vista/default.aspx">Vista</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category></item><item><title>XSD’s in Visual Studio: Past, Present and Future.</title><link>http://msmvps.com/blogs/bill/archive/2008/12/30/xsd-s-in-visual-studio-past-present-and-future.aspx</link><pubDate>Tue, 30 Dec 2008 02:51:36 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1658055</guid><dc:creator>bill</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1658055</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2008/12/30/xsd-s-in-visual-studio-past-present-and-future.aspx#comments</comments><description>&amp;#160; &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;When I was going through the &lt;a href="http://www.codeplex.com/SnippetEditor" target="_blank"&gt;snippet editor&lt;/a&gt; code to put it on CodePlex, I wanted to grab a screen shot of the snippet schema.&amp;#160; immediately I was confronted with there being no visual designer for schemas in VS 2008, but the worse part was I could have sworn there use to be.&amp;#160; To clear up that confusion here’s an illustrated history lesson on schema views in Visual Studio.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In earlier versions of Visual Studio the schema designer was a bit like the early dataset designer. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;This is Visual Studio 2005 :&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/bill/xsd2005_5F00_xFBMIA.png"&gt;&lt;img title="xsd2005" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="452" alt="xsd2005" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/bill/xsd2005_5F00_thumb_5F00_hm6h7A.png" width="620" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;It was detailed as far as types and constraints goes but omitted documentation.&amp;#160; With complex schemas it was a mess, but you could hide parts.&lt;/p&gt;  &lt;p&gt;Then in Visual Studio 2008 they decided to get rid of the schema designer completely !!&amp;#160; I’m really not sure the logic on that. There was however a CTP for the new Schema Explorer, and come Visual Studio 2008 Service Pack 1, the schema explorer was included.&amp;#160; (I hope I’ve got that bit of history right)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/bill/xsd2008_5F00_B1PwJQ.png"&gt;&lt;img title="xsd2008" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="356" alt="xsd2008" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/bill/xsd2008_5F00_thumb_5F00_sG0GEQ.png" width="358" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The Schema explorer gives a nice overview, and provides for navigation but totally lacks real details (&lt;strong&gt;not&lt;/strong&gt; synchronized with the properties window).&amp;#160; Sadly for Visual Studio 2008 that’s as best as it gets, the rest is wading through the actual xsd file as xml.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The first CTP of Visual Studio 10, reveals a new designer that can be used in conjunction with the Schema Explorer.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/bill/xsd2010_5F00_n4et6w.png"&gt;&lt;img title="xsd2010" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="476" alt="xsd2010" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/bill/xsd2010_5F00_thumb_5F00_WZK35w.png" width="571" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This pretty visual representation is all done in WPF so you can zoom in and out nicely. As well as the ability to easily expand and shrink elements, it’s really nice way to get an overview.&amp;#160; You can even turn on documentation so as you can see any comments from the schema:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/bill/xsd2010_5F00_with_5F00_doc_5F00_FMtFMw.png"&gt;&lt;img title="xsd2010_with_doc" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="409" alt="xsd2010_with_doc" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/bill/xsd2010_5F00_with_5F00_doc_5F00_thumb_5F00_2wIj9w.png" width="592" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Although this is very pretty, and a great visual aid, it still doesn’t provide any means to create a schema or edit one… it’s simply a view.&amp;#160;&amp;#160; Some things I’d like to see improved are :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Provide designer &lt;strong&gt;editing&lt;/strong&gt; and creation of schemas&amp;#160; &lt;/li&gt;    &lt;li&gt;have an export to .png feature &lt;/li&gt;    &lt;li&gt;Ability to fully expand comments for all items.&amp;#160; At present only the first two lines are shown and you have to double click on each element to get the comments to fully expand &lt;/li&gt;    &lt;li&gt;did I mention &lt;strong&gt;editing&lt;/strong&gt; ? &lt;/li&gt;    &lt;li&gt;tear-offs would be nice, such that I could then use the width of the screen (eg: Drag the “Header” element from the above picture to the right, and then it expands over there rather than in situ.) &lt;/li&gt;    &lt;li&gt;show restrictions. For example, the SnippetType is restricted to three possible legal values, “Expansion”, “SurroundsWith” and “Refactoring”.&amp;#160; To find that out I have to delve into the xsd. &lt;/li&gt;    &lt;li&gt;Synchronise with Properties window allowing for more detail to be shown and edited in the Properties window&lt;/li&gt;    &lt;li&gt;Provide Copy as Path. The bottom of the screen shows the path of the selected node, but it would be great if you could select to copy that to the clipboard as an XPath. Even cooler if you could choose between XPath, VB XML Axis/Literal sytnax, or XElement syntax (for those poor ol’ C# folks ;) )&lt;/li&gt;    &lt;li&gt;&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The Visual Studio 10 stuff looks promising, but still has a long way to go. (did I mention the lack of &lt;strong&gt;editing&lt;/strong&gt; ?)&amp;#160; In the interim it would be nice if there was &lt;strong&gt;&lt;em&gt;something&lt;/em&gt;&lt;/strong&gt;, &lt;em&gt;&lt;strong&gt;anything&lt;/strong&gt;&lt;/em&gt; !&amp;#160; I’m really not sure why the 2005 xsd designer was dropped. Sure some of it was ugly, especially the way it shows things like the string restrictions, but it was and is less ugly than the XML for&amp;#160; that part of the xsd !!&lt;/p&gt;  &lt;p&gt;Visually we have progressed... but what about the &lt;strong&gt;editing&lt;/strong&gt; ??&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1658055" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VB10/default.aspx">VB10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Snippets/default.aspx">Snippets</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS+10/default.aspx">VS 10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/XML/default.aspx">XML</category></item><item><title>Snippet Editor is now on CodePlex</title><link>http://msmvps.com/blogs/bill/archive/2008/12/28/snippet-editor-is-now-on-codeplex.aspx</link><pubDate>Sun, 28 Dec 2008 09:13:22 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1657880</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1657880</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2008/12/28/snippet-editor-is-now-on-codeplex.aspx#comments</comments><description>&lt;p&gt;I’ve just finished uploading the Snippet Editor to CodePlex&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.codeplex.com/SnippetEditor" href="http://www.codeplex.com/SnippetEditor"&gt;http://www.codeplex.com/SnippetEditor&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It includes some minor bug fixes from the previous release.&lt;/p&gt;  &lt;p&gt;Enjoy :)&lt;/p&gt;  &lt;p&gt;And Merry XMas :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1657880" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VB10/default.aspx">VB10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Snippets/default.aspx">Snippets</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://msmvps.com/blogs/bill/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS+10/default.aspx">VS 10</category></item><item><title>VB Snippet Editor</title><link>http://msmvps.com/blogs/bill/archive/2008/12/08/vb-snippet-editor.aspx</link><pubDate>Mon, 08 Dec 2008 11:42:02 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1656158</guid><dc:creator>bill</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1656158</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2008/12/08/vb-snippet-editor.aspx#comments</comments><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Over the last week I’ve got a sudden influx of emails about the Snippet Editor.&amp;#160; I’m figuring this is stemming from &lt;a href="http://blogs.msdn.com/vbteam/archive/2008/12/07/did-you-know-there-are-many-ways-to-insert-a-snippet-into-your-code-lisa-feigenbaum.aspx" target="_blank"&gt;Lisa’s recent blog entry&lt;/a&gt; and her &lt;a href="http://blogs.msdn.com/vbteam/archive/2008/12/06/video-microsoft-visual-basic-2008-tips-and-tricks-lisa-feigenbaum.aspx" target="_blank"&gt;tips and trips for VS 2008 presentation&lt;/a&gt; :)&amp;#160; &lt;/p&gt;  &lt;p&gt;Some of the emails have been really nice praise, folks wanting to add some features, a bug on XP 64 (which unfortunately is about the only OS I don’t have in my testing suite), and some general questions around snippets.&amp;#160; So I gave this lots of thought and decided to put up a site on CodePlex. This will allow people to add features, work together on bugs, and share discussions around snippets including future directions for the snippet editor.&lt;/p&gt;  &lt;p&gt;The new codeplex site will be at &lt;a title="http://www.codeplex.com/SnippetEditor" href="http://www.codeplex.com/SnippetEditor"&gt;http://www.codeplex.com/SnippetEditor&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It’s not ready yet, and will probably be a week while I get all the bits together and ensure there’s no rude words in the code comments etc ;)&amp;#160; I was hesitant about moving to CodePlex as I was really disappointed how gotdotnet was just closed down and not migrated. And I should add here a word of caution for those in charge should CodePlex go a similar route.. I will travel the continents and track you down and when I find you stare at you for a really long time until you feel uncomfortable !!&amp;#160; ;)&amp;#160; (Seriously, please don’t close codeplex)&lt;/p&gt;  &lt;p&gt;So, all going well, the Snippet Editor will be on CodePlex this time next week.&amp;#160; I’ll make sure to post when it’s ready and redirect my current site there.&amp;#160; Any suggestions on the open&amp;#160; source license eula etc most welcome.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1656158" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VB10/default.aspx">VB10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Snippets/default.aspx">Snippets</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://msmvps.com/blogs/bill/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS+10/default.aspx">VS 10</category></item><item><title>Windows Live team continues insults at VB'ers ...</title><link>http://msmvps.com/blogs/bill/archive/2008/03/12/windows-live-team-continues-insults-at-vb-ers.aspx</link><pubDate>Tue, 11 Mar 2008 14:11:54 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1540078</guid><dc:creator>bill</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1540078</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2008/03/12/windows-live-team-continues-insults-at-vb-ers.aspx#comments</comments><description>&lt;p&gt;After &lt;a href="http://msmvps.com/blogs/bill/archive/2008/03/04/live-search-gives-vb-the-finger.aspx"&gt;my post&lt;/a&gt; about the first set of insults from the Windows Live team and the Search API samples, it was nice to see some VB samples released.&amp;nbsp; Sadly though they were just the C# samples run through an automated tool.&amp;nbsp; I mean look at this bullshit code from them :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Select Case searchFlagsValue&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Flags = SearchFlags.None&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Select&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Flags = SearchFlags.MarkQueryWords&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Select &lt;p&gt;&amp;nbsp; ....... &lt;p&gt;&amp;nbsp; &lt;p&gt;The Exit Select is just utter crap. The only reason it&amp;#39;s there is because the c# code uses break statements inside a switch block and that&amp;#39;s what their machine translation mapped to Exit Select. It shows an incredible ignorance of VB, and demonstrates yet again complete contempt for the VB audience. &lt;p&gt;To add insult to insult, they also decided not to include the Windows.Forms sample for VB. &lt;p&gt;&amp;nbsp; &lt;p&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1540078" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Rant/default.aspx">Rant</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VB10/default.aspx">VB10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://msmvps.com/blogs/bill/archive/tags/CSharp/default.aspx">CSharp</category></item><item><title>Arrays in VB.NET</title><link>http://msmvps.com/blogs/bill/archive/2008/02/16/arrays-in-vb-net.aspx</link><pubDate>Sat, 16 Feb 2008 02:05:37 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1515596</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1515596</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2008/02/16/arrays-in-vb-net.aspx#comments</comments><description>&lt;p&gt;You probably know that declaring an array in VB, such as :&lt;/p&gt; &lt;div style="font-size:11pt;background:white;color:black;font-family:consolas;"&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#3092b1;"&gt;Dim&lt;/span&gt; names(9) &lt;span style="color:#3092b1;"&gt;As&lt;/span&gt; &lt;span style="color:#3092b1;"&gt;String&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;creates an array with 10 elements.&amp;nbsp; As of VB8 you can use the 0 To syntax for the same thing:&lt;/p&gt; &lt;div style="font-size:11pt;background:white;color:black;font-family:consolas;"&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#3092b1;"&gt;Dim&lt;/span&gt; names(0 &lt;span style="color:#3092b1;"&gt;To&lt;/span&gt; 9) &lt;span style="color:#3092b1;"&gt;As&lt;/span&gt; &lt;span style="color:#3092b1;"&gt;String&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I prefer the 0 To syntax as it clearer for those from other languages as well as clearer for me ;)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;But did you know you can also do this :&lt;/p&gt; &lt;div style="font-size:11pt;background:white;color:black;font-family:consolas;"&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#3092b1;"&gt;Dim&lt;/span&gt; names(-1) &lt;span style="color:#3092b1;"&gt;As&lt;/span&gt; &lt;span style="color:#3092b1;"&gt;String&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:#3092b1;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="font-size:11pt;background:white;color:black;font-family:consolas;"&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#3092b1;"&gt;Dim&lt;/span&gt; names(0 &lt;span style="color:#3092b1;"&gt;To&lt;/span&gt; -1) &lt;span style="color:#3092b1;"&gt;As&lt;/span&gt; &lt;span style="color:#3092b1;"&gt;String&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;this creates a zero length array.&lt;/p&gt; &lt;p&gt;This comes in handy if you are resizing an array, and there is the possibility of the count being zero, e.g&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="font-size:11pt;background:white;color:black;font-family:consolas;"&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#3092b1;"&gt;Dim&lt;/span&gt; names(0 &lt;span style="color:#3092b1;"&gt;To&lt;/span&gt; count - 1) &lt;span style="color:#3092b1;"&gt;As&lt;/span&gt; &lt;span style="color:#3092b1;"&gt;String&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:#3092b1;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:#3092b1;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:#3092b1;"&gt;:)&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1515596" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS2008/default.aspx">VS2008</category></item><item><title>Counting deck chairs on the titanic</title><link>http://msmvps.com/blogs/bill/archive/2007/11/02/counting-deck-chairs-on-the-titanic.aspx</link><pubDate>Fri, 02 Nov 2007 05:57:27 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1277773</guid><dc:creator>bill</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1277773</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2007/11/02/counting-deck-chairs-on-the-titanic.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.panopticoncentral.net/archive/2007/11/01/22453.aspx" target="_blank"&gt;Paul Vick released some statistics in relation to VB&lt;/a&gt;, which for discussion sake I&amp;#39;ll repeat here :&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Visual Basic is the #1 .NET language (as reported by Forrester Research)  &lt;li&gt;Visual Basic is the #1 downloaded and #1 registered Express Edition (topping the #2 position by 20%)  &lt;li&gt;Visual Basic is the #1 MSDN language dev center and blog in terms of traffic  &lt;li&gt;The Visual Basic Team blog is in the top 1% in readership of all MS bloggers (I don&amp;#39;t know where I fall in that since I host independently.)&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;I think you&amp;#39;d have to be taking the happy pills to see anything great in those stats, after all they avoid real numbers and they don&amp;#39;t tell the underlying trend or growth.&lt;/p&gt; &lt;p&gt;Five or so years ago, before .NET formally launched, Microsoft reported VB as being the *MOST* popular language of *ALL* programming languages. Reports from Forrester backs this up, and this graph from O&amp;#39;Reilly books shows that VB was the most popular titles.&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/blogs/bill/WindowsLiveWriter/Countingdeckchairsonthetitanic_E6A5/Oreilly_2.png" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="310" alt="Oreilly" src="http://msmvps.com/blogs/bill/WindowsLiveWriter/Countingdeckchairsonthetitanic_E6A5/Oreilly_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Note in the above graph that VB was as popular as Java at the start of 2003 but has been on a steady decline. C# on the other hand was showing a slow but steady increase.&lt;/p&gt; &lt;p&gt;Forrester also in &lt;a href="http://www.forrester.com/Research/Document/Excerpt/0,7211,37356,00.html" target="_blank"&gt;mid 2005 released these figures&lt;/a&gt;:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Java&amp;#39;s 66% penetration is the highest among strategic programming languages for enterprise applications.&lt;/li&gt; &lt;li&gt; Visual Basic 6 (VB6) and C/C++ have nearly as much penetration as Java,&lt;/li&gt; &lt;li&gt;Visual Basic .NET (VB.NET) had 34% penetration&lt;/li&gt; &lt;li&gt;C# had 15% penetration&lt;/li&gt; &lt;li&gt; If all VB6 users converted to VB.NET, its share would increase to 70%. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The last statistic is an interesting one, what it tells us is that VB was the most popular language, and by mid 2005 VB.NET had managed to attract less than half of those VB had prior to the move to .NET.&lt;/p&gt; &lt;p&gt;More recent statistics are harder to come by. Anecdotal reports are that book sales of C# related topics are out selling VB at the ratio of 2:1.&amp;nbsp; If books aren&amp;#39;t a great indicator of growth trends perhaps jobs are.&amp;nbsp; Searches at seek.com.au show C# jobs running at 7 jobs per every 3 that specify VB. There&amp;#39;s some overlap but that&amp;#39;s still a greater than 2:1 ratio.&amp;nbsp; Likewise jobs at monster.com tally up similarly. Interestingly both also show J2EE about on par with C# and Java slightly higher. If you combine VB and C# there&amp;#39;s not much in it compared to Java overall in the job market.&lt;/p&gt; &lt;p&gt;So what of stats from Microsoft ?&amp;nbsp; Surely Microsoft would have figures and be touting it&amp;#39;s success ??&amp;nbsp; Well no, not really. These cryptic figures Paul released are all I can find except for anecdotal quotes such &lt;a href="http://blogs.msdn.com/joestagner/archive/2007/10/17/why-are-the-how-do-i-videos-in-visual-basic.aspx" target="_blank"&gt;as the quote from Joe Stagner&lt;/a&gt; that there are more VBers than &amp;quot;C# folk but the gap is narrowing&amp;quot;.&amp;nbsp; So what is it Paul actually is telling us ?&lt;/p&gt; &lt;p&gt;&lt;br /&gt;1&lt;em&gt;. Visual Basic is the #1 .NET language (as reported by Forrester Research) &lt;/em&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; Okay so VB has gone from being the most popular language, to being just the most popular on .NET, a relative decline in market share. And the titanic was still the biggest floating ship right up till the moment it sunk, even when it was taking on water.&amp;nbsp; To take a language from the most popular of ALL languages, to one of just a subset of languages is a negative trend :(&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;2. &lt;em&gt;Visual Basic is the #1 downloaded and #1 registered Express Edition (topping the #2 position by 20%) &lt;/em&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; That figure alone is to be expected given VB6 was the most popular. You&amp;#39;d expect those people to at least try out VB Express unless marketing really screwed up. Again it tells us nothing about forward trends, just an indication of the past penetration that was there&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;3.&lt;em&gt; Visual Basic is the #1 MSDN language dev center and blog in terms of traffic &lt;/em&gt;&lt;/p&gt; &lt;p&gt; Again that related heavily to the previous versions of VB.&amp;nbsp; If you visit the VB MSDN site, that&amp;#39;s where you also find info on previous versions. Look at the downloads for VB, and &lt;a href="http://www.microsoft.com/downloads/browse.aspx?displaylang=en&amp;amp;productid=1652d9a4-f0b3-4630-acd5-56982ea750ab" target="_blank"&gt;even today the most popular download&lt;/a&gt; is Visual Basic 6. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;4. The Visual Basic Team blog is in the top 1% in readership of all MS bloggers &lt;/em&gt;&lt;/p&gt; &lt;p&gt;There are about 4500 blogs on MSDN, so 1% is the top 45 blogs.&amp;nbsp; What that is telling us is that the team blog for VB only rates in the top 45 of blogs for Microsoft&amp;#39;s Developer Network blogs. What are the other 44 ?&amp;nbsp; And what does that tells us ? That we should all be programming in Scobble ?&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I think the sad truth is that VB continues to decline due to market place perception.&amp;nbsp; VB is in fact a very capable language. In fact in many ways it is better than C#. Form a pure technical perspective VB is the best language of the two for working with COM legacy applications. In 2008, VB is also the best of the two for working with XML. C#&amp;#39;s only technical feature that gives it a real edge is unsafe code. &lt;/p&gt; &lt;p&gt;So why is VB declining while C# is on the rise ?&amp;nbsp; Microsoft is heavily to blame here. Although they say you are free to choose what ever language you like, they don&amp;#39;t do that, they continue to choose C# over VB and the market place knows that.&amp;nbsp; Given it&amp;#39;s their platform we are actually coding on, it&amp;#39;s understandable that we view their developers as leaders.&amp;nbsp; And they lead towards C#.&lt;/p&gt; &lt;p&gt;Cost and time also figure into it heavily. Microsoft has sent out a clear message that if you want to work with Windows Live Id, Windows Search, Health Vault, .NET Micro Framework, XNA, then they don&amp;#39;t view VB as important enough for them to vest any time on, so why should/would you ?&amp;nbsp; They&amp;#39;ve made it clear they are going to pigeon hole VB.&lt;/p&gt; &lt;p&gt;Let me give you an example. Let&amp;#39;s say today you wanted to incorporate the latest from the Patterns and Practices team.&amp;nbsp; If you go over to CodePlex, you&amp;#39;ll find the latest code in C#.&amp;nbsp; If you want to build your app, but still have the flexibility to make changes, you&amp;#39;ll need to go with C#.&amp;nbsp; In fact if you look over at CodePlex, you&amp;#39;ll find that C# projects outweigh VB at the ratio of about 7 : 1.&amp;nbsp;&amp;nbsp; And many of those projects are lead by Microsoft employees as part of their day job.&lt;/p&gt; &lt;p&gt;This leading of community projects, the work being done internally around C# all lead to C# developing greater market share as well as improving C# itself as the language gets &amp;quot;dog-fooded&amp;quot; more by Microsoft, thus gaining input from some of the world&amp;#39;s best developers from practical usage of it.&amp;nbsp; It&amp;#39;s self feeding.&lt;/p&gt; &lt;p&gt;For Microsoft as a whole, they look at .NET penetration. The increase in C# at the expense of VB doesn&amp;#39;t really matter, it&amp;#39;s overall market share that does.&amp;nbsp; Except perhaps for one really telling statistic.&amp;nbsp; As Forrester said, if all the VB community switched to VB.NET back in 2005, VB would have had 70% market penetration.&amp;nbsp; Given such a huge potential, it has to be negligent to let that slip away, and instead favor a new language because internally more people at Microsoft used C++.&amp;nbsp; Really, the question should have been was there ever any need for C# given VB&amp;#39;s huge market share ?&amp;nbsp; Now the question is&amp;nbsp; beginning to be the opposite.&lt;/p&gt; &lt;p&gt;And so it goes, we should be happy when they tell us how many deck chairs on the titanic, that the ship is unsinkable, yet we see the water line drawing nearer and nearer.......&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1277773" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Life/default.aspx">Life</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Rant/default.aspx">Rant</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://msmvps.com/blogs/bill/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://msmvps.com/blogs/bill/archive/tags/DevCenter/default.aspx">DevCenter</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VB10/default.aspx">VB10</category></item><item><title>.NET 3.0 does NOT change .NET 2.0 libraries.</title><link>http://msmvps.com/blogs/bill/archive/2007/06/29/net-3-0-does-not-change-net-2-0-libraries.aspx</link><pubDate>Fri, 29 Jun 2007 03:04:05 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:992270</guid><dc:creator>bill</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=992270</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2007/06/29/net-3-0-does-not-change-net-2-0-libraries.aspx#comments</comments><description>&lt;p&gt;Recently a fellow MVP pointed out the addition of the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.httpserverutility.transferrequest.aspx" target="_blank"&gt;TransferRequest&lt;/a&gt; method to the HttpServerUtility class.&amp;nbsp; The documentation falsely states it as being .NET 3.0 when in fact the change is made in .NET 3.5 Beta. &lt;/p&gt; &lt;p&gt;You&amp;#39;d think stating the file versions would be enough to clear up the matter, which is what I did.&amp;nbsp; I looked in some Virtual PCs to see what file version there were for System.Web, and determined that the change that includes TransferRequest was the 3.5 version.&amp;nbsp; Saddly one other MVP wanted to add in some FUD.&amp;nbsp; And that is really sad because people should know that 3.0 does NOT modify the 2.0 assemblies.&amp;nbsp; It is important that enterprises know they can safely rollout 3.0 without worrying about changes to the 2.0 framework.&lt;/p&gt; &lt;p&gt;&amp;nbsp;Here&amp;#39;s what I posted:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;I just looked in some virtual PC&amp;#39;s, and the change is System.Web to &lt;br /&gt;2.0.50727.1318  &lt;p&gt;Prior to that, System.Web was 2.0.50727.210 as of KB922770 . Note: &lt;br /&gt;Installing .NET 3.0 does NOT change that  &lt;p&gt;The change to the 1318 minor version occurs with the install of .NET 3.5 &lt;br /&gt;Beta 1 bits.&amp;nbsp; Whether or not this will be the case with the final release of &lt;br /&gt;3.5 I&amp;#39;m not sure.&amp;nbsp; I believe the changes are all non breaking so they may &lt;br /&gt;just do that.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;And here&amp;#39;s some of the comments another MVP made: &lt;blockquote&gt; &lt;p&gt;There&amp;#39;s a bunch of members in 3.0 which aren&amp;#39;t available in .Net 2.0&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;It would be *so* much easier for everybody if you documented your &amp;quot;facts&amp;quot;.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;Did I miss the documentation you cited ?&lt;br /&gt;Are you aware that *documenting* something goes beyond simply stating an assertion ?&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Okay you can get the gist.&amp;nbsp; I state the versions and state I looked in VPC&amp;#39;s etc, and I get back some childish argument about that not equating to their sense of the meaning of &amp;quot;documented&amp;quot;.&amp;nbsp; I s&amp;#39;pose some people just like&amp;nbsp;to argue and spread FUD. Sad. &lt;p&gt;So anyway, no matter what anyone else tells you, .NET 3.0 does not change the 2.0 assemblies.&amp;nbsp;  &lt;p&gt;3.5 does but that&amp;#39;s another story ;)&amp;nbsp; I actually hope they will release 3.5 as 4.0 given all the *additions*.&amp;nbsp; If 3.0 deserved a new version number then 3.5 definitely does.&amp;nbsp; Plus changing the 2.0 libraries even if it is just to add new members really isn&amp;#39;t what one would expect of a minor version upgrade. &lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=992270" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Rant/default.aspx">Rant</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://msmvps.com/blogs/bill/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>The &amp;operator</title><link>http://msmvps.com/blogs/bill/archive/2007/06/25/the-amp-operator.aspx</link><pubDate>Mon, 25 Jun 2007 02:52:53 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:986138</guid><dc:creator>bill</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=986138</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2007/06/25/the-amp-operator.aspx#comments</comments><description>&lt;p&gt;I just read again today the &lt;a href="http://oakleafblog.blogspot.com/2007/06/visual-basic-team-starts-linq-cookbook.html" target="_blank"&gt;claim that you should use +&lt;/a&gt; for string concatenation in VB.&amp;nbsp; You should NOT.&amp;nbsp; Just because you can doesn&amp;#39;t mean you should.&amp;nbsp; VB has the Concatenation operator &amp;amp; as distinct from the + operator. Yes for the most part adding two strings is the same as concatenating them, but adding two variables is very different from concatenating them... that&amp;#39;s why in a dynamic language it is important to have two different operators.&lt;/p&gt; &lt;p&gt;The correct one to use is &amp;amp; for concatenation, and use + for addition.&amp;nbsp; So for strings use &amp;amp;.&lt;/p&gt; &lt;p&gt;See my &lt;a href="http://msmvps.com/blogs/bill/archive/2006/04/23/92280.aspx" target="_blank"&gt;previous blog entries on this for more&lt;/a&gt; details....&lt;/p&gt; &lt;p&gt;&lt;a title="http://msmvps.com/blogs/bill/archive/2006/04/23/92280.aspx" href="http://msmvps.com/blogs/bill/archive/2006/04/23/92280.aspx"&gt;http://msmvps.com/blogs/bill/archive/2006/04/23/92280.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=986138" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Orcas/default.aspx">Orcas</category></item><item><title>Defy All Challenges</title><link>http://msmvps.com/blogs/bill/archive/2007/04/12/defy-all-challenges.aspx</link><pubDate>Thu, 12 Apr 2007 02:09:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:786128</guid><dc:creator>bill</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=786128</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2007/04/12/defy-all-challenges.aspx#comments</comments><description>&lt;DIV&gt;The &lt;A href="http://www.defyallchallenges.com/"&gt;latest from&amp;nbsp;Microsoft's Developer&amp;nbsp;Marketing is hilarious &lt;/A&gt;!&amp;nbsp; Seems some folks at MS have way too much time on their hands…&amp;nbsp; &lt;/DIV&gt;
&lt;DIV&gt;But then again what am I doing watching the videos there ? &amp;lt;g&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;you have to watch the "Team Call" video, I'm sure we've all been to that meeting ;)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;A href="http://www.defyallchallenges.com/"&gt;http://www.defyallchallenges.com/&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV id=CSBloggerSig&gt;&lt;/DIV&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=786128" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category></item><item><title>example of a file by file SettingsProvider</title><link>http://msmvps.com/blogs/bill/archive/2006/08/30/111011.aspx</link><pubDate>Wed, 30 Aug 2006 09:27:52 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:111011</guid><dc:creator>bill</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=111011</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2006/08/30/111011.aspx#comments</comments><description>&lt;div&gt;the following is the code for the custom SettingsProvider from Geoff and mine's TechEd 2006 presentation:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div style="BORDER-RIGHT: black 1px solid; PADDING-RIGHT: 8px; BORDER-TOP: black 1px solid; MARGIN-TOP: 8px; PADDING-LEFT: 8px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 8px; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #eef0ef"&gt;&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Option&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Strict&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;On&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Option&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Explicit&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;On&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font color="#0000ff"&gt;Imports&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; System&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font color="#0000ff"&gt;Imports&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; System.Configuration&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font color="#008000"&gt;''' &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#c0c0c0"&gt;&amp;lt;summary&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#008000"&gt;''' simple example of a SetitngsProvider that saves each individual setting in it's own file&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font color="#008000"&gt;''' &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#c0c0c0"&gt;&amp;lt;/summary&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#008000"&gt;''' &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" face="Courier New" color="#c0c0c0"&gt;&amp;lt;remarks&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#008000"&gt;to use, add a setitng to My.Settigns designer, open the properties window&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#008000"&gt;''' and set the provider to FileByFileSettingsProvider if in the same project, otherwise the full name.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font color="#008000"&gt;''' &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#c0c0c0"&gt;&amp;lt;/remarks&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Public&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Class&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; FileByFileSettingsProvider&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" face="Courier New" color="#0000ff"&gt;Inherits&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; SettingsProvider&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;#&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Region&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#800000"&gt;"constructor and initialize"&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Public&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Sub&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;New&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;()&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" face="Courier New" color="#0000ff"&gt;MyBase&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;.new()&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Sub&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Public&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Overrides&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Sub&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; Initialize(&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; name &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;String&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;, &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; config &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; System.Collections.Specialized.NameValueCollection)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;If&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; name &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Is&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Nothing&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Then&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; name = &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;My&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;.Application.Info.ProductName&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      m_appName = name&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" face="Courier New" color="#0000ff"&gt;MyBase&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;.Initialize(m_appName, config)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Sub&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Private&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; m_appName &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;String&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Public&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Overrides&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Property&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; ApplicationName() &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;String&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Get&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;         &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" face="Courier New" color="#0000ff"&gt;Return&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; m_appName&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Get&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Set&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;(&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; value &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;String&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;         m_appName = value&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Set&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Property&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;#&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Region&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#008000"&gt;'HACK: hard coded root path. In practice use assembly path or similar&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Private&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; m_rootPath &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;String&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; = &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#800000"&gt;"E:\test\"&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Public&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Overrides&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Function&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; GetPropertyValues(&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; context &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; SettingsContext, _&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;                                                &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; properties &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; SettingsPropertyCollection) _&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;                                                &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" face="Courier New" color="#0000ff"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; SettingsPropertyValueCollection&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; values &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;New&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; SettingsPropertyValueCollection&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;For&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Each&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; setting &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; SettingsProperty &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;In&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; properties&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;         &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; filepath &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;String&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; = m_rootPath &amp;amp; setting.Name &amp;amp; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#800000"&gt;".xml"&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;         &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; value &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;New&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; SettingsPropertyValue(setting)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;         &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;With&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;My&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;.Computer.FileSystem&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;            &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;If&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; .FileExists(filepath) &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Then&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;               value.SerializedValue = .ReadAllText(filepath)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;               &lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#008000"&gt;' coment out the preceeding line and uncomment the following line to make the serialization binary&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;               &lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#008000"&gt;'value.PropertyValue = GetObjectFromBytes(.ReadAllBytes(filepath))&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;            &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;If&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;            value.IsDirty = &lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;False&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;            values.Add(value)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;         &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;With&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Next&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" face="Courier New" color="#0000ff"&gt;Return&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; values&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Function&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Public&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Overrides&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Sub&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; SetPropertyValues(&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; context &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; SettingsContext, _&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;                                          &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; values &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; SettingsPropertyValueCollection)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;For&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Each&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; value &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; SettingsPropertyValue &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;In&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; values&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;         &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; filepath &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;String&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; = m_rootPath &amp;amp; value.Name &amp;amp; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#800000"&gt;".xml"&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;         &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;My&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;.Computer.FileSystem.WriteAllText(filepath, value.SerializedValue.ToString, &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;False&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;         &lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#008000"&gt;' coment out the preceeding line and uncomment the following line to make the serialization binary&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;         &lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#008000"&gt;' My.Computer.FileSystem.WriteAllBytes(filepath, GetObjectBytes(value.PropertyValue), False)&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Next&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Sub&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;#&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Region&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#800000"&gt;"helper methods"&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#008000"&gt;'HACK: this is sub-optimal means of reading the binary stream from disk.&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Private&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Function&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; GetObjectBytes(&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; obj &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Object&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;) &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Byte&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;()&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Using&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; buffer &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;New&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; IO.MemoryStream()&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;         &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; formatter &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;New&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; Runtime.Serialization.Formatters.Binary.BinaryFormatter()&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;         formatter.Serialize(buffer, obj)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;         &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" face="Courier New" color="#0000ff"&gt;Return&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; buffer.GetBuffer&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Using&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Function&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#008000"&gt;'HACK: this is sub-optimal means of writing out the binary stream to disk.&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Private&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Function&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; GetObjectFromBytes(&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; bytes &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Byte&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;()) &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Object&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Using&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; buffer &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;New&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; IO.MemoryStream(bytes)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;         &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; formatter &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;As&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;New&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; Runtime.Serialization.Formatters.Binary.BinaryFormatter()&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;         &lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" face="Courier New" color="#0000ff"&gt;Return&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; formatter.Deserialize(buffer)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;      &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Using&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Function&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;#&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Region&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef"&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;End&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" face="Courier New"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #eef0ef" color="#0000ff"&gt;Class&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id="CSBloggerSig"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=111011" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category></item><item><title>Saving from a DataGridView</title><link>http://msmvps.com/blogs/bill/archive/2006/07/22/105406.aspx</link><pubDate>Fri, 21 Jul 2006 13:14:54 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:105406</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=105406</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2006/07/22/105406.aspx#comments</comments><description>&lt;div&gt;If you click on a button in a toolstrip, such as the save button on a BindingNavigator, the button never gets focus, so the DataGridView never looses focus, so the current changes are not persisted.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The first thing you need to do is call EndEdit on the DataGridView.  This will apply the cell's changes.  But if you are editing a data table, then you also need to call EndEdit on the BindingSource (or EndCurrentEdit on the currency manager if not using a BindingSource).  Calling EndEdit on the binding source will result in the row change being persisted and hence the dataset's diffgram will show that change.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;So, your code should look something like:&lt;br /&gt;&lt;br /&gt;Sub Save(…….)&lt;br /&gt;   Me.CustomersDataGridView.EndEdit()&lt;/div&gt;
&lt;div&gt;   Me.CustomersBindingSource.EndEdit()&lt;/div&gt;
&lt;div&gt;   ' now save the dataset&lt;/div&gt;
&lt;div&gt;   ……&lt;/div&gt;
&lt;div&gt;End Sub&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div id="CSBloggerSig"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=105406" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category></item><item><title>how well do you know VB (part 2)</title><link>http://msmvps.com/blogs/bill/archive/2006/07/20/105232.aspx</link><pubDate>Wed, 19 Jul 2006 13:06:31 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:105232</guid><dc:creator>bill</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=105232</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2006/07/20/105232.aspx#comments</comments><description>&lt;div&gt;a few weeks ago, &lt;a href="http://msmvps.com/blogs/bill/archive/2006/06/30/103270.aspx"&gt;I posted a quiz&lt;/a&gt; about the syntax low &amp;lt; x &amp;lt; high, which really was a quiz about implicit casting of Booleans. Of course the great &lt;a href="http://www.danappleman.com/"&gt;Dan Appleman &lt;/a&gt; got that one right :)&lt;/div&gt;
&lt;div&gt;That quiz stemmed from an &lt;a href="http://msmvps.com/blogs/bill/archive/2006/06/29/103069.aspx"&gt;earlier post&lt;/a&gt;, and raised some questions about values of Booleans in general.  I plan to post a long explanation, but first I thought I'd have some more fun with syntax quizzes  :) &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Given the following conditions:&lt;/div&gt;
&lt;div&gt; - Code is compiled with Strict On and Explicit On rules applied&lt;/div&gt;
&lt;div&gt; - two variables are declared as follows:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;  Dim x As Boolean = SomeFunctionthatReturnsABoolean()&lt;/div&gt;
&lt;div&gt;  Dim y As Boolean = True&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Do all the following evaluate to the same If condition ?  We're not concerned over how they get there, but whether or not they all get to the same place.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;(1) If x = y Then&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;(2) If x And y Then&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;(3) If x &amp;lt;&amp;gt; Not y Then&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;(4) If Boolean.Equals(x,y) Then&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Remember, y is specified as being True in all these expressions.&lt;/div&gt;
&lt;div&gt;Are they all the same, always ?&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div id="CSBloggerSig"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=105232" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Rant/default.aspx">Rant</category></item><item><title>Exception Helper for VS 2005</title><link>http://msmvps.com/blogs/bill/archive/2006/07/17/104870.aspx</link><pubDate>Sun, 16 Jul 2006 16:43:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:104870</guid><dc:creator>bill</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=104870</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2006/07/17/104870.aspx#comments</comments><description>&lt;P&gt;today I updated the open source Exception Helper plugin for Visual Studio 2005.&amp;nbsp; You can &lt;A href="http://www.totalenviro.com/demo/exceptionhelper/exceptionhelper.html"&gt;&lt;STRONG&gt;&lt;FONT size=4&gt;view a short screen cast&lt;/FONT&gt;&lt;/STRONG&gt; &lt;/A&gt;demonstrating it's installation and usage (about 4 minutes)&lt;/P&gt;
&lt;P&gt;You can download from&lt;A href="http://workspaces.gotdotnet.com/project42"&gt; workspaces.gotdotnet.com/project42&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=104870" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category></item><item><title>Messing with JIT options</title><link>http://msmvps.com/blogs/bill/archive/2006/06/28/102913.aspx</link><pubDate>Tue, 27 Jun 2006 14:17:26 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:102913</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=102913</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2006/06/28/102913.aspx#comments</comments><description>&lt;div&gt;Sometimes different problems come together to provide a unified solution. Today I think I stumbled across such a thing.  Earlier today I noticed a comment post to an old blog entry of mine about how to &lt;a href="http://msmvps.com/blogs/bill/archive/2004/06/17/8339.aspx"&gt;tell if an assembly is a debug or release build&lt;/a&gt;.   It was nice to see that Google and my blogged helped out a fellow MVP, &lt;a href="http://msmvps.com/blogs/cdistilled/archive/2006/06/20/102446.aspx"&gt;Doug Holland&lt;/a&gt; .  &lt;/div&gt;
&lt;div&gt;Then tonight I was chatting with another fellow MVP who was having troubles with a C# build, over what looked like another case of over optimization by the JIT.  I thought it sounded very similar to the issue I posted about &lt;a href="http://msmvps.com/blogs/bill/archive/2006/04/04/89234.aspx"&gt;String.IsNullOrEmpty causing a runtime null exception&lt;/a&gt;.  MVP2 asked if there was a way around the JIT optimizations.  Well there is the compiler options in both VB and C#, but that switch alone does not stop these kind of over optimizations.  You could of course just do a debug build but that would mean you need to remove any Debug.Asserts or Prints you might have in your code.&lt;/div&gt;
&lt;div&gt;But putting these two seemingly different things together, gives you the option to turn on JIT tracking using the Debuggable attribute, as well as turning off optimizations.&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;div&gt;&amp;lt;Assembly: Debuggable(&lt;font color="#0000ff" size="2"&gt;True&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;True&lt;/font&gt;&lt;font size="2"&gt;)&amp;gt; &lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;This will fix the null reference issue, and may help you if you encounter weird runtime bugs only in a release build, not a debug build.  Of course it does mean your code might not run as fast as it otherwise would.&lt;/font&gt;&lt;/div&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font color="#ff0000"&gt;Update: Well it turns out this fixes the null reference issue, but not the fix the issues that&lt;a href="http://msmvps.com/blogs/theproblemsolver/archive/2006/06/27/102909.aspx"&gt; Maurice reported.&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div id="CSBloggerSig"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=102913" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category></item><item><title>Builderau just doesn’t get it ?? (early Friday RANT)</title><link>http://msmvps.com/blogs/bill/archive/2006/05/25/96872.aspx</link><pubDate>Thu, 25 May 2006 09:38:26 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:96872</guid><dc:creator>bill</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=96872</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2006/05/25/96872.aspx#comments</comments><description>&lt;div&gt;A couple of weeks ago, I got an email from &lt;a href="http://www.builderau.com.au"&gt;Builderau &lt;/a&gt; describing &lt;a href="http://www.builderau.com.au/architect/dotnet/print.htm?TYPE=story&amp;amp;AT=39250381-39024710t-20000008c"&gt;how to use snippets in Visual Studio 2005.&lt;/a&gt;   I was kind of amazed to see that they provided two links to "snippy" editor, but not a single one link to the VB Snippet Editor.  That's despite the &lt;a href="http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=a927f4e7-8e7f-45ce-8b72-f3b9384a3eab"&gt;VB Snippet Editor &lt;/a&gt;being open source and also linked to from MSDN. Other magazines, MSDN magazine, Code magazine, DevX to name just a couple have all linked to the VB Snippet Editor.   Perhaps I am too close to the project, but I would say the VB Snippet Editor is a far superior tool, providing compilation testing, snippet management, code coloring etc, etc.  But in any case, you'd think that BuilderAu would as their name suggest at least highlight work done by fellow Aussies !!&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Okay so I let that one go pass (until now that is) as I thought perhaps I am too close to the matter at hand.  But today's email just totally pissed me off…&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Today they forwarded an article from TechRepublic titled "&lt;a href="http://techrepublic.com.com/5102-3513-6075169.html"&gt;VB.NET or C# : choose your weapon&lt;/a&gt;".&lt;/div&gt;
&lt;div&gt;Apart from the fact the article was incredibly shallow, barely even touching the surface of the differences, the author clearly doesn't know sh*t about VB.NET.  He goes on about how VB.NET does not have unsigned integers.  Seriously, where has he been, or what orifice has he got his head in ?  How hard is it for them to stop and &lt;a href="http://msdn2.microsoft.com/en-us/library/47zceaw7(VS.80).aspx"&gt;RTFM&lt;/a&gt; before writing such trash.  &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;For the record, &lt;a href="http://msdn2.microsoft.com/en-us/library/47zceaw7(VS.80).aspx"&gt;VB does have FULL SUPPORT for unsigned integers &lt;/a&gt;(and signed bytes for that matter) .  I could understand some people not knowing this, but not someone who claims to provide an authoritative article on the matter !!!&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div id="CSBloggerSig"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=96872" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Rant/default.aspx">Rant</category></item></channel></rss>