<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">knom's developer corner</title><subtitle type="html" /><id>http://blogs.msdn.com/knom/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/knom/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-12-16T11:55:31Z</updated><entry><title>Visual Studio 2010 Beta 2 – Setup Screenshots</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/archive/2009/10/20/visual-studio-2010-beta-2-setup-screenshots.aspx" /><id>http://blogs.msdn.com/knom/archive/2009/10/20/visual-studio-2010-beta-2-setup-screenshots.aspx</id><published>2009-10-20T13:59:06Z</published><updated>2009-10-20T13:59:06Z</updated><content type="html">&lt;p&gt; Today I’ve installed Visual Studio 2010 Beta 2 Ultimate on a &lt;a href="http://blogs.msdn.com/knom/archive/2009/04/07/windows-7-vhd-boot-setup-guideline.aspx"&gt;VHD-booted machine&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The new version of our development tool is based on Windows Presentation Foundation, which means that a lot of new flexibility (e.g. diagrams within the code editor) are possible. VS 2010 comes together with .NET 4 Beta 2.&lt;/p&gt;  &lt;p&gt;There’s also a new logo and design for the tool. &lt;/p&gt;  &lt;p&gt;MSDN Subscribers can get the public beta 2 on &lt;a href="http://www.msdn.com"&gt;www.msdn.com&lt;/a&gt; (which is also redesigned), the rest of you will have to wait until Wednesday.&lt;/p&gt;  &lt;p&gt;See below the screenshots of the installation:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_1_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VS2010_1" border="0" alt="VS2010_1" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_1_thumb.png" width="244" height="199" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The good old “Start Installation” dialog, in new design.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_2_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VS2010_2" border="0" alt="VS2010_2" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_2_thumb.png" width="244" height="188" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The new Visual Studio Wave, as the installer is loading.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_3_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VS2010_3" border="0" alt="VS2010_3" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_3_thumb.png" width="244" height="188" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Press “Next” to start installation.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_4_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VS2010_4" border="0" alt="VS2010_4" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_4_thumb.png" width="244" height="188" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;EULA Agreement, and prerequisite installation.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_5_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VS2010_5" border="0" alt="VS2010_5" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_5_thumb.png" width="244" height="188" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Selection of components to be installed:&lt;/p&gt;  &lt;p&gt;Note – This screen got lots slimmer. With the new &lt;strong&gt;Ultimate&lt;/strong&gt; edition you can choose between different languages to be installed, as well as VSTO for Office and Sharepoint Tools.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_6_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VS2010_6" border="0" alt="VS2010_6" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_6_thumb.png" width="244" height="188" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Installation Screen – Component Overview&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_7_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VS2010_7" border="0" alt="VS2010_7" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_7_thumb.png" width="244" height="178" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;WE’RE DONE! This is the new start screen of Visual Studio 2010.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_8_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VS2010_8" border="0" alt="VS2010_8" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_8_thumb.png" width="244" height="206" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now with environment settings for “Visual F#” and “Web Development (Code Optimized) as well as “Project Management Settings”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_9_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VS2010_9" border="0" alt="VS2010_9" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudio2010Beta2SetupScreenshots_E046/VS2010_9_thumb.png" width="244" height="189" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Here we are.. The new welcome screen! Isn’t it beautiful :-)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9909902" width="1" height="1"&gt;</content><author><name>knom</name><uri>http://blogs.msdn.com/members/knom.aspx</uri></author><category term="Visual Studio 2010" scheme="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2010/default.aspx" /></entry><entry><title>IIS7: WCF Services - .SVC do not work</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/archive/2009/10/14/iis7-wcf-services-svc-do-not-work.aspx" /><id>http://blogs.msdn.com/knom/archive/2009/10/14/iis7-wcf-services-svc-do-not-work.aspx</id><published>2009-10-14T08:25:50Z</published><updated>2009-10-14T08:25:50Z</updated><content type="html">&lt;p&gt;Recently I came across a problem with Windows Communication Foundation Services and IIS 7.&lt;/p&gt;  &lt;p&gt;What I did is, deploy a .SVC file to my IIS 7.&lt;/p&gt;  &lt;p&gt;The service worked during development on the local ASP.NET Dev Webserver, but after deploying it to the server, there was an error:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;HTTP Error 500.19 - Internal Server Error&lt;/strong&gt;    &lt;br /&gt;The requested page cannot be accessed because the related configuration data for the page is invalid. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The configuration section 'system.serviceModel' cannot be read because it is missing a section declaration.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Another error might be:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Unhandled Exception: System.ServiceModel.ProtocolException: The remote server returned an unexpected response: (405) Method not allowed&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;After some research I found the problem: WCF Services are not registered on the IIS!&lt;/p&gt;  &lt;p&gt;To fix it, follow these steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Make sure ASP.NET pages work on IIS (if not see below).&lt;/li&gt;    &lt;li&gt;Execute the following command with elevated privileges (as administrator):     &lt;br /&gt;&lt;strong&gt;&amp;quot;%WINDIR%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe&amp;quot; -i&lt;/strong&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;If ASP.NET pages neither work, register ASP.NET first:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open a command prompt as administrator.&lt;/li&gt;    &lt;li&gt;Execute the follow command:     &lt;br /&gt;&lt;strong&gt;&amp;quot;%WINDIR%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe&amp;quot; –i&lt;/strong&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;For more details see the MSDN documentation:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms732012.aspx" target="_blank"&gt;ServiceModelReg Tool&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms752252.aspx" target="_blank"&gt;Problems with .SVC Registrations&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/k6h9cz8h(VS.80).aspx" target="_blank"&gt;ASP.NET IIS Registration Tool&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9907043" width="1" height="1"&gt;</content><author><name>knom</name><uri>http://blogs.msdn.com/members/knom.aspx</uri></author><category term="WCF" scheme="http://blogs.msdn.com/knom/archive/tags/WCF/default.aspx" /><category term="IIS" scheme="http://blogs.msdn.com/knom/archive/tags/IIS/default.aspx" /></entry><entry><title>CodeFest-Meals – Silverlight Webcast Series and Sample App</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/archive/2009/09/09/codefest-meals-silverlight-webcast-series-and-sample-app.aspx" /><id>http://blogs.msdn.com/knom/archive/2009/09/09/codefest-meals-silverlight-webcast-series-and-sample-app.aspx</id><published>2009-09-09T16:26:34Z</published><updated>2009-09-09T16:26:34Z</updated><content type="html">&lt;p&gt;During the last weeks I’ve been working on a Silverlight sample application called “CodeFest-Meals”. The sample application was built for a webcast series we’re doing on &lt;a href="http://www.codefest.at"&gt;www.codefest.at&lt;/a&gt;. One of the goals of the application was to have a nice-design. So Wolfgang Hofellner, who is also the artist of &lt;a href="http://schabus.knor.net/" target="_blank"&gt;Schabus &amp;amp; Knor comics&lt;/a&gt;, designed a nice user interface for me.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/CodeFestMealsSilverlightWebcastSeriesand_D916/image_2.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.msdn.com/blogfiles/knom/WindowsLiveWriter/CodeFestMealsSilverlightWebcastSeriesand_D916/image_thumb.png" width="468" height="352" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Normally I’m more of a XAML guy, but for this series I really forced myself to use NO XAML at all. Everything was done within the new Expression Blend 3. And i really need to admit, it was lots of fun! No XAML any longer for me, at least for CodeFest Meals ;-)&lt;/p&gt;  &lt;p&gt;If you’re interested in seeing me doing the entire application completely in Expression Blend 3, have a look at our On-Demand or Live- webcast series.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Live Webcasts - Overview over different topics in Silverlight:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.codefest.at/post/2009/08/28/Silverlight-Webcast-Teil-13.aspx" target="_blank"&gt;Part 1 (download)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codefest.at/post/2009/09/05/Silverlight-Webcast-zur-Oberflachengestaltung-online.aspx" target="_blank"&gt;Part 2 (download)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://webcast.codefest.at/" target="_blank"&gt;Part 3 (Live on 18/9/09)&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;On-demand Webcasts – More in depth episodes on Silverlight:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.codefest.at/post/2009/09/09/Silverlight-On-Demand-Webcast-e28093-Teil-1.aspx" target="_blank"&gt;Part 1 – Blend &amp;amp; Sketchflow Introduction&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And last but not least&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.knor.net/Demos/CodeFestMeals/" target="_blank"&gt;CodeFest-Meals demo online&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Btw: I’m doing an event on Silverlight advanced topics in Vienna on September 25th, which will also be recorded. &lt;a href="http://www.codefest.at/post/2009/08/31/Silverlight-NET-RIA-MSDN-Briefing-am-2592009-in-Wien.aspx" target="_blank"&gt;See here for details.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9893086" width="1" height="1"&gt;</content><author><name>knom</name><uri>http://blogs.msdn.com/members/knom.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/knom/archive/tags/Silverlight/default.aspx" /></entry><entry><title>LINQ-To-Everywhere – List of LINQ Providers</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/archive/2009/04/27/linq-to-everywhere-list-of-linq-providers.aspx" /><id>http://blogs.msdn.com/knom/archive/2009/04/27/linq-to-everywhere-list-of-linq-providers.aspx</id><published>2009-04-27T12:23:05Z</published><updated>2009-04-27T12:23:05Z</updated><content type="html">&lt;p&gt;This weekend I’ve built a small application, which queries the “Simpsons” seasons guide data and updates the filenames/descriptions. To do this I needed to query a CSV file. While searching for a LINQ to CSV file implementation I’ve found an interesting list of LINQ Providers provider by &lt;a href="http://blogs.msdn.com/charlie/" target="_blank"&gt;MVP Charlie Calvert&lt;/a&gt;.&lt;/p&gt;  &lt;li&gt;&lt;a href="http://www.codeproject.com/KB/linq/LINQtoCSV.aspx"&gt;LINQ to CSV&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://weblogs.asp.net/fmarguerie/archive/2006/06/26/Introducing-Linq-to-Amazon.aspx"&gt;LINQ to Amazon&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/LINQtoAD"&gt;LINQ to Active Directory&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://paulstovell.net/blog/index.php/why-synclinq-should-matter-to-you/"&gt;LINQ to Bindable Sources&lt;/a&gt; (SyncLINQ) &lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/LinqOverCSharp"&gt;LINQ to C# project&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/clinq"&gt;LINQ to Continuous Data&lt;/a&gt; (CLinq) &lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/LinqtoCRM"&gt;LINQ to CRM&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/LinqToGeo"&gt;LINQ To Geo - Language Integrated Query for Geospatial Data&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/xlslinq"&gt;LINQ to Excel&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/metalinq"&gt;LINQ to Expressions&lt;/a&gt; (MetaLinq) &lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/LinqExtender"&gt;LINQ Extender&lt;/a&gt; (Toolkit for building LINQ Providers) &lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/LINQFlickr"&gt;LINQ to Flickr&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/glinq"&gt;LINQ to Google&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/i4o/Release/ProjectReleases.aspx?ReleaseId=3519"&gt;LINQ to Indexes&lt;/a&gt; (LINQ and i40) &lt;/li&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/mattwar/archive/2007/08/09/linq-building-an-iqueryable-provider-part-vi.aspx"&gt;LINQ to IQueryable&lt;/a&gt; (Matt Warren on Providers) &lt;/li&gt;  &lt;li&gt;&lt;a href="http://james.newtonking.com/archive/2008/02/11/linq-to-json-beta.aspx"&gt;LINQ to JSON&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2007/04/05/the-iqueryable-tales-linq-to-ldap-part-0.aspx"&gt;LINQ to LDAP&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.ayende.com/Blog/archive/2007/03/17/Implementing-Linq-for-NHibernate-A-How-To-Guide--Part.aspx"&gt;LINQ to NHibernate&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/JSLINQ"&gt;LINQ to JavaScript&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://weblogs.asp.net/fbouma/archive/2008/03/12/beta-of-linq-to-llblgen-pro-released.aspx"&gt;LINQ to LLBLGen Pro&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/linqtolucene"&gt;LINQ to Lucene&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/metawebToLinQ"&gt;LINQ to Metaweb(freebase)&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://code2code.net/DB_Linq/"&gt;LINQ to MySQL, Oracle and PostgreSql&lt;/a&gt; (DbLinq) &lt;/li&gt;  &lt;li&gt;&lt;a href="http://blog.joefeser.com/post/Linq-To-NCover-Part-2.aspx"&gt;LINQ to NCover&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.liensberger.it/web/blog/?p=235"&gt;LINQ to Opf3&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e848dc1d-5be3-4941-8705-024bc7f180ba&amp;amp;displaylang=en"&gt;LINQ to Parallel (PLINQ)&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/hartmutm/archive/2006/07/24/677200.aspx"&gt;LINQ to RDF Files&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/LINQtoSharePoint"&gt;LINQ to Sharepoint&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/LinqToSimpleDB"&gt;LINQ to SimpleDB&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/Slinq/"&gt;LINQ to Streams&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/LinqToTwitter"&gt;LINQ to Twitter&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/hartmutm/archive/2006/06/12/628382.aspx"&gt;LINQ to WebQueries&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://bloggingabout.net/blogs/emile/archive/2005/12/12/10514.aspx"&gt;LINQ to WMI&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.fissum.com/blog/archive/2008/04/23/linq-to-wiql.aspx"&gt;Linq To WIQL&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://cs.rthand.com/blogs/blog_with_righthand/archive/2008/02/23/LINQ-to-XtraGrid.aspx"&gt;LINQ to XtraGrid&lt;/a&gt;&lt;/li&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9570728" width="1" height="1"&gt;</content><author><name>knom</name><uri>http://blogs.msdn.com/members/knom.aspx</uri></author><category term="Development" scheme="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx" /><category term="Personal" scheme="http://blogs.msdn.com/knom/archive/tags/Personal/default.aspx" /><category term="Visual Studio 2008" scheme="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx" /></entry><entry><title>Windows 7 – VHD Boot – Setup Guideline</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/archive/2009/04/07/windows-7-vhd-boot-setup-guideline.aspx" /><id>http://blogs.msdn.com/knom/archive/2009/04/07/windows-7-vhd-boot-setup-guideline.aspx</id><published>2009-04-07T09:40:32Z</published><updated>2009-04-07T09:40:32Z</updated><content type="html">&lt;p&gt;Windows 7 has a really useful feature called “VHD Boot”. With that you can boot your entire Windows out of a Virtual Hard Disk file (as those used with Virtual PC or Virtual Server).&lt;/p&gt;  &lt;p&gt;This VHD file is mounted as a virtual disk, you can use it as a normal hard disk drive, but all the data is stored in ONE file. The machine is booted physically (unlike with Virtual PC), so you can only run one at a time, but have the full machine’s power.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;The advantages are magnificent:&lt;/u&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Simply copy one file (the .VHD file) and you’re entire system is included. &lt;/li&gt;    &lt;li&gt;Create &lt;strong&gt;incremental&lt;/strong&gt; VHD files: One VHD file can be based on another one. So if you have different systems, create a base Win7 VHD and make all others incremental. This will save a lot of disk space! &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;u&gt;There’re also some small disadvantages :-)&lt;/u&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The .VHD booted OS needs to be Windows 7, Windows Server 2008 R2 or later. &lt;/li&gt;    &lt;li&gt;There’s a performance decrease of about 3%. &lt;/li&gt;    &lt;li&gt;Hibernate and some BitLocker scenarios don’t work      &lt;br /&gt;(BitLocker CAN be used within the guest VHD though, but not on the disk where the VHD resides). &lt;/li&gt;    &lt;li&gt;Windows Experience index won’t work.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For the last three months, all my machines have been running as VHD booted ones. &lt;/p&gt;  &lt;p&gt;Btw. you can exchange physically booted VHD file with Virtual PC VHD files. All you need to do is running &lt;strong&gt;&lt;em&gt;sysprep /generalize /oobe&lt;/em&gt;&lt;/strong&gt;. Also the OS needs to be 32-Bit because of Virtual PC.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;So how do you install a VHD-Boot machine?&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Boot the system with a setup DVD or &lt;a href="http://www.elmajdal.net/Win7/Installing_Windows_7_From_a_USB_Stick.aspx" target="_blank"&gt;USB stick&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;At the setup screen, don’t choose “Install Now”, but press &lt;strong&gt;“Shift-F10”&lt;/strong&gt; to get into command line mode &lt;em&gt;[thanks to the many feedbacks for this shortcut!].&lt;/em&gt;       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/Windows7VHDBootSetupGuideline_FE70/2_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="2" border="0" alt="2" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/Windows7VHDBootSetupGuideline_FE70/2_thumb.jpg" width="420" height="320" /&gt;&lt;/a&gt;&amp;#160; &lt;/li&gt;    &lt;li&gt;Enter &lt;strong&gt;diskpart&lt;/strong&gt; to start the partitioning utitlity.       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/Windows7VHDBootSetupGuideline_FE70/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/Windows7VHDBootSetupGuideline_FE70/image_thumb.png" width="520" height="95" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Create a new VHD file by entering      &lt;br /&gt;&lt;strong&gt;       &lt;br /&gt;&lt;font face="Courier New"&gt;create vdisk file=”D:\pathToVhd.vhd” type=expandable maximum=maxsizeInMegabyte&lt;/font&gt;&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;For &lt;strong&gt;differencing&lt;/strong&gt; VHDs you need to add an additional parameter &lt;strong&gt;&lt;font face="Courier New"&gt;parent=”D:\pathtoparent.vhd”&lt;/font&gt;&lt;/strong&gt;.       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/Windows7VHDBootSetupGuideline_FE70/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/Windows7VHDBootSetupGuideline_FE70/image_thumb_4.png" width="520" height="55" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Now select the new VHD and attach it as a physical disk.      &lt;br /&gt;      &lt;br /&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;select vdisk file=”D:\pathToVhd.vhd”          &lt;br /&gt;attach vdisk&lt;/strong&gt;&lt;/font&gt;       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/Windows7VHDBootSetupGuideline_FE70/image_8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/Windows7VHDBootSetupGuideline_FE70/image_thumb_3.png" width="520" height="111" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;After that switch back to the setup window (e.g. using ALT+TAB) and start the setup.      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/Windows7VHDBootSetupGuideline_FE70/2_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="2" border="0" alt="2" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/Windows7VHDBootSetupGuideline_FE70/2_thumb.jpg" width="420" height="320" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Proceed the normal setup, but make sure you install to the correct disk (normally the last one), ignore the “Windows cannot install to this disk” warning!! &lt;/li&gt; &lt;/ol&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;  &lt;p&gt;At next startup, you’ll see Windows 7 in the boot menu!&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Optional:&lt;/em&gt; &lt;em&gt;If you want to add a VHD manually to the boot menu, you just need to copy an existing entry and set some parameters:&lt;/em&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;bcdedit /copy {originalguid} /d &amp;quot;New Windows 7 Installation&amp;quot;         &lt;br /&gt;bcdedit /set {newguid} device vhd=[D:]\Image.vhd          &lt;br /&gt;bcdedit /set {newguid} osdevice vhd=[D:]\Image.vhd          &lt;br /&gt;bcdedit /set {newguid} detecthal on&lt;/strong&gt;&lt;/font&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Btw: My colleague Stefan has posted &lt;a href="bcdedit /set {88468bd4-7c77-11de-8059-d17e50a7e7e7} device vhd=[V:]\DifferencingW7f.vhd "&gt;a detailed article on incremental disks&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9535415" width="1" height="1"&gt;</content><author><name>knom</name><uri>http://blogs.msdn.com/members/knom.aspx</uri></author></entry><entry><title>Slides and Demos from BigDays 2009 are online!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/archive/2009/03/22/slides-and-demos-from-bigdays-2009-are-online.aspx" /><id>http://blogs.msdn.com/knom/archive/2009/03/22/slides-and-demos-from-bigdays-2009-are-online.aspx</id><published>2009-03-23T00:22:00Z</published><updated>2009-03-23T00:22:00Z</updated><content type="html">&lt;p&gt;These days I'm travelling around austria with our biggest developer &amp;amp; IT Pro event Big&amp;gt;Days 2009!&lt;/p&gt;  &lt;p&gt;This year's theme was &amp;quot;packen wir's an&amp;quot; - translated &amp;quot;let's get to work&amp;quot;!&lt;/p&gt;  &lt;p&gt;Accompanying the theme we built a multi-tier application with .NET 3.5 and Silverlight called &amp;quot;Rent-A-Worker&amp;quot;!&lt;/p&gt;  &lt;p&gt;You can &lt;strong&gt;download&lt;/strong&gt; &lt;strong&gt;the sources&lt;/strong&gt; at &lt;a href="http://www.codeplex.com/BigDays09/"&gt;http://www.codeplex.com/BigDays09/&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;If you're interested in the &lt;strong&gt;slides&lt;/strong&gt; of my four sessoins, feel free to get them here&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.knor.net/Downloads/Events/2009/BigDays/Track3_Session1.pdf" target="_blank" mce_href="http://www.knor.net/Downloads/Events/2009/BigDays/Track3_Session1.pdf"&gt;The ADO.NET Entity Framework&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.knor.net/Downloads/Events/2009/BigDays/Track3_Session4.pdf" target="_blank" mce_href="http://www.knor.net/Downloads/Events/2009/BigDays/Track3_Session4.pdf"&gt;Smart Web Clients mit Silverlight&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.knor.net/Downloads/Events/2009/BigDays/Track3_Session5.pdf" target="_blank" mce_href="http://www.knor.net/Downloads/Events/2009/BigDays/Track3_Session5.pdf"&gt;Composite Smart Clients mit WPF und &amp;quot;PRISM&amp;quot;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.knor.net/Downloads/Events/2009/BigDays/Track4_Session2.pdf" target="_blank" mce_href="http://www.knor.net/Downloads/Events/2009/BigDays/Track4_Session2.pdf"&gt;Schluss mit Copy &amp;amp; Paste - Effizienter Arbeiten mit VS 2008&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9499752" width="1" height="1"&gt;</content><author><name>knom</name><uri>http://blogs.msdn.com/members/knom.aspx</uri></author><category term="Development" scheme="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx" /><category term="Work" scheme="http://blogs.msdn.com/knom/archive/tags/Work/default.aspx" /><category term="Events" scheme="http://blogs.msdn.com/knom/archive/tags/Events/default.aspx" /><category term="Silverlight" scheme="http://blogs.msdn.com/knom/archive/tags/Silverlight/default.aspx" /><category term="Visual Studio 2008" scheme="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx" /><category term="WPF" scheme="http://blogs.msdn.com/knom/archive/tags/WPF/default.aspx" /><category term="Composite WPF Guidance" scheme="http://blogs.msdn.com/knom/archive/tags/Composite+WPF+Guidance/default.aspx" /></entry><entry><title>Enable Instant Answers – in a country outside of the US</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/archive/2009/03/04/enable-instant-answers-in-a-country-outside-of-the-us.aspx" /><link rel="enclosure" type="application/octet-stream" length="742" href="http://blogs.msdn.com/knom/attachment/9458242.ashx" /><id>http://blogs.msdn.com/knom/archive/2009/03/04/enable-instant-answers-in-a-country-outside-of-the-us.aspx</id><published>2009-03-04T12:05:00Z</published><updated>2009-03-04T12:05:00Z</updated><content type="html">&lt;P&gt;&lt;A href="http://blogs.msdn.com/knom/archive/2009/02/11/ie-8-searchbar-instant-answers.aspx" mce_href="http://blogs.msdn.com/knom/archive/2009/02/11/ie-8-searchbar-instant-answers.aspx"&gt;IE 8 Searchbar – Instant Answers&lt;/A&gt; is really cool (see below).&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/EnableInstantAnswersinacountryoutsideoft_8DE5/image_11_2.png" mce_href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/EnableInstantAnswersinacountryoutsideoft_8DE5/image_11_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image_11 border=0 alt=image_11 src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/EnableInstantAnswersinacountryoutsideoft_8DE5/image_11_thumb.png" width=240 height=107 mce_src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/EnableInstantAnswersinacountryoutsideoft_8DE5/image_11_thumb.png"&gt;&lt;/A&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;There’s only one problem: It doesn’t work in Austria (as in many other countries). I suppose it only works in the US :-)&lt;/P&gt;
&lt;P&gt;To make it work, you need to change the regional settings to “English-US”.&lt;/P&gt;
&lt;P&gt;There are two ways to do it&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Change your regional settings :-) (that’s really bad…) &lt;/LI&gt;
&lt;LI&gt;Change the settings of the search URL &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The latter is the more interesting I suppose!&lt;/P&gt;
&lt;P&gt;I had a look at the registry and found out that there is a setting for the search provider suggestion URL.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;[Updated for BING]&lt;/STRONG&gt; It’s under &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;U&gt;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\ &lt;BR&gt;SearchScopes\{0116A124-45AC-4E95-81CF-08D9FD996515}&lt;/U&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/EnableInstantAnswersinacountryoutsideoft_8DE5/image_3.png" width=604 height=112 mce_src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/EnableInstantAnswersinacountryoutsideoft_8DE5/image_3.png"&gt; &lt;/P&gt;
&lt;P&gt;There go to &lt;EM&gt;SuggestionsURLFallback&lt;/EM&gt; and you will see that the URL ends with &lt;EM&gt;&amp;amp;FORM=IE8SSC&amp;amp;market={Language}&lt;/EM&gt;. All you need to do is change {Language} to en-us. &lt;/P&gt;
&lt;P&gt;Voila! Instant Answers will work for you, whatever your machine settings are.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A href="http://blogs.msdn.com/knom/attachment/9458242.ashx" target=_blank mce_href="http://blogs.msdn.com/knom/attachment/9458242.ashx"&gt;You can download the registry .REG file here. (Just double click on it, to import the setting).&lt;/A&gt; [Update for BING]&lt;/STRONG&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9458242" width="1" height="1"&gt;</content><author><name>knom</name><uri>http://blogs.msdn.com/members/knom.aspx</uri></author></entry><entry><title>Custom Search Providers for Internet Explorer</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/archive/2009/02/12/custom-search-providers-for-internet-explorer.aspx" /><link rel="enclosure" type="application/octet-stream" length="1306" href="http://blogs.msdn.com/knom/attachment/9412664.ashx" /><id>http://blogs.msdn.com/knom/archive/2009/02/12/custom-search-providers-for-internet-explorer.aspx</id><published>2009-02-12T16:12:00Z</published><updated>2009-02-12T16:12:00Z</updated><content type="html">&lt;P&gt;I’m sure all of you know the search box in Internet Explorer!&lt;/P&gt;
&lt;P&gt;You can search ANY searchable site there via pluggable search providers.&lt;/P&gt;
&lt;P&gt;Per default some of them are installed, but you can add your own!&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Here’s how to do it:&lt;/U&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Go to the page you want to search through.&lt;/LI&gt;
&lt;LI&gt;Search for “TEST”.&lt;/LI&gt;
&lt;LI&gt;Copy the URL of the search result page (where TEST should be in somewhere)&lt;/LI&gt;
&lt;LI&gt;Now go to the &lt;A href="http://www.microsoft.com/windows/ie/searchguide/en-uk/default.mspx" target=_blank mce_href="http://www.microsoft.com/windows/ie/searchguide/en-uk/default.mspx"&gt;Internet Explorer Search Page&lt;/A&gt; and paste the URL in the rst textbox. &lt;BR&gt;&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;Choose a name and select install.&lt;/LI&gt;
&lt;LI&gt;Now you have a new search provider in the search box, which will search the wanted page (and substitute TEST with your search text). &lt;BR&gt;&amp;nbsp;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Note.. the search providers are &lt;STRONG&gt;standardized&lt;/STRONG&gt; and will work in any browser, which supports the open search specification.&lt;/P&gt;
&lt;P&gt;Note 2: Some sites are clever enough to include a search provider already!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/knom/archive/2009/02/11/ie-8-searchbar-instant-answers.aspx" target=_blank mce_href="http://blogs.msdn.com/knom/archive/2009/02/11/ie-8-searchbar-instant-answers.aspx"&gt;Read here how you can solve equations, get the current weather or other thing directly in the search box.&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9412664" width="1" height="1"&gt;</content><author><name>knom</name><uri>http://blogs.msdn.com/members/knom.aspx</uri></author><category term="Personal" scheme="http://blogs.msdn.com/knom/archive/tags/Personal/default.aspx" /><category term="Windows Vista" scheme="http://blogs.msdn.com/knom/archive/tags/Windows+Vista/default.aspx" /><category term="Windows Live" scheme="http://blogs.msdn.com/knom/archive/tags/Windows+Live/default.aspx" /><category term="Windows 7" scheme="http://blogs.msdn.com/knom/archive/tags/Windows+7/default.aspx" /></entry><entry><title>IE 8 Searchbar – Instant Answers</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/archive/2009/02/11/ie-8-searchbar-instant-answers.aspx" /><id>http://blogs.msdn.com/knom/archive/2009/02/11/ie-8-searchbar-instant-answers.aspx</id><published>2009-02-11T15:34:18Z</published><updated>2009-02-11T15:34:18Z</updated><content type="html">&lt;p&gt;Now that I’m running Windows 7 I’m using the new IE 8 as well. Recently I found a cool new feature called “Instant Answers”.&lt;/p&gt;  &lt;p&gt;Just enter some queries into the search box and you’ll get the answer in the drop-down box below the search box.&lt;/p&gt;  &lt;p&gt;There are different possible queries:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="501"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="249"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/IE8SearchbarInstantAnswers_BECD/image_4.png" width="244" height="90" /&gt;           &lt;br /&gt;Calculations (2+2, …)&lt;/td&gt;        &lt;td valign="top" width="250"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/IE8SearchbarInstantAnswers_BECD/image_13.png" width="244" height="90" /&gt;           &lt;br /&gt;Conversions (75 C in F, …)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="249"&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.msdn.com/blogfiles/knom/WindowsLiveWriter/IE8SearchbarInstantAnswers_BECD/image_12.png" width="244" height="109" /&gt;          &lt;br /&gt;Weather (with or without location) &lt;/td&gt;        &lt;td valign="top" width="249"&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.msdn.com/blogfiles/knom/WindowsLiveWriter/IE8SearchbarInstantAnswers_BECD/image_11.png" width="244" height="109" /&gt;          &lt;br /&gt;Equations &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="249"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/IE8SearchbarInstantAnswers_BECD/image_15.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.msdn.com/blogfiles/knom/WindowsLiveWriter/IE8SearchbarInstantAnswers_BECD/image_thumb_4.png" width="244" height="90" /&gt;&lt;/a&gt;          &lt;br /&gt;Definitions (*smile*) &lt;/td&gt;        &lt;td valign="top" width="249"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9412622" width="1" height="1"&gt;</content><author><name>knom</name><uri>http://blogs.msdn.com/members/knom.aspx</uri></author><category term="Personal" scheme="http://blogs.msdn.com/knom/archive/tags/Personal/default.aspx" /><category term="Windows 7" scheme="http://blogs.msdn.com/knom/archive/tags/Windows+7/default.aspx" /></entry><entry><title>Upgrade TFS 2008 Workgroup Edition to Standard Edition</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/archive/2009/02/09/upgrade-tfs-2008-workgroup-edition-to-standard-edition.aspx" /><id>http://blogs.msdn.com/knom/archive/2009/02/09/upgrade-tfs-2008-workgroup-edition-to-standard-edition.aspx</id><published>2009-02-09T19:46:33Z</published><updated>2009-02-09T19:46:33Z</updated><content type="html">&lt;p&gt;I’ve had a little playground TFS 2008 installation for a while for use with some “pet-projects”. I used &lt;strong&gt;TFS 2008 Workgroup Edition&lt;/strong&gt; for this, as this is already part of MSDN subscription package. This edition works the same as the full one, but is limited to 5 users.&lt;/p&gt;  &lt;p&gt;Now that I needed more user accounts for a larger project I tried to upgrade to TFS 2008 Standard Edition.&lt;/p&gt;  &lt;p&gt;This seems to be pretty easy:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;1.) Open Add/Remove Programs in control panel.       &lt;br /&gt;2.) Select “Visual Studio 2008 Team System – Team Foundation Server” and choose “Change”.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;3.) At the TFS setup, select “Upgrade” and enter the new serial number.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;4.) Finished.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;(Summarized from &lt;/em&gt;&lt;a href="http://blogs.msdn.com/bharry/archive/2008/01/15/how-to-i-upgrade-to-a-proper-version-of-tfs-2008.aspx" target="_blank"&gt;&lt;em&gt;Brian Harry's Weblog&lt;/em&gt;&lt;/a&gt;&lt;em&gt;)&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This is great, but unfortunately the serial number boxes are &lt;strong&gt;disabled / grayed&lt;/strong&gt; out on my system (and all others as well) :-)&lt;/p&gt;  &lt;p&gt;So it’s harder than expected…&lt;/p&gt;  &lt;p&gt;But.. thanks to &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/tfssetup/thread/e543c709-9c82-4bab-86f3-01287482ea8e" target="_blank"&gt;a thread in the MSDN Forums&lt;/a&gt; I found a way to change the serial number.&lt;/p&gt;  &lt;p&gt;All you need to do (as step 0.) is open &lt;strong&gt;setup.sdb&lt;/strong&gt; in     &lt;br /&gt;&amp;quot;Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Microsoft Visual Studio 2008 Team Foundation Server - ENU&amp;quot;    &lt;br /&gt;and change the &lt;strong&gt;[Product Key]&lt;/strong&gt; value (skip the dashes).&lt;/p&gt;  &lt;p&gt;Voila!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9408916" width="1" height="1"&gt;</content><author><name>knom</name><uri>http://blogs.msdn.com/members/knom.aspx</uri></author><category term="Development" scheme="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx" /><category term="Personal" scheme="http://blogs.msdn.com/knom/archive/tags/Personal/default.aspx" /><category term="Visual Studio 2008" scheme="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx" /></entry><entry><title>WPF Webcast - New Year's resolutions</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/archive/2009/01/07/wpf-webcast-new-year-s-resolutions.aspx" /><id>http://blogs.msdn.com/knom/archive/2009/01/07/wpf-webcast-new-year-s-resolutions.aspx</id><published>2009-01-07T13:34:39Z</published><updated>2009-01-07T13:34:39Z</updated><content type="html">&lt;table cellspacing="0" cellpadding="2" width="715" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;img title="NET_v_rgb2.jpg" height="152" alt="NET_v_rgb2.jpg" src="http://blogs.msdn.com/blogfiles/msdnat/WindowsLiveWriter/UserInterfacesmitWPFLiveWebcastfrBeginne_C9AD/NET_v_rgb2.jpg_3.jpg" width="160" align="left" border="0" /&gt;&lt;/td&gt;        &lt;td valign="top" width="513"&gt;I’ve a lot of New Year’s resolutions for 2009 :-) One of them is to blog more often (we’ll see how this works..) another is to do a series of &lt;strong&gt;webcasts around WPF&lt;/strong&gt;.           &lt;br /&gt;We’re starting with our first &lt;strong&gt;WPF webcast &lt;/strong&gt;on &lt;strong&gt;Friday, January 9th &lt;/strong&gt;at &lt;strong&gt;10am &lt;/strong&gt;with an overview over WPF and XAML.          &lt;br /&gt;          &lt;br /&gt;Topics we’ll cover:          &lt;br /&gt;*) Why a new UI framework          &lt;br /&gt;*) What tools, frameworks, .. do we need for WPF?          &lt;br /&gt;*) What is XAML, what is it’s syntax.          &lt;br /&gt;          &lt;br /&gt;&lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032400222&amp;amp;EventCategory=2&amp;amp;culture=de-AT&amp;amp;CountryCode=AT"&gt;&lt;strong&gt;&amp;gt;&amp;gt; Register now at the Webcast Website&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9287165" width="1" height="1"&gt;</content><author><name>knom</name><uri>http://blogs.msdn.com/members/knom.aspx</uri></author><category term="Development" scheme="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx" /><category term="Work" scheme="http://blogs.msdn.com/knom/archive/tags/Work/default.aspx" /><category term="Events" scheme="http://blogs.msdn.com/knom/archive/tags/Events/default.aspx" /><category term="Visual Studio 2008" scheme="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx" /><category term="WPF" scheme="http://blogs.msdn.com/knom/archive/tags/WPF/default.aspx" /></entry><entry><title>Wake-On-Lan Client with C#</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/archive/2008/12/31/wake-on-lan-client-with-c.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="1606" href="http://blogs.msdn.com/knom/attachment/9258423.ashx" /><id>http://blogs.msdn.com/knom/archive/2008/12/31/wake-on-lan-client-with-c.aspx</id><published>2008-12-31T15:04:00Z</published><updated>2008-12-31T15:04:00Z</updated><content type="html">&lt;p&gt;I bought myself an Acer L5100 Media Center PC, running with Windows Vista Media Center for Christmas.&lt;/p&gt;  &lt;p&gt;What I wanted was some functionality to wake up the media center out of shutdown mode. So I dig into Wake-On-Lan.&lt;/p&gt;  &lt;p&gt;Almost any modern network interface controller (NIC) supports Wake-On-Lan nowadays. You just send a special packet as a broadcast containing the layer2 MAC address of the NIC and it will boot up the computer immediately.&lt;/p&gt;  &lt;p&gt;So I tried to write my own WOL client with C#. And it turned out it’s pretty easy.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public static class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;WakeOnLan
&lt;/span&gt;{
    &lt;span style="color: blue"&gt;public static void &lt;/span&gt;WakeUp(&lt;span style="color: blue"&gt;string &lt;/span&gt;macAddress, &lt;span style="color: blue"&gt;string &lt;/span&gt;ipAddress, &lt;span style="color: blue"&gt;string &lt;/span&gt;subnetMask)
    {
        &lt;span style="color: #2b91af"&gt;UdpClient &lt;/span&gt;client = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;UdpClient&lt;/span&gt;();

        &lt;span style="color: #2b91af"&gt;Byte&lt;/span&gt;[] datagram = &lt;span style="color: blue"&gt;new byte&lt;/span&gt;[102];

        &lt;span style="color: blue"&gt;for &lt;/span&gt;(&lt;span style="color: blue"&gt;int &lt;/span&gt;i = 0; i &amp;lt;= 5; i++)
        {
            datagram[i] = 0xff;
        }

        &lt;span style="color: blue"&gt;string&lt;/span&gt;[] macDigits = &lt;span style="color: blue"&gt;null&lt;/span&gt;;
        &lt;span style="color: blue"&gt;if &lt;/span&gt;(macAddress.Contains(&lt;span style="color: #a31515"&gt;&amp;quot;-&amp;quot;&lt;/span&gt;))
        {
            macDigits = macAddress.Split(&lt;span style="color: #a31515"&gt;'-'&lt;/span&gt;);
        }
        &lt;span style="color: blue"&gt;else
        &lt;/span&gt;{
            macDigits = macAddress.Split(&lt;span style="color: #a31515"&gt;':'&lt;/span&gt;);
        }

        &lt;span style="color: blue"&gt;if &lt;/span&gt;(macDigits.Length != 6)
        {
            &lt;span style="color: blue"&gt;throw new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ArgumentException&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Incorrect MAC address supplied!&amp;quot;&lt;/span&gt;);
        }

        &lt;span style="color: blue"&gt;int &lt;/span&gt;start = 6;
        &lt;span style="color: blue"&gt;for &lt;/span&gt;(&lt;span style="color: blue"&gt;int &lt;/span&gt;i = 0; i &amp;lt; 16; i++)
        {
            &lt;span style="color: blue"&gt;for &lt;/span&gt;(&lt;span style="color: blue"&gt;int &lt;/span&gt;x = 0; x &amp;lt; 6; x++)
            {
                datagram[start + i * 6 + x] = (&lt;span style="color: blue"&gt;byte&lt;/span&gt;)&lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToInt32(macDigits[x], 16);
            }
        }

        &lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;address = &lt;span style="color: #2b91af"&gt;IPAddress&lt;/span&gt;.Parse(ipAddress);
        &lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;mask = &lt;span style="color: #2b91af"&gt;IPAddress&lt;/span&gt;.Parse(subnetMask);
        &lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;broadcastAddress = address.GetBroadcastAddress(mask);

        client.Send(datagram, datagram.Length, broadcastAddress.ToString(), 3);
    }
}&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;All you need to do is create a packet with 6 times 0xFF at the beginning.&lt;/p&gt;

&lt;p&gt;Then send 16 times the mac address of the machine you want to wake up.&lt;/p&gt;

&lt;p&gt;This is done with the UdpClient class of the .NET Framework.&lt;/p&gt;

&lt;p&gt;The target address of the packet is the broadcast address of the network, which I calculate with the help of the &lt;a href="http://blogs.msdn.com/knom/archive/2008/12/31/ip-address-calculations-with-c-subnetmasks-networks.aspx" target="_blank" mce_href="http://blogs.msdn.com/knom/archive/2008/12/31/ip-address-calculations-with-c-subnetmasks-networks.aspx"&gt;IPAddress Extensions from the earlier blog post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/knom/attachment/9258423.ashx" target="_blank"&gt;Feel free to download the sources here.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9258423" width="1" height="1"&gt;</content><author><name>knom</name><uri>http://blogs.msdn.com/members/knom.aspx</uri></author></entry><entry><title>IP Address Calculations with C# (Subnetmasks, Networks, …)</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/archive/2008/12/31/ip-address-calculations-with-c-subnetmasks-networks.aspx" /><link rel="enclosure" type="text/plain" length="3761" href="http://blogs.msdn.com/knom/attachment/9258394.ashx" /><id>http://blogs.msdn.com/knom/archive/2008/12/31/ip-address-calculations-with-c-subnetmasks-networks.aspx</id><published>2008-12-31T14:31:00Z</published><updated>2008-12-31T14:31:00Z</updated><content type="html">&lt;p&gt;Recently I wanted to develop a wake-on-lan application for my media center.&lt;/p&gt;  &lt;p&gt;For that I needed the broadcast address of my local LAN.&lt;/p&gt;  &lt;p&gt;So I decided to write a small but interesting library.. (you can leverage it for all kinds of network calculations like subnets, etc..).&lt;/p&gt;  &lt;p&gt;What it does is do a lot of funny calculations around IPv4.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Network Address: This is the first address of each network which is reserved to identify the entire network (or subnet).      &lt;br /&gt;If your ip address is&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;192.168.2.234&lt;/strong&gt;       &lt;br /&gt;and your subnetmask&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;255.255.255.0&lt;/strong&gt;       &lt;br /&gt;then your network address is&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;192.168.2.0&lt;/strong&gt;.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Broadcast Address: This is the &amp;quot;send-to-all&amp;quot; address. If any traffic is targeted for the broadcast address it is forwarded to all of the machines in the network.      &lt;br /&gt;If your ip address is&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;192.168.2.234&lt;/strong&gt;       &lt;br /&gt;and your subnetmask&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;255.255.255.0&lt;/strong&gt;       &lt;br /&gt;then your broadcast address is&amp;#160; &lt;strong&gt;192.168.2.255&lt;/strong&gt;. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Are you interested in the calculations behind that? Visit my other blog post.&lt;/p&gt;  &lt;p&gt;In .NET there is a class called &lt;a href="http://msdn2.microsoft.com/en-us/s128tyf6" mce_href="http://msdn2.microsoft.com/en-us/s128tyf6"&gt;System.Net.IPAddress&lt;/a&gt;, which is used for storing IPv4 addresses. So what I did is build a bunch of extension methods for this class:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public static class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPAddressExtensions
&lt;/span&gt;{
    &lt;span style="color: blue"&gt;public static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;GetBroadcastAddress(&lt;span style="color: blue"&gt;this &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;address, &lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;subnetMask)
    {
        &lt;span style="color: blue"&gt;byte&lt;/span&gt;[] ipAdressBytes = address.GetAddressBytes();
        &lt;span style="color: blue"&gt;byte&lt;/span&gt;[] subnetMaskBytes = subnetMask.GetAddressBytes();

        &lt;span style="color: blue"&gt;if &lt;/span&gt;(ipAdressBytes.Length != subnetMaskBytes.Length)
            &lt;span style="color: blue"&gt;throw new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ArgumentException&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Lengths of IP address and subnet mask do not match.&amp;quot;&lt;/span&gt;);

        &lt;span style="color: blue"&gt;byte&lt;/span&gt;[] broadcastAddress = &lt;span style="color: blue"&gt;new byte&lt;/span&gt;[ipAdressBytes.Length];
        &lt;span style="color: blue"&gt;for &lt;/span&gt;(&lt;span style="color: blue"&gt;int &lt;/span&gt;i = 0; i &amp;lt; broadcastAddress.Length; i++)
        {
            broadcastAddress[i] = (&lt;span style="color: blue"&gt;byte&lt;/span&gt;)(ipAdressBytes[i] | (subnetMaskBytes[i] ^ 255));
        }
        &lt;span style="color: blue"&gt;return new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPAddress&lt;/span&gt;(broadcastAddress);
    }

    &lt;span style="color: blue"&gt;public static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;GetNetworkAddress(&lt;span style="color: blue"&gt;this &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;address, &lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;subnetMask)
    {
        &lt;span style="color: blue"&gt;byte&lt;/span&gt;[] ipAdressBytes = address.GetAddressBytes();
        &lt;span style="color: blue"&gt;byte&lt;/span&gt;[] subnetMaskBytes = subnetMask.GetAddressBytes();

        &lt;span style="color: blue"&gt;if &lt;/span&gt;(ipAdressBytes.Length != subnetMaskBytes.Length)
            &lt;span style="color: blue"&gt;throw new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ArgumentException&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Lengths of IP address and subnet mask do not match.&amp;quot;&lt;/span&gt;);

        &lt;span style="color: blue"&gt;byte&lt;/span&gt;[] broadcastAddress = &lt;span style="color: blue"&gt;new byte&lt;/span&gt;[ipAdressBytes.Length];
        &lt;span style="color: blue"&gt;for &lt;/span&gt;(&lt;span style="color: blue"&gt;int &lt;/span&gt;i = 0; i &amp;lt; broadcastAddress.Length; i++)
        {
            broadcastAddress[i] = (&lt;span style="color: blue"&gt;byte&lt;/span&gt;)(ipAdressBytes[i] &amp;amp; (subnetMaskBytes[i]));
        }
        &lt;span style="color: blue"&gt;return new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPAddress&lt;/span&gt;(broadcastAddress);
    }

    &lt;span style="color: blue"&gt;public static bool &lt;/span&gt;IsInSameSubnet(&lt;span style="color: blue"&gt;this &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;address2, &lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;address, &lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;subnetMask)
    {
        &lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;network1 = address.GetNetworkAddress(subnetMask);
        &lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;network2 = address2.GetNetworkAddress(subnetMask);

        &lt;span style="color: blue"&gt;return &lt;/span&gt;network1.Equals(network2);
    }
}&lt;/pre&gt;

&lt;p&gt;The first two calculate the Broadcast- as well as the NetworkAddress. With the help of the network address you can then calculate whether two IP addresses are in the same subnet (simply by comparing the two network addresses). If they are.. fine, communication is done directly. If not, then the default gateway (a router) is used for the communication between them.&lt;/p&gt;

&lt;p&gt;These extension methods (keep in mind they’re in a static class, are static methods and have the special &lt;em&gt;this&lt;/em&gt; (extension) parameter) extend an existing type (at least it seems so to use when using Visual Studio). Now we can call..&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;ip1 = &lt;span style="color: #2b91af"&gt;IPAddress&lt;/span&gt;.Parse(&lt;span style="color: #a31515"&gt;&amp;quot;192.168.0.1&amp;quot;&lt;/span&gt;);
&lt;span style="color: blue"&gt;var &lt;/span&gt;ip2 = &lt;span style="color: #2b91af"&gt;IPAddress&lt;/span&gt;.Parse(&lt;span style="color: #a31515"&gt;&amp;quot;192.168.1.40&amp;quot;&lt;/span&gt;);
&lt;span style="color: blue"&gt;var &lt;/span&gt;mask = &lt;span style="color: #2b91af"&gt;IPAddress&lt;/span&gt;.Parse(&lt;span style="color: #a31515"&gt;&amp;quot;255.255.255.0&amp;quot;&lt;/span&gt;);
&lt;span style="color: blue"&gt;bool &lt;/span&gt;inSameNet = ip1.&lt;strong&gt;IsInSameSubnet&lt;/strong&gt;(ip2, mask);&lt;/pre&gt;

&lt;p&gt;I’ve used the &lt;em&gt;GetBroadcastAddress&lt;/em&gt; method in another sample to send a Wake-On-Lan packet to ALL computers on my subnet.&lt;/p&gt;

&lt;p&gt;The subnet mask indicates how large the network is. To ease work with it I’ve also built a helper class called &lt;strong&gt;Subnet&lt;/strong&gt;.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public static class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SubnetMask
&lt;/span&gt;{
    &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;ClassA = &lt;span style="color: #2b91af"&gt;IPAddress&lt;/span&gt;.Parse(&lt;span style="color: #a31515"&gt;&amp;quot;255.0.0.0&amp;quot;&lt;/span&gt;);
    &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;ClassB = &lt;span style="color: #2b91af"&gt;IPAddress&lt;/span&gt;.Parse(&lt;span style="color: #a31515"&gt;&amp;quot;255.255.0.0&amp;quot;&lt;/span&gt;);
    &lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;ClassC = &lt;span style="color: #2b91af"&gt;IPAddress&lt;/span&gt;.Parse(&lt;span style="color: #a31515"&gt;&amp;quot;255.255.255.0&amp;quot;&lt;/span&gt;);

    &lt;span style="color: blue"&gt;public static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;CreateByHostBitLength(&lt;span style="color: blue"&gt;int &lt;/span&gt;hostpartLength)
    {
        &lt;span style="color: blue"&gt;int &lt;/span&gt;hostPartLength = hostpartLength;
        &lt;span style="color: blue"&gt;int &lt;/span&gt;netPartLength = 32 - hostPartLength;

        &lt;span style="color: blue"&gt;if &lt;/span&gt;(netPartLength &amp;lt; 2)
            &lt;span style="color: blue"&gt;throw new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ArgumentException&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Number of hosts is to large for IPv4&amp;quot;&lt;/span&gt;);

        &lt;span style="color: #2b91af"&gt;Byte&lt;/span&gt;[] binaryMask = &lt;span style="color: blue"&gt;new byte&lt;/span&gt;[4];

        &lt;span style="color: blue"&gt;for &lt;/span&gt;(&lt;span style="color: blue"&gt;int &lt;/span&gt;i = 0; i &amp;lt; 4; i++)
        {
            &lt;span style="color: blue"&gt;if &lt;/span&gt;(i * 8 + 8 &amp;lt;= netPartLength)
                binaryMask[i] = (&lt;span style="color: blue"&gt;byte&lt;/span&gt;)255;
            &lt;span style="color: blue"&gt;else if &lt;/span&gt;(i * 8 &amp;gt; netPartLength)
                binaryMask[i] = (&lt;span style="color: blue"&gt;byte&lt;/span&gt;)0;
            &lt;span style="color: blue"&gt;else
            &lt;/span&gt;{
                &lt;span style="color: blue"&gt;int &lt;/span&gt;oneLength = netPartLength - i * 8;
                &lt;span style="color: blue"&gt;string &lt;/span&gt;binaryDigit =
                    &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Empty.PadLeft(oneLength, &lt;span style="color: #a31515"&gt;'1'&lt;/span&gt;).PadRight(8, &lt;span style="color: #a31515"&gt;'0'&lt;/span&gt;);
                binaryMask[i] = &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToByte(binaryDigit, 2);
            }
        }
        &lt;span style="color: blue"&gt;return new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPAddress&lt;/span&gt;(binaryMask);
    }

    &lt;span style="color: blue"&gt;public static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;CreateByNetBitLength(&lt;span style="color: blue"&gt;int &lt;/span&gt;netpartLength)
    {
        &lt;span style="color: blue"&gt;int &lt;/span&gt;hostPartLength = 32 - netpartLength;
        &lt;span style="color: blue"&gt;return &lt;/span&gt;CreateByHostBitLength(hostPartLength);
    }

    &lt;span style="color: blue"&gt;public static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPAddress &lt;/span&gt;CreateByHostNumber(&lt;span style="color: blue"&gt;int &lt;/span&gt;numberOfHosts)
    {
        &lt;span style="color: blue"&gt;int &lt;/span&gt;maxNumber = numberOfHosts + 1;

        &lt;span style="color: blue"&gt;string &lt;/span&gt;b = &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToString(maxNumber, 2);

        &lt;span style="color: blue"&gt;return &lt;/span&gt;CreateByHostBitLength(b.Length);
    }
}&lt;/pre&gt;

&lt;p&gt;This class provides constant subnet masks for Class A-C networks as well as methods for calculating subnet masks. A subnet mask is 32-bit long which consist of the &lt;em&gt;network-part&lt;/em&gt; as well as the &lt;em&gt;host-part&lt;/em&gt;. The methods create subnet masks either by the number of bits in the host- or network part or by the number of hosts, which should fit into the network.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;classCMask = &lt;span style="color: #2b91af"&gt;SubnetMask&lt;/span&gt;.CreateByNetBitLength(24);&lt;/pre&gt;

&lt;p&gt;creates a subnet mask with 24-bits network part, hence a class C subnet mask.&lt;/p&gt;

&lt;p&gt;Have a lot of fun with IP calculations and visit my post about a wake-on-lan client.&lt;/p&gt;

&lt;p&gt;Also feel free to &lt;strong&gt;&lt;a href="http://blogs.msdn.com/knom/attachment/9258394.ashx" target="_blank"&gt;download the sources here&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9258394" width="1" height="1"&gt;</content><author><name>knom</name><uri>http://blogs.msdn.com/members/knom.aspx</uri></author></entry><entry><title>WPF Day in Dublin</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/archive/2008/12/17/wpf-day-in-dublin.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="3579058" href="http://blogs.msdn.com/knom/attachment/9230967.ashx" /><id>http://blogs.msdn.com/knom/archive/2008/12/17/wpf-day-in-dublin.aspx</id><published>2008-12-17T17:56:00Z</published><updated>2008-12-17T17:56:00Z</updated><content type="html">&lt;P&gt;Last week I was in Dublin doing two sessions on WPF for Microsoft Ireland.&lt;/P&gt;
&lt;P&gt;They did a "Client-UI Day", where they featured WPF and Silverlight.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WPFDayinDublin_DEDE/phone%20pics%20037_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WPFDayinDublin_DEDE/phone%20pics%20037_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=184 alt="phone pics 037" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WPFDayinDublin_DEDE/phone%20pics%20037_thumb.jpg" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WPFDayinDublin_DEDE/phone%20pics%20037_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;The first session was given by the Irish Developer Evangelist &lt;A href="http://blogs.msdn.com/ronang/" target=_blank mce_href="http://blogs.msdn.com/ronang/"&gt;Ronan Geraghty&lt;/A&gt;, who did an introduction to the Microsoft Client Platform, showing the differences between AJAX, Silverlight, WPF and when to use what.&lt;/P&gt;
&lt;P&gt;Next I did a WPF for beginners session, where I showed all the details of XAML, Databinding, Styles, Templates, etc...&lt;/P&gt;
&lt;P&gt;Afterwards my colleague Martha Rother from Ireland did a session on Silverlight.&lt;/P&gt;
&lt;P&gt;Last but not least I showed how to leverage WPF and &lt;A href="http://www.codeplex.com/compositewpf/" target=_blank mce_href="http://www.codeplex.com/compositewpf/"&gt;Composite WPF Guidance&lt;/A&gt; ("Prism") to build business applications.&lt;/P&gt;
&lt;P&gt;Overall a really nice event, with around 80 attendees and a lot of interesting ideas and feedback on the Microsoft Client Continuum.&lt;/P&gt;
&lt;P&gt;If you're interested in my slides on WPF Introduction and Composite WPF, find them here:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A class="" href="http://blogs.msdn.com/knom/attachment/9230967.ashx" target=_blank mce_href="http://blogs.msdn.com/knom/attachment/9230967.ashx"&gt;&lt;STRONG&gt;WPF Sessions.zip&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Going home from Ireland I took two flights via London.. What a bad choice.. I drove to Dublin Airport at 6:30 am, arriving in Vienna at 5pm :-) Almost half a day of traveling and waiting...&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9230967" width="1" height="1"&gt;</content><author><name>knom</name><uri>http://blogs.msdn.com/members/knom.aspx</uri></author><category term="Development" scheme="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx" /><category term="Personal" scheme="http://blogs.msdn.com/knom/archive/tags/Personal/default.aspx" /><category term="Events" scheme="http://blogs.msdn.com/knom/archive/tags/Events/default.aspx" /><category term="Silverlight" scheme="http://blogs.msdn.com/knom/archive/tags/Silverlight/default.aspx" /><category term="Visual Studio 2008" scheme="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx" /><category term="WPF" scheme="http://blogs.msdn.com/knom/archive/tags/WPF/default.aspx" /><category term="Composite WPF Guidance" scheme="http://blogs.msdn.com/knom/archive/tags/Composite+WPF+Guidance/default.aspx" /></entry><entry><title>Silverlight Toolkit - December Release</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/knom/archive/2008/12/16/silverlight-toolkit-december-release.aspx" /><id>http://blogs.msdn.com/knom/archive/2008/12/16/silverlight-toolkit-december-release.aspx</id><published>2008-12-16T13:55:31Z</published><updated>2008-12-16T13:55:31Z</updated><content type="html">&lt;p&gt;The Silverlight Toolkit is a project built by the Silverlight product team, which contains a lot of &amp;quot;out-of-release cycle&amp;quot; controls.&lt;/p&gt;  &lt;p&gt;These are grouped into three parts:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Controls&lt;/li&gt;    &lt;li&gt;Charts&lt;/li&gt;    &lt;li&gt;Themes&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Controls include various nice controls (lots of them already part of WPF):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Auto Complete Textbox     &lt;br /&gt;&lt;img height="90" alt="AutoCompleteBox example" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=Silverlight&amp;amp;DownloadId=47665" width="630" /&gt;&lt;/li&gt;    &lt;li&gt;DockPanel     &lt;br /&gt;&lt;img height="126" alt="DockPanel example" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=Silverlight&amp;amp;DownloadId=47668" width="630" /&gt;&lt;/li&gt;    &lt;li&gt;Expander     &lt;br /&gt;&lt;img height="126" alt="Expander example" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=Silverlight&amp;amp;DownloadId=47815" width="630" /&gt;&lt;/li&gt;    &lt;li&gt;Label&lt;/li&gt;    &lt;li&gt;NumericUpDown&lt;/li&gt;    &lt;li&gt;TreeView     &lt;br /&gt;&lt;img height="157" alt="TreeView example" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=Silverlight&amp;amp;DownloadId=47682" width="632" /&gt;&lt;/li&gt;    &lt;li&gt;Viewbox&lt;/li&gt;    &lt;li&gt;WrapPanel&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These controls are especially useful if you plan to write business applications. Also they have similar controls in WPF, so if you plan to port your apps from Silverlight to WPF they come in handy as well.&lt;/p&gt;  &lt;p&gt;The &lt;strong&gt;second part&lt;/strong&gt; contains a number of various chart controls.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="400" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="133"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/SilverlightToolkitDecemberRelease_A7B0/image_5.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="128" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/SilverlightToolkitDecemberRelease_A7B0/image_thumb_1.png" width="176" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/SilverlightToolkitDecemberRelease_A7B0/image_7.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="128" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/SilverlightToolkitDecemberRelease_A7B0/image_thumb_2.png" width="178" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/SilverlightToolkitDecemberRelease_A7B0/image_9.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="126" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/SilverlightToolkitDecemberRelease_A7B0/image_thumb_3.png" width="198" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;As &lt;strong&gt;third part&lt;/strong&gt;, the toolkit contains a couple of &lt;strong&gt;themes&lt;/strong&gt;, which can be applied to your controls.&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="406" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/SilverlightToolkitDecemberRelease_A7B0/image_3.png" width="644" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;Download the Silverlight Toolkit from &lt;a href="http://www.codeplex.com/Silverlight/"&gt;http://www.codeplex.com/Silverlight/&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9225170" width="1" height="1"&gt;</content><author><name>knom</name><uri>http://blogs.msdn.com/members/knom.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/knom/archive/tags/Silverlight/default.aspx" /></entry></feed>