<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.windowsclient.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">BestSnowman&amp;#39;s WPF Blog</title><subtitle type="html" /><id>http://blogs.windowsclient.net/bestsnowman/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.windowsclient.net/bestsnowman/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20423.869">Community Server</generator><updated>2008-10-01T15:49:00Z</updated><entry><title>Updates</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/archive/2009/05/18/updates.aspx" /><id>http://blogs.windowsclient.net/bestsnowman/archive/2009/05/18/updates.aspx</id><published>2009-05-19T00:49:40Z</published><updated>2009-05-19T00:49:40Z</updated><content type="html">&lt;p&gt;Its been a while since I have had a chance to update so I’ve got a few things I haven’t had time to post.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NotifyPropertyChanged     &lt;br /&gt;&lt;/strong&gt;A trick I recently discovered makes it a lot easier to deal with the INotifyPropertyChanged interface. I am working on a project that uses a lot of data types that I will be using with binding but it was getting to be a pain to implement INotifyPropertyChanged in every class. What I did was create a NotifyPropertyChanged class that implements INotifyPropertyChanged and used it as a base class for all of my data types saving me a lot of redundant code.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Ramp Up     &lt;br /&gt;&lt;/strong&gt;I was listening to .NET Rocks today about &lt;a href="http://msdn.microsoft.com/en-us/rampup/default.aspx"&gt;Ramp Up&lt;/a&gt; a new education site for Microsoft technologies that looks pretty cool.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How do I get my Window Back?&lt;/strong&gt;    &lt;br /&gt;Handy tip on those annoying windows that get stuck off screen when you change your monitor layout: &lt;a title="http://blogs.msdn.com/oldnewthing/archive/2009/05/11/9601136.aspx" href="http://blogs.msdn.com/oldnewthing/archive/2009/05/11/9601136.aspx"&gt;http://blogs.msdn.com/oldnewthing/archive/2009/05/11/9601136.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;VS 2010 Beta 1     &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://blogs.msdn.com/somasegar/archive/2009/05/18/visual-studio-2010-and-net-fx-4-beta-1-ships.aspx"&gt;Out now for MSDN, Wednesday for the rest of us&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=172133" width="1" height="1"&gt;</content><author><name>mattnewman</name><uri>http://blogs.windowsclient.net/members/mattnewman.aspx</uri></author></entry><entry><title>Visual Studio Snippets</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/archive/2009/02/15/visual-studio-snippets.aspx" /><id>http://blogs.windowsclient.net/bestsnowman/archive/2009/02/15/visual-studio-snippets.aspx</id><published>2009-02-15T22:23:18Z</published><updated>2009-02-15T22:23:18Z</updated><content type="html">&lt;p&gt;I’m away from home and on my laptop and found out how much I miss my desktop setup, aside from tools like GhostDoc and StyleCop I have a couple of snippets that make things a little easier, unfortunately I’m had to recreate them from scratch to use them.&lt;/p&gt;  &lt;p&gt;First off is the NotifyPropertyChanged property snippet based off of the VS 2005 prop snippet.&lt;/p&gt;  &lt;p&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;   &lt;br /&gt;&amp;lt;CodeSnippets&amp;#160; xmlns=&amp;quot;&lt;a href="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet&amp;quot;"&gt;http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet&amp;quot;&lt;/a&gt;&amp;gt;    &lt;br /&gt;&amp;#160; &amp;lt;CodeSnippet Format=&amp;quot;1.0.0&amp;quot;&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Header&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title&amp;gt;NotifyPropertyChanged Property&amp;lt;/Title&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Shortcut&amp;gt;nprop&amp;lt;/Shortcut&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Description&amp;gt;Code snippet for NotifyPropertyChanged Property&amp;lt;/Description&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Author&amp;gt;Snowman Consulting&amp;lt;/Author&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SnippetTypes&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SnippetType&amp;gt;Expansion&amp;lt;/SnippetType&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/SnippetTypes&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Header&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Snippet&amp;gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Declarations&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Literal&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ID&amp;gt;type&amp;lt;/ID&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ToolTip&amp;gt;Property type&amp;lt;/ToolTip&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Default&amp;gt;int&amp;lt;/Default&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Literal&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Literal&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ID&amp;gt;property&amp;lt;/ID&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ToolTip&amp;gt;Property name&amp;lt;/ToolTip&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Default&amp;gt;MyProperty&amp;lt;/Default&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Literal&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Literal&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ID&amp;gt;field&amp;lt;/ID&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ToolTip&amp;gt;The variable backing this property&amp;lt;/ToolTip&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Default&amp;gt;myVar&amp;lt;/Default&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Literal&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Declarations&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Code Language=&amp;quot;csharp&amp;quot;&amp;gt;&amp;lt;![CDATA[private $type$ $field$;    &lt;br /&gt;&amp;#160; public $type$ $property$    &lt;br /&gt;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; get     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return $field$;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; set     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if($field$ != value)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $field$ = value;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NotifyPropertyChanged(&amp;quot;$property$&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160; }    &lt;br /&gt;&amp;#160; $end$]]&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Code&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Snippet&amp;gt;    &lt;br /&gt;&amp;#160; &amp;lt;/CodeSnippet&amp;gt;    &lt;br /&gt;&amp;lt;/CodeSnippets&amp;gt;&lt;/p&gt;  &lt;p&gt;Then two snippets I use with style cop, a copyright header that StyleCop likes and an auto generated one for files I don’t want StyleCop scanning.&lt;/p&gt;  &lt;p&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;   &lt;br /&gt;&amp;lt;CodeSnippets&amp;#160; xmlns=&amp;quot;&lt;a href="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet&amp;quot;"&gt;http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet&amp;quot;&lt;/a&gt;&amp;gt;    &lt;br /&gt;&amp;#160; &amp;lt;CodeSnippet Format=&amp;quot;1.0.0&amp;quot;&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Header&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title&amp;gt;StyleCop Copyright&amp;lt;/Title&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Shortcut&amp;gt;copyright&amp;lt;/Shortcut&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Description&amp;gt;StyleCop Copyright&amp;lt;/Description&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Author&amp;gt;Snowman Consulting&amp;lt;/Author&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SnippetTypes&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SnippetType&amp;gt;Expansion&amp;lt;/SnippetType&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/SnippetTypes&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Header&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Snippet&amp;gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Declarations&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Literal&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ID&amp;gt;filename&amp;lt;/ID&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ToolTip&amp;gt;Filename&amp;lt;/ToolTip&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Default&amp;gt;filename&amp;lt;/Default&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Literal&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Literal&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ID&amp;gt;company&amp;lt;/ID&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ToolTip&amp;gt;Company name&amp;lt;/ToolTip&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Default&amp;gt;Snowman Consulting&amp;lt;/Default&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Literal&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Literal&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ID&amp;gt;year&amp;lt;/ID&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ToolTip&amp;gt;Copyright year&amp;lt;/ToolTip&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Default&amp;gt;2009&amp;lt;/Default&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Literal&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Declarations&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Code Language=&amp;quot;csharp&amp;quot;&amp;gt;&amp;lt;![CDATA[// &amp;lt;copyright file=&amp;quot;$filename$.cs&amp;quot; company=&amp;quot;$company$&amp;quot;&amp;gt;    &lt;br /&gt;//&amp;#160;&amp;#160;&amp;#160;&amp;#160; Copyright (c) $year$ $company$. All rights reserved.    &lt;br /&gt;// &amp;lt;/copyright&amp;gt;    &lt;br /&gt;&amp;#160; $end$]]&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Code&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Snippet&amp;gt;    &lt;br /&gt;&amp;#160; &amp;lt;/CodeSnippet&amp;gt;    &lt;br /&gt;&amp;#160; &amp;lt;CodeSnippet Format=&amp;quot;1.0.0&amp;quot;&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Header&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title&amp;gt;Auto-Generated&amp;lt;/Title&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Shortcut&amp;gt;auto&amp;lt;/Shortcut&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Description&amp;gt;Auto-generated comment&amp;lt;/Description&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Author&amp;gt;Snowman Consulting&amp;lt;/Author&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SnippetTypes&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SnippetType&amp;gt;Expansion&amp;lt;/SnippetType&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/SnippetTypes&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Header&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Snippet&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Code Language=&amp;quot;csharp&amp;quot;&amp;gt;&amp;lt;![CDATA[// &amp;lt;auto-generated /&amp;gt;$end$]]&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Code&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Snippet&amp;gt;    &lt;br /&gt;&amp;#160; &amp;lt;/CodeSnippet&amp;gt;    &lt;br /&gt;&amp;lt;/CodeSnippets&amp;gt;&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=106956" width="1" height="1"&gt;</content><author><name>mattnewman</name><uri>http://blogs.windowsclient.net/members/mattnewman.aspx</uri></author></entry><entry><title>Product Key Manager Update</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/archive/2009/02/07/product-key-manager-update.aspx" /><id>http://blogs.windowsclient.net/bestsnowman/archive/2009/02/07/product-key-manager-update.aspx</id><published>2009-02-07T15:33:05Z</published><updated>2009-02-07T15:33:05Z</updated><content type="html">&lt;p&gt;I have released a new beta version of &lt;a href="http://www.codeplex.com/productkeymanager" target="_blank"&gt;Product Key Manager&lt;/a&gt;. This has some fairly significant changes, the biggest is the dropping of SQL Server Compact Edition. I didn’t have the time to make it work the way I wanted after deployment in XCOPY deploy. I’ll post more on the changes later, I just thought I’d give my readers a heads up.&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=105269" width="1" height="1"&gt;</content><author><name>mattnewman</name><uri>http://blogs.windowsclient.net/members/mattnewman.aspx</uri></author><category term="PKM" scheme="http://blogs.windowsclient.net/bestsnowman/archive/tags/PKM/default.aspx" /></entry><entry><title>ClickOnce Win7 issue</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/archive/2009/01/15/clickonce-win7-issue.aspx" /><id>http://blogs.windowsclient.net/bestsnowman/archive/2009/01/15/clickonce-win7-issue.aspx</id><published>2009-01-15T16:01:00Z</published><updated>2009-01-15T16:01:00Z</updated><content type="html">&lt;p&gt;As an update to my previous &lt;a href="http://blogs.windowsclient.net/bestsnowman/archive/2009/01/14/potential-clickonce-app-issue-with-windows-7.aspx" target="_blank"&gt;mention&lt;/a&gt; of a ClickOnce issue in Windows 7 it has been reported and is being &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=398542" target="_blank"&gt;escalated to a “specific feature area”,&lt;/a&gt; presumably the ClickOnce team.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;*Update* WIll be fixed in Win 7 RTM&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=99149" width="1" height="1"&gt;</content><author><name>mattnewman</name><uri>http://blogs.windowsclient.net/members/mattnewman.aspx</uri></author><category term=".NET" scheme="http://blogs.windowsclient.net/bestsnowman/archive/tags/.NET/default.aspx" /></entry><entry><title>When the Uri class just won’t work…</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/archive/2009/01/14/when-the-uri-class-just-won-t-work.aspx" /><id>http://blogs.windowsclient.net/bestsnowman/archive/2009/01/14/when-the-uri-class-just-won-t-work.aspx</id><published>2009-01-15T01:53:21Z</published><updated>2009-01-15T01:53:21Z</updated><content type="html">&lt;p&gt;I recently had some issues with one of my projects where the application settings would just silently fail. It turns out that the XmlSerializer doesn’t like the Uri class because it has no default constructor. It turns out I’m not the first one to notice this and the &lt;a href="http://sqljunkies.com/WebLog/kmarple/archive/2005/02/23/8060.aspx" target="_blank"&gt;SerializableUri&lt;/a&gt; class is very handy and &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=95598&amp;amp;wa=wsignin1.0" target="_blank"&gt;Microsoft won’t be fixing it&lt;/a&gt;. (Special thanks to &lt;a href="http://betterthaneveryone.com/" target="_blank"&gt;Clint Rutkas&lt;/a&gt; for help figuring that one out)&lt;/p&gt;  &lt;p&gt;SerializableUri works if you are using the XmlSerializer but since I wanted to do WPF databinding and Uri is immutable I decided to write my own class. The application I am working on allows the user to enter a Uri of a WCF service to connect to that can operate on variable port numbers and schemes so I decided to create my own class called Url (real original huh…). I took some tricks from SerializableUri and included the implicit operators so you can use it basically interchangeably with Uris. Instead of doing my own parsing I’m just using the Uri class to do the parsing. It also implements INotifyPropertyChanged so you can do two way binding in WPF.&lt;/p&gt;  &lt;p&gt;using System;   &lt;br /&gt;using System.ComponentModel; &lt;/p&gt;  &lt;p&gt;/// &amp;lt;summary&amp;gt;   &lt;br /&gt;/// Since the Uri class is immutable and not XML serializable this is a class to     &lt;br /&gt;/// use for serialization and databinding    &lt;br /&gt;/// &amp;lt;/summary&amp;gt;    &lt;br /&gt;public class Url : INotifyPropertyChanged    &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; #region Fields &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; private string host; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; private int port; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; private string pathAndQuery; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; private string scheme; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; #endregion &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; #region Constructors &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public Url()   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public Url(string url)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ParseString(url);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;summary&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// Initializes a new instance of the &amp;lt;see cref=&amp;quot;Url&amp;quot;/&amp;gt; class.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;/summary&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;param name=&amp;quot;uri&amp;quot;&amp;gt;The URI.&amp;lt;/param&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public Url(Uri uri)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ParseUri(uri);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public Url(string scheme, string host, int port, string pathAndQuery)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Scheme = scheme;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Host = host;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Port = port;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.PathAndQuery = pathAndQuery;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; #endregion &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; #region Events &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;summary&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// Occurs when a property value changes.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;/summary&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public event PropertyChangedEventHandler PropertyChanged; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; #endregion &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; #region Properties&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public string AbsoluteUrl    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return this.ToString();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ParseString(value);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public string Host    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get { return this.host; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (this.host != value)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.host = value;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NotifyPropertyChanged(&amp;quot;Host&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public int Port    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get { return this.port; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (this.port != value)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.port = value;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NotifyPropertyChanged(&amp;quot;Port&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public string PathAndQuery   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get { return this.pathAndQuery; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (this.pathAndQuery != value)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.pathAndQuery = value;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NotifyPropertyChanged(&amp;quot;PathAndQuery&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public string Scheme    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get { return this.scheme; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (this.scheme != value)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.scheme = value;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NotifyPropertyChanged(&amp;quot;Scheme&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public Uri Uri    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return new Uri(this.AbsoluteUrl);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; #endregion &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; #region Implicit Operators &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public static implicit operator Uri(Url uri)   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return uri.Uri;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public static implicit operator Url(Uri uri)   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return new Url(uri);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; #endregion &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; #region Methods&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private void NotifyPropertyChanged(string info)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (this.PropertyChanged != null)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.PropertyChanged(this, new PropertyChangedEventArgs(info)); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // If any property changes the AbsoluteUrl also changes since it is just   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // a composition of the other properties.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (info != &amp;quot;AbsoluteUrl&amp;quot;)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NotifyPropertyChanged(&amp;quot;AbsoluteUrl&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;summary&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// Parses the string.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;/summary&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;param name=&amp;quot;url&amp;quot;&amp;gt;The URL.&amp;lt;/param&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private void ParseString(string url)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Using the Uri&amp;#39;s parsing for simplicity sake    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ParseUri(new Uri(url));    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;summary&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// Parses the URI.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;/summary&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;param name=&amp;quot;parseUri&amp;quot;&amp;gt;The parse URI.&amp;lt;/param&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private void ParseUri(Uri parseUri)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Scheme = parseUri.Scheme;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Host = parseUri.Host;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Port = parseUri.Port;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.PathAndQuery = parseUri.PathAndQuery;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public override string ToString()    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string formatString = &amp;quot;{0}://{1}:{2}/{3}&amp;quot;; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return string.Format(formatString, this.Scheme, this.Host, this.Port, this.PathAndQuery);   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; #endregion   &lt;br /&gt;}&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=98961" width="1" height="1"&gt;</content><author><name>mattnewman</name><uri>http://blogs.windowsclient.net/members/mattnewman.aspx</uri></author><category term="WPF" scheme="http://blogs.windowsclient.net/bestsnowman/archive/tags/WPF/default.aspx" /><category term=".NET" scheme="http://blogs.windowsclient.net/bestsnowman/archive/tags/.NET/default.aspx" /></entry><entry><title>Potential ClickOnce App issue with Windows 7</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/archive/2009/01/14/potential-clickonce-app-issue-with-windows-7.aspx" /><id>http://blogs.windowsclient.net/bestsnowman/archive/2009/01/14/potential-clickonce-app-issue-with-windows-7.aspx</id><published>2009-01-14T14:24:36Z</published><updated>2009-01-14T14:24:36Z</updated><content type="html">&lt;p&gt;I found a potential issue with ClickOnce apps on Windows 7 this morning, I pinned an app I have been working on to the new taskbar. When I launch the application from the pinned taskbar my settings (using the built-in .NET Xml Settings) are gone, but if I go and open it from the start menu my settings are back.&lt;/p&gt;  &lt;p&gt;It appears that the different way of launching ClickOnce apps in Windows 7 uses different settings files which is definitely an issue.&lt;/p&gt;  &lt;p&gt;*Update* I’ll creating a test app to verify this is what is happening later today and will post my results later.&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=98802" width="1" height="1"&gt;</content><author><name>mattnewman</name><uri>http://blogs.windowsclient.net/members/mattnewman.aspx</uri></author><category term=".NET" scheme="http://blogs.windowsclient.net/bestsnowman/archive/tags/.NET/default.aspx" /></entry><entry><title>My Windows 7 Impressions</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/archive/2009/01/13/my-windows-7-impressions.aspx" /><id>http://blogs.windowsclient.net/bestsnowman/archive/2009/01/13/my-windows-7-impressions.aspx</id><published>2009-01-14T02:44:10Z</published><updated>2009-01-14T02:44:10Z</updated><content type="html">&lt;p&gt;I installed Windows 7 beta 1 on what was left of my media center pc and I have to say overall I’m pretty impressed. I think I am going to try it out on my IBM X40 to see if it really does run as well on the net book style pc (My X40 is a 1Ghz Centrino ULV). I’m not convinced it will run that great given its performance on the machine I have it running on right now (more on that in a bit). The performance isn’t that bad but its no XP either.&lt;/p&gt;  &lt;h3&gt;The current machine&lt;/h3&gt;  &lt;p&gt;I’m currently running it on a 2.8 Ghz Dual Core Pentium D (not a spectacular processor if I’m honest), 1GB DDR2, and a mATX Asus Digital home board with the Intel 945 Chipset. It is running integrated Intel graphics which runs Aero but isn’t that spectacular beyond that. For HD I used an ATA100 IDE hard drive I had sitting around. It gets a 2.2 experience rating, lowest common denominator being the Video.&lt;/p&gt;  &lt;p&gt;Drivers for this motherboard worked out of the box with Vista and the same held true for Win7 though I have had some issues with the Video driver. Asus didn’t even provide a Vista driver since Vista came with the Intel driver and I’m guessing that same driver is in Win7. As a result I have to use the driver that came with Win7 which doesn’t seem to like 1680x1050 on my widescreen monitor. I end up switching it to my 1280x1024 monitor because right now I have to run it at 1280x960 and its I had to run the widescreen at 1280x960 and just didn’t look right.&lt;/p&gt;  &lt;p&gt;For what I have used it for up till now the performance hasn’t been too bad. Its better than Vista on this machine but once in a while grinds to the halt (like if I open Media Center).&lt;/p&gt;  &lt;h3&gt;UAC&lt;/h3&gt;  &lt;p&gt;I was thinking about all of the stuff I liked about Windows 7 over Vista after using it for less than a day and I was coming up a bit short. Then it hit me, UAC has &lt;font size="4"&gt;&lt;strong&gt;HUGE&lt;/strong&gt; &lt;/font&gt;improvements over Vista. They have changed the prompt box and the way it is displayed. In Vista its a rather jarring experience where you get abruptly shunted to the secure desktop and get the Continue/Cancel generic something happened box. Now it smoothly transitions, even on my pitiful integrated graphics, and appears to have some context about what is happening.&lt;/p&gt;  &lt;p&gt;The next big improvement is Control Panel items don’t require the prompt to enter them, only when you do something that requires the permissions which is very nice. As a general observation I don’t see it nearly as much as when I am setting up a Vista machine.&lt;/p&gt;  &lt;h3&gt;The Taskbar&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://blogs.windowsclient.net/blogs/bestsnowman/image_698B546B.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://blogs.windowsclient.net/blogs/bestsnowman/image_thumb_1D7FA825.png" width="604" height="484" /&gt;&lt;/a&gt; &lt;/h3&gt;  &lt;p&gt;At first the new taskbar felt a bit awkward but it has steadily been growing on me. Its not a feature I really miss moving back to Vista and XP machines but it is quite handy when applications have meaningful icons. Oddly though the Remote Desktop Connection link on the start menu does not:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.windowsclient.net/blogs/bestsnowman/image_1C971C6E.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://blogs.windowsclient.net/blogs/bestsnowman/image_thumb_5A44042A.png" width="402" height="245" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The executable (mstsc.exe) has the correct icon but not the link which is definitely odd. Using the default icon can be annoying if more than one app running at a time uses that icon (not a big thing, but still).&lt;/p&gt;  &lt;h3&gt;Show Desktop&lt;/h3&gt;  &lt;p&gt;The show desktop button is in a bit of an odd place, its that tiny little bar on the right side of the task bar. If you click on it you get the desktop but if you hover over it you get an interesting visualization.&lt;/p&gt;  &lt;p&gt;Take this screen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.windowsclient.net/blogs/bestsnowman/image_17F0EBE7.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://blogs.windowsclient.net/blogs/bestsnowman/image_thumb_58DF1FB1.png" width="604" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;and if you hover over the show desktop button you get this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.windowsclient.net/blogs/bestsnowman/image_77098B0D.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://blogs.windowsclient.net/blogs/bestsnowman/image_thumb_2E9B37FD.png" width="604" height="484" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This peek feature at face value seems to bit a bit of flair and not much else but it actually is quite useful but not because of the visualization but because you can see the desktop by just hovering over it and then going back to the app you are using just by moving the mouse away from it (okay, maybe its not that significant).&lt;/p&gt;  &lt;h3&gt;Internet Explorer 8&lt;/h3&gt;  &lt;p&gt;I was ready to hate IE8 in Win7 because I had been using the beta on Vista and had nothing but headaches. It is much better than the beta was, which is a very good sign.&lt;/p&gt;  &lt;h3&gt;The Rest?&lt;/h3&gt;  &lt;p&gt;I’m sitting here having used Windows 7 a little, but not a whole lot and I can’t say I have found anything other than the new Taskbar and improved UAC that has stuck out for me as real improvements. That’s not to say there aren’t other ones, there is a Screen Resolution on the context menu for the desktop which is handy and you can now do a slideshow background. Bundled apps like WordPad and Paint are improved (or should I say have been updated for the first time since Windows 95).&lt;/p&gt;  &lt;p&gt;You can burn ISOs now I guess, haven’t had a reason to do it yet, but ISO Recorder isn’t that hard to find so its not a huge deal for me. Windows Mail/Outlook Express are finally gone in favor of the Live Essentials (which I love) which means that they will actually be maintained. Hopefully in the next couple of days I’ll get a chance to does some development on it to see if there are any advantages or disadvantages.&lt;/p&gt;  &lt;h3&gt;Media Center&lt;/h3&gt;  &lt;p&gt;I used to be a huge Media Center fan, and part of me wishes I still could be. But frankly the TV Pack ended my media center days. I’d like to think they wouldn’t do the same thing again but it will likely suffer the same fate as the likes of Outlook Express/Windows Mail. It will only be updated when the OS is updated and frankly its a bit insulting to give OEMs fixes for TV handling and tell the custom builders to buy a new OEM or buy a new OS… in a year or so. I The only thing that can get me using MCE again would be Hulu support, but I don’t think I will be going back any time soon.&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=98680" width="1" height="1"&gt;</content><author><name>mattnewman</name><uri>http://blogs.windowsclient.net/members/mattnewman.aspx</uri></author></entry><entry><title>Product Key Manager 3</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/archive/2008/11/08/product-key-manager-3.aspx" /><id>http://blogs.windowsclient.net/bestsnowman/archive/2008/11/08/product-key-manager-3.aspx</id><published>2008-11-09T03:56:23Z</published><updated>2008-11-09T03:56:23Z</updated><content type="html">&lt;p&gt;Finally got the new version of &lt;a target="_blank" href="http://www.codeplex.com/productkeymanager"&gt;Product Key Manager&lt;/a&gt; done. Its getting late so I don’t have a lot of details right now, but if you are interested its up on CodePlex now.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=productkeymanager&amp;amp;DownloadId=44074" alt="" /&gt;&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=80294" width="1" height="1"&gt;</content><author><name>mattnewman</name><uri>http://blogs.windowsclient.net/members/mattnewman.aspx</uri></author><category term="PKM" scheme="http://blogs.windowsclient.net/bestsnowman/archive/tags/PKM/default.aspx" /></entry><entry><title>Product Key Manager 3… little bit closer</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/archive/2008/11/08/product-key-manager-3-little-bit-closer.aspx" /><id>http://blogs.windowsclient.net/bestsnowman/archive/2008/11/08/product-key-manager-3-little-bit-closer.aspx</id><published>2008-11-08T23:14:42Z</published><updated>2008-11-08T23:14:42Z</updated><content type="html">&lt;p&gt;I finally discovered the cause of deployment deadlocks with PKM 3, it turns out it was an issue with the same database file being used for development/debug as the ClickOnce deployed release version.&amp;#160; I’m not completely sure why the deadlocks were occurring since I had no way of debugging it but clearing database and letting a new DB being created resolved the issues on my machine.&lt;/p&gt;  &lt;p&gt;I’m going to make some changes to allow for version checking the database and different filenames for debug and release databases to avoid future issues. In attempts to resolve the issue I did implement some great improvements so I guess it wasn’t all bad. I’ll try to get a finalized version out soon.&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=80260" width="1" height="1"&gt;</content><author><name>mattnewman</name><uri>http://blogs.windowsclient.net/members/mattnewman.aspx</uri></author><category term="PKM" scheme="http://blogs.windowsclient.net/bestsnowman/archive/tags/PKM/default.aspx" /></entry><entry><title>Bindable LINQ (BLINQ)</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/archive/2008/11/05/bindable-linq-blinq.aspx" /><id>http://blogs.windowsclient.net/bestsnowman/archive/2008/11/05/bindable-linq-blinq.aspx</id><published>2008-11-06T03:39:26Z</published><updated>2008-11-06T03:39:26Z</updated><content type="html">&lt;p&gt;I stumbled upon an interesting project today called &lt;a target="_blank" href="http://www.codeplex.com/bindablelinq"&gt;Bindable LINQ&lt;/a&gt; which I have given the nickname BLINQ in the vain of DLINQ, XLINQ, PLINQ etc. What this does is make LINQ queries work with WPF binding, which really should be a part of LINQ to begin with but hey that&amp;#39;s what happens. I haven’t used it too heavily but it works for basic LINQ queries, and has significantly reduced the number of queries and calls to the database I needed for &lt;a target="_blank" href="http://www.codeplex.com/productkeymanager"&gt;Product Key Manager&lt;/a&gt; by using the WPF sorting and filtering capabilities rather than re-querying the database all of the time.&lt;/p&gt;  &lt;p&gt;If you are using WPF and LINQ I’d recommend checking it out!&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=79428" width="1" height="1"&gt;</content><author><name>mattnewman</name><uri>http://blogs.windowsclient.net/members/mattnewman.aspx</uri></author><category term="WPF" scheme="http://blogs.windowsclient.net/bestsnowman/archive/tags/WPF/default.aspx" /><category term=".NET" scheme="http://blogs.windowsclient.net/bestsnowman/archive/tags/.NET/default.aspx" /><category term="PKM" scheme="http://blogs.windowsclient.net/bestsnowman/archive/tags/PKM/default.aspx" /><category term="LINQ" scheme="http://blogs.windowsclient.net/bestsnowman/archive/tags/LINQ/default.aspx" /></entry><entry><title>Product Key Manager</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/archive/2008/11/04/product-key-manager.aspx" /><id>http://blogs.windowsclient.net/bestsnowman/archive/2008/11/04/product-key-manager.aspx</id><published>2008-11-04T11:34:14Z</published><updated>2008-11-04T11:34:14Z</updated><content type="html">&lt;p&gt;I haven’t forgotten about &lt;a target="_blank" href="http://www.codeplex.com/productkeymanager"&gt;Product Key Manager&lt;/a&gt;, but I have been busy enough that I haven’t been able to sit down and verify its ready for release. There are a few potential issues that I need to sort out that might end up being more complex to fix than they seem. The big issue I have right now is a deadlock on the first launch after install, this has been tricky to debug since it occurs right after the application is launched by the ClickOnce installer only. This may be related to some phantom deadlocks that I had earlier that I can no longer reproduce.&lt;/p&gt;  &lt;p&gt;If you are waiting on a new Product Key Manager release let me know so at least I know someone is waiting, otherwise I may end up doing a more drastic rewrite of the data access layer as that seems to be where the issues are coming from.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;*Note* I typed this up while my internet access was down and posted it when it came back online.&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=78898" width="1" height="1"&gt;</content><author><name>mattnewman</name><uri>http://blogs.windowsclient.net/members/mattnewman.aspx</uri></author><category term="PKM" scheme="http://blogs.windowsclient.net/bestsnowman/archive/tags/PKM/default.aspx" /></entry><entry><title>LINQ To SQL dead in the water?</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/archive/2008/10/31/linq-to-sql-dead-in-the-water.aspx" /><id>http://blogs.windowsclient.net/bestsnowman/archive/2008/10/31/linq-to-sql-dead-in-the-water.aspx</id><published>2008-10-31T20:42:00Z</published><updated>2008-10-31T20:42:00Z</updated><content type="html">&lt;p&gt;Hopefully not but it certainly &lt;a target="_blank" href="http://blogs.msdn.com/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities-roadmap.aspx"&gt;appears that way&lt;/a&gt;. I discovered this earlier today, can’t remember where I saw the first reference, and found a couple of great posts &lt;a target="_blank" href="http://codebetter.com/blogs/david.hayden/archive/2008/10/30/linq-to-sql-gets-kicked-to-the-curb-needs-a-good-home.aspx"&gt;here&lt;/a&gt; and &lt;a target="_blank" href="http://codebetter.com/blogs/ian_cooper/archive/2008/07/02/showing-some-support-for-linq-to-sql.aspx"&gt;here&lt;/a&gt;. As someone who uses LINQ to SQL a lot with my personal projects this is very disappointing but it appears the writing is on the wall. As pointed out in &lt;a target="_blank" href="http://blogs.msdn.com/mattwar/archive/2008/05/04/mocks-nix-an-extensible-linq-to-sql-datacontext.aspx"&gt;this article about TDD with LINQ&lt;/a&gt; LINQ to SQL was always advertised in beta as being extensible so providers for other DBs could be created but it appears that this was removed in favor of SQL Server only at RTM.&lt;/p&gt;  &lt;p&gt;I’ve always been a supporter of Microsoft but stuff like this is only going to add to the negative image they already have. The made something that was great and did its job well and at the last minute crippled it. Now LINQ to SQL has been moved to the same team in charge of the Entity Framework, &lt;a target="_blank" href="http://efvote.wufoo.com/forms/ado-net-entity-framework-vote-of-no-confidence/"&gt;which is definitely not finding favor with developers&lt;/a&gt;, which has left it for dead. Now the functionality that was originally in LINQ to SQL v1 (disabled not because of technical reasons, but political ones) is going to be included in to the Entity Framework which adds an overwhelming level of complexity that is not needed by the segment LINQ to SQL fits well.&lt;/p&gt;  &lt;p&gt;If the ADO.NET team does kill off LINQ to SQL by ignoring it I definitely won’t be switching to Entity Framework unless they find a way to make it LINQ to SQL (quite an interesting thought huh). If you use or like LINQ to SQL let them know and just maybe they will listen.&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=77898" width="1" height="1"&gt;</content><author><name>mattnewman</name><uri>http://blogs.windowsclient.net/members/mattnewman.aspx</uri></author><category term=".NET" scheme="http://blogs.windowsclient.net/bestsnowman/archive/tags/.NET/default.aspx" /></entry><entry><title>WPF DataGrid</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/archive/2008/10/25/wpf-datagrid.aspx" /><id>http://blogs.windowsclient.net/bestsnowman/archive/2008/10/25/wpf-datagrid.aspx</id><published>2008-10-25T18:39:26Z</published><updated>2008-10-25T18:39:26Z</updated><content type="html">&lt;p&gt;I was recently in the need of a DataGrid for a WPF project and turned up this: &lt;a title="http://www.codeplex.com/wpf" href="http://www.codeplex.com/wpf"&gt;http://www.codeplex.com/wpf&lt;/a&gt;. The WPF toolkit has, what appears to be, a WPF version of the Silverlight DataGrid (probably other differences). I haven’t gotten a change to really dig into the WPF toolkit but it certainly looks promising.&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=75853" width="1" height="1"&gt;</content><author><name>mattnewman</name><uri>http://blogs.windowsclient.net/members/mattnewman.aspx</uri></author><category term="WPF" scheme="http://blogs.windowsclient.net/bestsnowman/archive/tags/WPF/default.aspx" /></entry><entry><title>D-Link Firmware Upgrade – Unbelievable</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/archive/2008/10/03/d-link-firmware-upgrade-unbelievable.aspx" /><id>http://blogs.windowsclient.net/bestsnowman/archive/2008/10/03/d-link-firmware-upgrade-unbelievable.aspx</id><published>2008-10-04T02:52:00Z</published><updated>2008-10-04T02:52:00Z</updated><content type="html">&lt;p&gt;Yesterday I found out that there was a new firmware upgrade for my D-Link Router (DIR-655), something until now I had been happy with. When I got home from work I decided to upgrade, before it started the router warned me to backup the settings as the update may revert to default settings. That is fair enough, so I go ahead and backup the settings right away and then update.&lt;/p&gt;  &lt;p&gt;Now I have plenty of experience with Netgear and Linksys routers and have never had a router update completely revert settings to factory defaults (including password). Sometimes there are sections that revert but generally things like passwords and IP reservations remain unchanged. This was unfortunately not the case, in fact the password was &lt;strong&gt;removed&lt;/strong&gt;!&lt;/p&gt;  &lt;p&gt;Fortunately I backed up the settings right? I mean D-Link told me that doing so would allow me to restore my settings if the upgrade wiped them out. Well sure enough it was unable to restore settings backed up by previous firmware. I find it very hard to believe that D-Link resets all settings and gives you no way of backing them up and restoring them. The real fun came up while I was trying to work from home this morning. Since I had setup a bunch of IP reservations I started having some serious trouble with conflicts and basically had to rebuild the network quickly this morning.&lt;/p&gt;  &lt;p&gt;Long story short it was the worst firmware upgrade I have ever experienced with a router and it seriously turned me off to future D-Link products.&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=68740" width="1" height="1"&gt;</content><author><name>mattnewman</name><uri>http://blogs.windowsclient.net/members/mattnewman.aspx</uri></author></entry><entry><title>PKM Delay</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/bestsnowman/archive/2008/10/01/pkm-delay.aspx" /><id>http://blogs.windowsclient.net/bestsnowman/archive/2008/10/01/pkm-delay.aspx</id><published>2008-10-01T20:49:00Z</published><updated>2008-10-01T20:49:00Z</updated><content type="html">&lt;p&gt;I was getting to the point where I was fairly sure I was ready to release an early beta but stumbled upon a deadlock so I’ll need to resolve this before I can get a release up.&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=67868" width="1" height="1"&gt;</content><author><name>mattnewman</name><uri>http://blogs.windowsclient.net/members/mattnewman.aspx</uri></author><category term="PKM" scheme="http://blogs.windowsclient.net/bestsnowman/archive/tags/PKM/default.aspx" /></entry></feed>