<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>knom's developer corner : Visual Studio 2008</title><link>http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx</link><description>Tags: Visual Studio 2008</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>LINQ-To-Everywhere – List of LINQ Providers</title><link>http://blogs.msdn.com/knom/archive/2009/04/27/linq-to-everywhere-list-of-linq-providers.aspx</link><pubDate>Mon, 27 Apr 2009 12:23:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9570728</guid><dc:creator>knom</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/knom/comments/9570728.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=9570728</wfw:commentRss><description>&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;</description><category domain="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/knom/archive/tags/Personal/default.aspx">Personal</category><category domain="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>Slides and Demos from BigDays 2009 are online!</title><link>http://blogs.msdn.com/knom/archive/2009/03/22/slides-and-demos-from-bigdays-2009-are-online.aspx</link><pubDate>Mon, 23 Mar 2009 00:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9499752</guid><dc:creator>knom</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/knom/comments/9499752.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=9499752</wfw:commentRss><description>&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;</description><category domain="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/knom/archive/tags/Work/default.aspx">Work</category><category domain="http://blogs.msdn.com/knom/archive/tags/Events/default.aspx">Events</category><category domain="http://blogs.msdn.com/knom/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/knom/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/knom/archive/tags/Composite+WPF+Guidance/default.aspx">Composite WPF Guidance</category></item><item><title>Upgrade TFS 2008 Workgroup Edition to Standard Edition</title><link>http://blogs.msdn.com/knom/archive/2009/02/09/upgrade-tfs-2008-workgroup-edition-to-standard-edition.aspx</link><pubDate>Mon, 09 Feb 2009 19:46:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9408916</guid><dc:creator>knom</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/knom/comments/9408916.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=9408916</wfw:commentRss><description>&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;</description><category domain="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/knom/archive/tags/Personal/default.aspx">Personal</category><category domain="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>WPF Webcast - New Year's resolutions</title><link>http://blogs.msdn.com/knom/archive/2009/01/07/wpf-webcast-new-year-s-resolutions.aspx</link><pubDate>Wed, 07 Jan 2009 13:34:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9287165</guid><dc:creator>knom</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/knom/comments/9287165.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=9287165</wfw:commentRss><description>&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;</description><category domain="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/knom/archive/tags/Work/default.aspx">Work</category><category domain="http://blogs.msdn.com/knom/archive/tags/Events/default.aspx">Events</category><category domain="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/knom/archive/tags/WPF/default.aspx">WPF</category></item><item><title>WPF Day in Dublin</title><link>http://blogs.msdn.com/knom/archive/2008/12/17/wpf-day-in-dublin.aspx</link><pubDate>Wed, 17 Dec 2008 17:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9230967</guid><dc:creator>knom</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/knom/comments/9230967.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=9230967</wfw:commentRss><description>&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;</description><enclosure url="http://blogs.msdn.com/knom/attachment/9230967.ashx" length="3579058" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/knom/archive/tags/Personal/default.aspx">Personal</category><category domain="http://blogs.msdn.com/knom/archive/tags/Events/default.aspx">Events</category><category domain="http://blogs.msdn.com/knom/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/knom/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/knom/archive/tags/Composite+WPF+Guidance/default.aspx">Composite WPF Guidance</category></item><item><title>Using the VS Templates for Composite-WPF-Guidance</title><link>http://blogs.msdn.com/knom/archive/2008/10/22/using-the-vs-templates-for-composite-wpf-guidance.aspx</link><pubDate>Wed, 22 Oct 2008 18:28:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9011199</guid><dc:creator>knom</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/knom/comments/9011199.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=9011199</wfw:commentRss><description>&lt;p&gt;This is about using the templates for a new project.&lt;/p&gt;  &lt;p&gt;First of all you need to download the templates and install them from the links below.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/knom/attachment/9011198.ashx" target="_blank"&gt;Download the ZIP-File containing sources and built binaries here.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/knom/archive/2008/10/22/visual-studio-templates-composite-wpf-guidance-installation.aspx" target="_blank"&gt;See the post on how to install the binaries or build the sources here.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Let's start setting up our new project:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a new root folder for your solution (e.g. C:\temp\DemoClient\).     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Within the root folder create a &lt;em&gt;Libraries&lt;/em&gt; (or other named) folder for the P&amp;amp;P assemblies, like Unity and Composite App Library.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Copy the necessary assemblies to the &lt;em&gt;Libraries&lt;/em&gt; folder (build the &lt;a href="http://www.codeplex.com/CompositeWPF/" target="_blank"&gt;Composite Application Guidance&lt;/a&gt; projects to get them):      &lt;br /&gt;&amp;#160;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="140" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/UsingtheVSTemplatesforCompositeWPFGuidan_F583/image_6.png" width="296" border="0" /&gt; &lt;/li&gt;    &lt;li&gt;Now open Visual Studio choose &amp;quot;File - New Project&amp;quot; and select &amp;quot;Composite WPF Solution&amp;quot; from &amp;quot;Visual C# &amp;gt; Composite App Guidance&amp;quot;.     &lt;br /&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="173" alt="image_thumb[1][1]" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/UsingtheVSTemplatesforCompositeWPFGuidan_F583/image_thumb%5B1%5D%5B1%5D_1.png" width="668" border="0" /&gt;&lt;/li&gt;    &lt;li&gt;Enter the name of your overall solution (like &amp;quot;CompositeClient&amp;quot;) and specify the root folder created before.     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/UsingtheVSTemplatesforCompositeWPFGuidan_F583/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="156" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/UsingtheVSTemplatesforCompositeWPFGuidan_F583/image_thumb_2.png" width="663" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;strong&gt;Important:&lt;/strong&gt; &amp;quot;Create directory for solution&amp;quot; should be unchecked, to automatically insert references later. Press &amp;quot;OK&amp;quot; then.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;A new wizard pops up:     &lt;br /&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="457" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/UsingtheVSTemplatesforCompositeWPFGuidan_F583/image_11.png" width="662" border="0" /&gt;       &lt;br /&gt;You can now change your root namespace or the namespaces for the shell and infrastructure project.       &lt;br /&gt;&lt;strong&gt;It's important &lt;/strong&gt;to specify the relative path to the Library folder (starting from the specified root folder). In this case it's &lt;em&gt;Libraries&lt;/em&gt;. After that, the new solution is going to be created.      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/UsingtheVSTemplatesforCompositeWPFGuidan_F583/image_13.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="279" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/UsingtheVSTemplatesforCompositeWPFGuidan_F583/image_thumb_4.png" width="240" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;Select &amp;quot;Add New Project&amp;quot; on the &lt;em&gt;Modules&lt;/em&gt; folder.      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/UsingtheVSTemplatesforCompositeWPFGuidan_F583/image_15.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="130" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/UsingtheVSTemplatesforCompositeWPFGuidan_F583/image_thumb_5.png" width="393" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Choose &amp;quot;Composite WPF Module&amp;quot; and enter the &lt;em&gt;Modules&lt;/em&gt; path of the solution as the location      &lt;br /&gt;(e.g. C:\temp\DemoClient\CompositeClient\Modules\).      &lt;br /&gt;Enter a name for the module (e.g. &lt;em&gt;CompositeClient.Modules.Foo)&lt;/em&gt;.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;The &lt;em&gt;New Module Wizard&lt;/em&gt; pops up.      &lt;br /&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="456" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/UsingtheVSTemplatesforCompositeWPFGuidan_F583/image_18.png" width="661" border="0" /&gt;&amp;#160; &lt;br /&gt;Press &lt;em&gt;Finish&lt;/em&gt; (or change the IModule class name or module namespace).      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;A new project is created, containing an IModule implementation and a module controller class.     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/UsingtheVSTemplatesforCompositeWPFGuidan_F583/image_20.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="96" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/UsingtheVSTemplatesforCompositeWPFGuidan_F583/image_thumb_7.png" width="208" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;When choosing &lt;em&gt;Add-New Item&lt;/em&gt;,&lt;em&gt;&amp;#160; &lt;/em&gt;you can add a new &lt;em&gt;Composite WPF View and Presentation Model&lt;/em&gt; to the module.      &lt;br /&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="233" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/UsingtheVSTemplatesforCompositeWPFGuidan_F583/image_23.png" width="500" border="0" /&gt;&amp;#160; &lt;br /&gt;Enter a name for the new items (not containing &amp;quot;View&amp;quot; or any other types). Just use &amp;quot;DoFoo&amp;quot; for instance.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;The &lt;em&gt;New View&lt;/em&gt; Wizard pops up, letting you choose the names for view, presentation model and interfaces.      &lt;br /&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="460" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/UsingtheVSTemplatesforCompositeWPFGuidan_F583/image_26.png" width="661" border="0" /&gt;&lt;/li&gt;    &lt;li&gt;Choose Finish.&lt;/li&gt;    &lt;li&gt;A new subfolder is created, containing the files necessary for the view.     &lt;br /&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="146" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/UsingtheVSTemplatesforCompositeWPFGuidan_F583/image_29.png" width="275" border="0" /&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Note 1: When using the item template for the first time, you might get a dialog requesting to trust the template. Press trust there!&lt;/p&gt;  &lt;p&gt;Note 2: The wizards say &amp;quot;Composite WPF Guidance Contrib&amp;quot;, as I hope to get into the &lt;a href="http://www.codeplex.com/CompositeWPFContrib/" target="_blank"&gt;Contrib project&lt;/a&gt; with this ;-)    &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9011199" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/knom/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/knom/archive/tags/Composite+WPF+Guidance/default.aspx">Composite WPF Guidance</category></item><item><title>Visual Studio Templates - Composite WPF Guidance - Installation</title><link>http://blogs.msdn.com/knom/archive/2008/10/22/visual-studio-templates-composite-wpf-guidance-installation.aspx</link><pubDate>Wed, 22 Oct 2008 18:25:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9011189</guid><dc:creator>knom</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/knom/comments/9011189.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=9011189</wfw:commentRss><description>&lt;p&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/knom/attachment/9011198.ashx" target="_blank"&gt;First of all download the template package from here.&lt;/a&gt;      &lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/knom/archive/2008/10/22/using-the-vs-templates-for-composite-wpf-guidance.aspx" target="_blank"&gt;For an overview of the functionality see another post.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Extract the zip file and move to the &lt;em&gt;&lt;strong&gt;Bin &lt;/strong&gt;&lt;/em&gt;folder.&lt;/p&gt;  &lt;p&gt;In the bin folder three files are located:   &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudioTemplatesCompositeWPFGuidanc_F4F0/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="106" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/VisualStudioTemplatesCompositeWPFGuidanc_F4F0/image_thumb.png" width="502" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;install.bat&lt;/strong&gt; does all the work to setup the templates (run the .VSI and add the .DLL to the global assembly cache)&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;CompositeTemplateWizards.dll&lt;/strong&gt; contains the Wizards used from the project templates. This assembly must be installed into the GAC.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Templates.vsi&lt;/strong&gt; is VSI installer package with all the templates (need the wizard assembly in the GAC).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you prefer building the code by yourself have a look into the Source folder. What you have to do is build the C# project, and zip all the project templates. Then zip all three zip-files together with the .VSContent file to a .ZIP archive and rename it to .VSI.&lt;/p&gt;  &lt;p&gt;Have fun :-)&lt;/p&gt;  &lt;p&gt;And see this post for usage of the templates.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9011189" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/knom/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/knom/archive/tags/Composite+WPF+Guidance/default.aspx">Composite WPF Guidance</category></item><item><title>Team System + Gadgets + Outlook</title><link>http://blogs.msdn.com/knom/archive/2008/10/15/team-system-gadgets-outlook.aspx</link><pubDate>Wed, 15 Oct 2008 16:44:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8999485</guid><dc:creator>knom</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/knom/comments/8999485.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=8999485</wfw:commentRss><description>&lt;p&gt;If you're using Team Foundation Server, these utilities might be useful for your everyday's work:&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;*) WorkItem Outlook Plugin&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Create a workitem directly out of the mail view.&lt;img height="288" src="http://blogs.microsoft.co.il/photos/srlteam/images/9510/original.aspx" width="300" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/srlteam/archive/2007/03/04/Team-System-Outlook-2007-Addin-_2D00_-v1.0.aspx" target="_blank"&gt;Download&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;*) Team System Build Monitor Gadget&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Always be aware of the status of your TFS builds in the sidebar.&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/TeamSystemGadgetsOutlook_DCDD/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="145" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/TeamSystemGadgetsOutlook_DCDD/image_thumb.png" width="144" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/jimlamb/archive/2007/06/22/team-build-monitor-vista-sidebar-gadget.aspx" target="_blank"&gt;Download&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;*) Two useful WorkItem Gadgets&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;img alt="My Team Foundation Server Tasks Gadget" src="http://www.applicationaspect.com/Images/My-TFS-Tasks.gif" /&gt;&lt;/p&gt;  &lt;p&gt;Get the state of your open workitems, or the work items per project.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.applicationaspect.com/SiteSections/ProductCenter/TeamDef/Gadgets.aspx" target="_blank"&gt;Download&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8999485" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>A Must Have Tool - VS 2008 Snippet Designer</title><link>http://blogs.msdn.com/knom/archive/2008/10/09/a-must-have-tool-vs-2008-snippet-designer.aspx</link><pubDate>Thu, 09 Oct 2008 14:23:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8992660</guid><dc:creator>knom</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/knom/comments/8992660.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=8992660</wfw:commentRss><description>&lt;p&gt;Mathew Manela from the Online Tools Group at Microsoft has written a really cool tool, which adds a feature missing for a long time in Visual Studio: Code Snippet Creation.&lt;/p&gt;  &lt;p&gt;The tool, which is available at &lt;a title="http://www.codeplex.com/SnippetDesigner" href="http://www.codeplex.com/SnippetDesigner"&gt;http://www.codeplex.com/SnippetDesigner&lt;/a&gt; allows a bunch of functionality for working with custom snippets.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Add a new .SNIPPET file via File-New-File--Code Snippet File&lt;/li&gt;    &lt;li&gt;Export existing code into a snippet:     &lt;br /&gt;Simply right click on the selected code and press &amp;quot;Export as Snippet&amp;quot;.      &lt;br /&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="166" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/AMustHaveToolVS2008SnippetDesigner_BC40/image_3.png" width="494" border="0" /&gt;&lt;/li&gt;    &lt;li&gt;Edit snippets (set placeholders, etc..)     &lt;br /&gt;The editor is opened after exporting something.      &lt;br /&gt;Additionally you can later on open .snippet files out of the &amp;quot;Snippet Explorer&amp;quot; (see below).      &lt;br /&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="481" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/AMustHaveToolVS2008SnippetDesigner_BC40/image_9.png" width="657" border="0" /&gt;&lt;/li&gt;    &lt;li&gt;The Snippet Explorer     &lt;br /&gt;Go to &amp;quot;View - Other Windows - Snippet Explorer&amp;quot; to search for existing snippets.      &lt;br /&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="510" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/AMustHaveToolVS2008SnippetDesigner_BC40/image_8.png" width="489" border="0" /&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The snippets you build are stored under the path &lt;em&gt;%USERPROFILE%\Documents\Visual Studio 2008\Code Snippets\Visual C#\My Code Snippets&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;You can either insert them via the context menu &amp;quot;Insert Code Snippet&amp;quot;    &lt;br /&gt;(Ctrl+K-X) or you can assign a short-phrase (shortcut).&lt;/p&gt;  &lt;p&gt;With the shortcut you just need to type e.g. &lt;em&gt;prop&amp;lt;tab&amp;gt;&amp;lt;tab&amp;gt;&lt;/em&gt; to insert a property code snippet.&lt;/p&gt;  &lt;p&gt;You can set the shortcut (and other things as well) in the property window of the snippet editor.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8992660" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/knom/archive/tags/Personal/default.aspx">Personal</category><category domain="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>.NET Roadshow - Demo Solution</title><link>http://blogs.msdn.com/knom/archive/2008/09/19/net-roadshow-demo-solution.aspx</link><pubDate>Fri, 19 Sep 2008 17:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8958759</guid><dc:creator>knom</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/knom/comments/8958759.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=8958759</wfw:commentRss><description>&lt;P&gt;The demo solution from our .NET Beginners Roadshow is no ready for download for attendees and all others.&lt;/P&gt;
&lt;P&gt;The scenario is event management.&lt;/P&gt;
&lt;P&gt;The solution consists of 4 parts:&lt;/P&gt;
&lt;P&gt;*) &lt;STRONG&gt;Data Access layer &lt;/STRONG&gt;using ADO.NET Entity Framework&lt;/P&gt;
&lt;P&gt;*)&lt;STRONG&gt; Business Logic Service &lt;/STRONG&gt;hosted as a WCF service.&lt;/P&gt;
&lt;P&gt;*) &lt;STRONG&gt;Web Site, &lt;/STRONG&gt;written in ASP.NET&lt;STRONG&gt;, &lt;/STRONG&gt;which allows attendees to register and view their events, including a &lt;/P&gt;
&lt;P&gt;*) &lt;STRONG&gt;Silverlight Web Control&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;*) &lt;STRONG&gt;Desktop Client&lt;/STRONG&gt; using WPF, for managing the events.&lt;/P&gt;
&lt;P&gt;Here some screen shots:&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=722 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=132&gt;&lt;A href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/a9c69e26a208.NETRoadshowDemoSolution_E24D/dbdiagramm.jpg" mce_href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/a9c69e26a208.NETRoadshowDemoSolution_E24D/dbdiagramm.jpg"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=139 alt=dbdiagramm src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/a9c69e26a208.NETRoadshowDemoSolution_E24D/dbdiagramm_thumb.jpg" width=191 border=0 mce_src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/a9c69e26a208.NETRoadshowDemoSolution_E24D/dbdiagramm_thumb.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=133&gt;&lt;A href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/a9c69e26a208.NETRoadshowDemoSolution_E24D/screenshot2.jpg" mce_href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/a9c69e26a208.NETRoadshowDemoSolution_E24D/screenshot2.jpg"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=141 alt=screenshot2 src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/a9c69e26a208.NETRoadshowDemoSolution_E24D/screenshot2_thumb.jpg" width=175 border=0 mce_src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/a9c69e26a208.NETRoadshowDemoSolution_E24D/screenshot2_thumb.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=455&gt;&lt;A href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/a9c69e26a208.NETRoadshowDemoSolution_E24D/screenshot1.jpg" mce_href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/a9c69e26a208.NETRoadshowDemoSolution_E24D/screenshot1.jpg"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=141 alt=screenshot1 src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/a9c69e26a208.NETRoadshowDemoSolution_E24D/screenshot1_thumb.jpg" width=144 border=0 mce_src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/a9c69e26a208.NETRoadshowDemoSolution_E24D/screenshot1_thumb.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Feel free to have a look at the source code here.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8958759" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/knom/attachment/8958759.ashx" length="3263214" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/knom/archive/tags/Work/default.aspx">Work</category><category domain="http://blogs.msdn.com/knom/archive/tags/Events/default.aspx">Events</category><category domain="http://blogs.msdn.com/knom/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/knom/archive/tags/WPF/default.aspx">WPF</category></item><item><title>On the road -  The .NET Beginners Road Show</title><link>http://blogs.msdn.com/knom/archive/2008/08/12/on-the-road-the-net-beginners-road-show.aspx</link><pubDate>Tue, 12 Aug 2008 14:41:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8850569</guid><dc:creator>knom</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/knom/comments/8850569.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=8850569</wfw:commentRss><description>&lt;p&gt;From September 16th to 25th I'll be on the road with the .NET Beginners Road Show together with my colleague &lt;a href="http://blogs.msdn.com/mszcool" target="_blank"&gt;Mario&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/austria/msdn/netstartups/"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="188" alt="763x200_NetBeginnersRoadShow_050808" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/OntheroadThe.NETBeginnersRoadShow_C087/763x200_NetBeginnersRoadShow_050808_3.jpg" width="660" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Our goal is to target newcomers to .NET and show them, how to implement a simple solution over the three tiers.&lt;/p&gt;  &lt;p&gt;Target audience are VB6 guys, as well as Java, C++ or Delphi people.&lt;/p&gt;  &lt;p&gt;As the schedule is pretty tight, we expect the attendees to know the principles of object oriented programming.&lt;/p&gt;  &lt;p&gt;Andreas has produced a series of webcasts, called &amp;quot;Get the basics&amp;quot;, which introduce OOP in .NET for those who don't know (so they can also attend).&lt;/p&gt;  &lt;p&gt;The videos are 15 minutes each (at a maximum) and are going to be published before the event (obviously :-)).&lt;/p&gt;  &lt;p&gt;The roadshow stops in Dornbirn, Innsbruck, Salzburg, Linz, Graz and Wien.&lt;/p&gt;  &lt;p&gt;So pretty much everywhere over Austria.&lt;/p&gt;  &lt;p&gt;It's going to be a tough week travelling around for us two - as we have events every day and have to move on to the next stop in the evening ;-)&lt;/p&gt;  &lt;p&gt;The attendee fee is 85 &amp;#8364; for a one day power event full of demos (and food as well *ggg*).&lt;/p&gt;  &lt;p&gt;Visit &lt;a href="http://www.microsoft.com/austria/msdn/netstartups/"&gt;http://www.microsoft.com/austria/msdn/netstartups/&lt;/a&gt; for more informations - and don't forget to register soon, as the venues have only restricted seats available.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8850569" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/knom/archive/tags/Work/default.aspx">Work</category><category domain="http://blogs.msdn.com/knom/archive/tags/Personal/default.aspx">Personal</category><category domain="http://blogs.msdn.com/knom/archive/tags/Events/default.aspx">Events</category><category domain="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>BigDays 2008 - Slides and Demos</title><link>http://blogs.msdn.com/knom/archive/2008/04/16/bigdays-2008-slides-and-demos.aspx</link><pubDate>Wed, 16 Apr 2008 19:32:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8399176</guid><dc:creator>knom</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/knom/comments/8399176.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=8399176</wfw:commentRss><description>&lt;p&gt;Here are the slides and demos of my four sessions at the Austrian Launch Tour "Big&amp;gt;Days 2008".&lt;/p&gt; &lt;p&gt;Sorry for the delay.. I've been in a hurry during the last days.. So following the high demand, here they are :-)&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Visual Studio 2008 &lt;/li&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://knom.members.winisp.net/downloads/BigDays08/VS2008_360.pdf" target="_blank"&gt;Slides&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://knom.members.winisp.net/downloads/BigDays08/VS2008 Demos.zip" target="_blank"&gt;WCF, WPF Demo&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Language Integrated Queries with C# 3.0&lt;/li&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://knom.members.winisp.net/downloads/BigDays08/LINQ.pdf" target="_blank"&gt;Slides&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://knom.members.winisp.net/downloads/BigDays08/LINQ%20Demos.zip" target="_blank"&gt;Demos&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Silverlight 2.0&lt;/li&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://knom.members.winisp.net/downloads/BigDays08/Silverlight.pdf" target="_blank"&gt;Slides&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://knom.members.winisp.net/downloads/BigDays08/Silverlight%20Demo.zip" target="_blank"&gt;Demos&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Windows Presentation Foundation for Line-Of-Business Applications&lt;/li&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://knom.members.winisp.net/downloads/BigDays08/WPF.pdf" target="_blank"&gt;Slides&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://knom.members.winisp.net/downloads/BigDays08/WPF Demos.zip" target="_blank"&gt;Demos&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8399176" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/knom/archive/tags/Events/default.aspx">Events</category><category domain="http://blogs.msdn.com/knom/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>WcfSvcHost and WcfTestClient in VS 2008</title><link>http://blogs.msdn.com/knom/archive/2008/03/24/wcfsvchost-and-wcftestclient-in-vs-2008.aspx</link><pubDate>Mon, 24 Mar 2008 22:09:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8334071</guid><dc:creator>knom</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/knom/comments/8334071.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=8334071</wfw:commentRss><description>&lt;p&gt;There are two nice helper apps included in Visual Studio 2008, which allow you to test-host your WCF service and invoke the methods to check they're working correctly.&lt;/p&gt;  &lt;p&gt;The two apps are called WcfSvcHost.exe and WcfTestClient.exe.&lt;/p&gt;  &lt;p&gt;By default they are set as default debugging activity in all WCF libraries. See how to get use of them:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a new WCF Service Library&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_4.png"&gt;       &lt;br /&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="450" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_thumb_1.png" width="660" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Build an interface &amp;quot;ISayMyNameService&amp;quot; with a class parameter named &amp;quot;Name&amp;quot;     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="262" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_thumb_2.png" width="320" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;Implement a new service class     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="134" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_thumb_3.png" width="404" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Change the class name of the hosted service in app.config:     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_10.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="86" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_thumb_4.png" width="504" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Press F5 and start debugging.&lt;/li&gt;    &lt;li&gt;Voila - the WcfSvcHost is started an displays a successfull message. Click on the message for details:     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_12.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="342" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_thumb_5.png" width="454" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;At the same time the WcfTestClient got started and is now displaying a n UI for testing our simple WCF service. Double click on &amp;quot;HelloYou()&amp;quot; to invoke the method with parameters:     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_14.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="287" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_thumb_6.png" width="454" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Press &amp;quot;Invoke&amp;quot; and wait for the service to complete. You'll then get back the response as a formatted list or in raw XML.     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_16.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="169" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_thumb_7.png" width="400" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;If you don't want the WcfTestClient, but your custom test client you can change the setting under the project properties:     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_18.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="160" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/WcfSvcHostandWcfTestClientinVS2008_11B65/image_thumb_8.png" width="454" border="0" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8334071" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>Behind the Scenes of LINQ - Part 2</title><link>http://blogs.msdn.com/knom/archive/2008/01/10/behind-the-scenes-of-linq-part-2.aspx</link><pubDate>Thu, 10 Jan 2008 16:36:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7055887</guid><dc:creator>knom</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/knom/comments/7055887.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=7055887</wfw:commentRss><description>&lt;p&gt;Last time we started by translating a LINQ query&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&lt;span style="color: rgb(43,145,175)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;&amp;gt; ints = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;&amp;gt;() { 1, 2, 3, 4, 5, 6, 7, 8 };&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&lt;span style="color: rgb(0,0,255)"&gt;var&lt;/span&gt; filteredInts = &lt;span style="color: rgb(0,0,255)"&gt;from&lt;/span&gt; i &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; ints &lt;span style="color: rgb(0,0,255)"&gt;where&lt;/span&gt; i &amp;gt; 5 &lt;span style="color: rgb(0,0,255)"&gt;select&lt;/span&gt; i;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;into an extension method (as the C# compiler does in background):&lt;/p&gt; &lt;blockquote&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;var&lt;/span&gt; filteredInts = ints.Where(i =&amp;gt; i &amp;gt; 5);&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;But where do we go from here? What is the strange =&amp;gt; arrow doing within my method call?!&lt;br&gt;This is basically a different notation for an anonymous method.&lt;/p&gt;
&lt;p&gt;Let's start with a default .NET 2.0 code doing a calculation with the use of anonymous methods.&lt;/p&gt;&lt;pre class="code"&gt;        &lt;span style="color: rgb(0,0,255)"&gt;delegate&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;CalcDelegate&lt;/span&gt;(&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; a, &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; b);

        &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Main(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;[] args)
        {
            &lt;span style="color: rgb(43,145,175)"&gt;CalcDelegate&lt;/span&gt; add = &lt;span style="color: rgb(0,0,255)"&gt;delegate&lt;/span&gt;(&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; a, &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; b)
            {
                &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; a + b;
            };
            &lt;span style="color: rgb(0,0,255)"&gt;var&lt;/span&gt; result = add(10, 5); &lt;span style="color: rgb(0,128,0)"&gt;// 15
&lt;/span&gt;        }&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;With C# 3.0 we could change this code into the new notion of a lambda expression:&lt;/p&gt;&lt;pre class="code"&gt;            &lt;span style="color: rgb(43,145,175)"&gt;CalcDelegate&lt;/span&gt; add = (a, b) =&amp;gt;
            { &lt;span style="color: rgb(0,128,0)"&gt;// Statement Body&lt;/span&gt;
                &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; a + b;
            };
            &lt;span style="color: rgb(0,0,255)"&gt;var&lt;/span&gt; result = add(10, 5); &lt;span style="color: rgb(0,128,0)"&gt;// 15&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;The =&amp;gt; arrow indicates a lambda expression. This expression has a statement body - meaning it has curly brackets and some C# code within. You can skip the delegate keyword, the types of &lt;em&gt;a &lt;/em&gt;and &lt;em&gt;b&lt;/em&gt; will automatically be inferred regarding the signature of the delegate.&lt;/p&gt;
&lt;p&gt;You could do anything within the statement body, like:&lt;/p&gt;&lt;pre class="code"&gt;            &lt;span style="color: rgb(43,145,175)"&gt;CalcDelegate&lt;/span&gt; add = (a, b) =&amp;gt;
            {
                &lt;span style="color: rgb(43,145,175)"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: rgb(163,21,21)"&gt;"Hello World"&lt;/span&gt;);
                ...
                &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; a + b;
            };&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;If you only have a return statement within your expression's body, you can also switch to an "expression body" (instead of statement body).&lt;/p&gt;
&lt;p&gt;The lambda expressions then look like this:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;CalcDelegate&lt;/span&gt; add = (a, b) =&amp;gt; a + b; &lt;span style="color: rgb(0,128,0)"&gt;// Expression Body&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;The return statement and the curly brackets are then removed.&lt;/p&gt;
&lt;p&gt;If you disassemble the lambda expressions (either with statement or with expression body) you'll find out, that the compiler generates an anonymous method out of the expression automatically in background.&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/BehindtheScenesofLINQPart2_CD5A/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="210" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/BehindtheScenesofLINQPart2_CD5A/image_thumb.png" width="300" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;With the expression body you can basically use every statement which returns a type similar to the return value-type of the delegate.&lt;/p&gt;
&lt;p&gt;Instead of creating your own delegate type, you can use a predefined generic delegate called &lt;em&gt;Func&lt;/em&gt;. This delegate takes one return type and up to four parameter types. To get the same delegate as our custom &lt;em&gt;CalcDelegate&lt;/em&gt; you could use:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;&amp;gt; add = ...;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt;&amp;gt; check = (text, length) =&amp;gt; text.Length == length;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;
&lt;p&gt;The second method checks, whether a passed string's (first parameter "text") length matches a passed int (second parameter length). The result is returned as boolean.&lt;/p&gt;
&lt;p&gt;What, if you want to analyze a lambda expression to transform it into a SQL query for instance? You could use reflection of course to go over the code of the generated anonymous method, but this is rather difficult.&lt;/p&gt;
&lt;p&gt;So for lambda expressions with an expression body (like the one above) there is a special notation called expression trees.&lt;/p&gt;
&lt;p&gt;If you specify&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;Expression&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43,145,175)"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;&amp;gt;&amp;gt; addExp = (a, b) =&amp;gt; a + b;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;this is going to be changed into an expression tree of some delegate in background:&lt;/p&gt;&lt;pre class="code"&gt;      &lt;span style="color: rgb(43,145,175)"&gt;ParameterExpression&lt;/span&gt; par1;
      &lt;span style="color: rgb(43,145,175)"&gt;ParameterExpression&lt;/span&gt; par2;
      &lt;span style="color: rgb(43,145,175)"&gt;Expression&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43,145,175)"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;&amp;gt;&amp;gt; addExp = &lt;span style="color: rgb(43,145,175)"&gt;Expression&lt;/span&gt;.Lambda&amp;lt;&lt;span style="color: rgb(43,145,175)"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;&amp;gt;&amp;gt;(
         &lt;span style="color: rgb(43,145,175)"&gt;Expression&lt;/span&gt;.Add(
            par1 = &lt;span style="color: rgb(43,145,175)"&gt;Expression&lt;/span&gt;.Parameter(&lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;), &lt;span style="color: rgb(163,21,21)"&gt;"a"&lt;/span&gt;),
            par2 = &lt;span style="color: rgb(43,145,175)"&gt;Expression&lt;/span&gt;.Parameter(&lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;), &lt;span style="color: rgb(163,21,21)"&gt;"b"&lt;/span&gt;)
         ), par1, par2);&lt;/pre&gt;
&lt;p&gt;What you get is logical view of your lambda expression (called tree), which you can then analyze by using it's &lt;em&gt;Body &lt;/em&gt;property.&lt;/p&gt;
&lt;p&gt;If you want to execute the expression tree later as a delegate , you need to compile it to source code by calling:&lt;/p&gt;&lt;pre class="code"&gt;     &lt;span style="color: rgb(43,145,175)"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;&amp;gt; addDel = addExp.Compile();
     &lt;span style="color: rgb(0,0,255)"&gt;var&lt;/span&gt; result = addDel(1, 2);  &lt;span style="color: rgb(0,128,0)"&gt;// 3&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;So when you specify a lambda expression (with an expression body), the compiler will either produce an anonymous method, or an expression tree out of it, depending on what the target type requires (if it is a delegate or Expression&amp;lt;delegate&amp;gt;).&lt;/p&gt;
&lt;p&gt;In my opinion this is pretty neat!&lt;/p&gt;
&lt;p&gt;While LINQ-To-XML and LINQ-To-Objects use&lt;em&gt; Func&amp;lt;T..&amp;gt; &lt;/em&gt;as parameter, LINQ-To-SQL uses &lt;em&gt;Expression&amp;lt;Func&amp;lt;T..&amp;gt;&amp;gt;,&lt;/em&gt; so that the tree can be translated into a SQL Statement.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7055887" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>Behind the Scenes of LINQ - Part 1</title><link>http://blogs.msdn.com/knom/archive/2007/11/12/deep-details-of-linq-part-1.aspx</link><pubDate>Mon, 12 Nov 2007 19:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6143645</guid><dc:creator>knom</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/knom/comments/6143645.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=6143645</wfw:commentRss><description>&lt;P&gt;Now it's getting confusing :-) As a prequel to my LINQ-To-Sql Article, I'd like to digg into the details of LINQ in generel!&lt;/P&gt;
&lt;P&gt;Language Integrated Queries is a new feature of C# 3.0 in conjunction with .NET 3.5. This means LINQ is purely solved at a language compiler and .NET library level. .NET 3.5 doesn't come with a new CLR, but consists only of additional framework libraries (like System.Core.dll). So the MSIL code produced below is purely MSIL 2.0 code!&lt;/P&gt;
&lt;P&gt;So how do LINQ queries work?&lt;BR&gt;Let's take a basic query as a sample:&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: rgb(43,145,175)"&gt;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;int&lt;/SPAN&gt;&amp;gt; ints = &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;int&lt;/SPAN&gt;&amp;gt;() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;var&lt;/SPAN&gt; filteredInts = &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;from&lt;/SPAN&gt; i &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;in&lt;/SPAN&gt; ints &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;where&lt;/SPAN&gt; i &amp;gt; 5 &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;select&lt;/SPAN&gt; i;

&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;int&lt;/SPAN&gt; i &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;in&lt;/SPAN&gt; filteredInts)
{
&lt;SPAN style="COLOR: rgb(43,145,175)"&gt;   Console&lt;/SPAN&gt;.WriteLine(i);
}&lt;/PRE&gt;
&lt;P&gt;First of all we generate a new list of integers, which is initialized with values 1-10 (with the new &lt;A href="http://blogs.msdn.com/knom/archive/2006/11/13/anders-hejlsberg-about-c-3-0-linq-at-teched-europe-in-barcelona.aspx" target=_blank mce_href="http://blogs.msdn.com/knom/archive/2006/11/13/anders-hejlsberg-about-c-3-0-linq-at-teched-europe-in-barcelona.aspx"&gt;C# 3.0 Collection Initializers feature&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;Then we query the list with a LINQ query.&lt;/P&gt;
&lt;P&gt;The query returns an &lt;A href="http://blogs.msdn.com/knom/archive/2006/11/13/anders-hejlsberg-about-c-3-0-linq-at-teched-europe-in-barcelona.aspx" target=_blank mce_href="http://blogs.msdn.com/knom/archive/2006/11/13/anders-hejlsberg-about-c-3-0-linq-at-teched-europe-in-barcelona.aspx"&gt;C# 3.0 infered type&lt;/A&gt;, which means, we do not need to specify the type, but use &lt;EM&gt;var&lt;/EM&gt; instead. .NET will automatically substitute it with the actual type.&lt;/P&gt;
&lt;P&gt;This is exactly the same as in these samples:&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;var&lt;/SPAN&gt; s = &lt;SPAN style="COLOR: rgb(163,21,21)"&gt;"Hallo"&lt;/SPAN&gt;; // Substitute with string
&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;var&lt;/SPAN&gt; i = 10;      // Substitute with int
&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;var&lt;/SPAN&gt; f = &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: rgb(43,145,175)"&gt;AppDomain&lt;/SPAN&gt;&amp;gt;(); // Substitute with List&amp;lt;AppDomain&amp;gt;&lt;/PRE&gt;
&lt;P&gt;In the same way the type IEnumerable&amp;lt;int&amp;gt; is filled in by the compiler instead of &lt;EM&gt;var &lt;/EM&gt;above.&lt;/P&gt;
&lt;P&gt;Like with every IEnumerable we can iterate through the filteredInts with a foreach loop and output all the filtered integers.&lt;/P&gt;
&lt;P&gt;So how does the actual LINQ query work ?!&lt;/P&gt;
&lt;P&gt;The LINQ query&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;var&lt;/SPAN&gt; filteredInts = &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;from&lt;/SPAN&gt; i &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;in&lt;/SPAN&gt; ints &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;where&lt;/SPAN&gt; i &amp;gt; 5 &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;select&lt;/SPAN&gt; i;&lt;/PRE&gt;
&lt;P&gt;could be rewritten into:&lt;/P&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;var&lt;/SPAN&gt; filteredInts = ints.Where(i =&amp;gt; i &amp;gt; 5);&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;which is what the compiler does.&lt;/P&gt;
&lt;P&gt;So it calls a method &lt;EM&gt;Where&lt;/EM&gt; on the IEnumerable and passes it a &lt;EM&gt;Lambda Expression&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;First of all: Where does the &lt;EM&gt;Where &lt;/EM&gt;method come from? This is an &lt;A href="http://blogs.msdn.com/knom/archive/2006/11/13/anders-hejlsberg-about-c-3-0-linq-at-teched-europe-in-barcelona.aspx" target=_blank mce_href="http://blogs.msdn.com/knom/archive/2006/11/13/anders-hejlsberg-about-c-3-0-linq-at-teched-europe-in-barcelona.aspx"&gt;extension method&lt;/A&gt;&amp;nbsp;to the type IEnumerable. What this means is, the method is not really implemented at the &lt;EM&gt;List&amp;lt;int&amp;gt;&lt;/EM&gt; but only extends it.&lt;/P&gt;
&lt;P&gt;Extension methods are static methods in a static class, which take a special argument:&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;void&lt;/SPAN&gt; ConsoleWrite(&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;this&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;IEnumerable&lt;/SPAN&gt; enumerable);&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;would be an extension method for all IEnumerable implementing classes (because of the &lt;EM&gt;this keyword&lt;/EM&gt; in front of the parameter, this is the extended type).&lt;/P&gt;
&lt;P&gt;If we look into the class &lt;EM&gt;Enumerable&lt;/EM&gt; we find a bunch of extension methods there, like Average, Sum, OrderBy or...&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;TSource&amp;gt; Where&amp;lt;TSource&amp;gt;(&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;this&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;TSource&amp;gt; source,&lt;BR&gt; &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;Func&lt;/SPAN&gt;&amp;lt;TSource, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;bool&lt;/SPAN&gt;&amp;gt; predicate)&lt;/PRE&gt;
&lt;P&gt;This is the method used here. It extends IEnumerable types and has a delegate as a parameter!&lt;/P&gt;
&lt;P&gt;What does it do? Something similar to this:&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;TSource&amp;gt; Where&amp;lt;TSource&amp;gt;(&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;this&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;TSource&amp;gt; source, 
            &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;Func&lt;/SPAN&gt;&amp;lt;TSource, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;bool&lt;/SPAN&gt;&amp;gt; predicate)
{
&lt;SPAN style="COLOR: rgb(43,145,175)"&gt;&lt;FONT color=#333333&gt;  &lt;/FONT&gt;List&lt;/SPAN&gt;&amp;lt;TSource&amp;gt; result = &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;List&lt;/SPAN&gt;&amp;lt;TSource&amp;gt;();
&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;&lt;FONT color=#333333&gt;  &lt;/FONT&gt;foreach&lt;/SPAN&gt; (TSource item &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;in&lt;/SPAN&gt; source)
  {
&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;&lt;FONT color=#333333&gt;    &lt;/FONT&gt;if&lt;/SPAN&gt; (predicate(item) == &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;true&lt;/SPAN&gt;)
      result.Add(item);
  }
&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;  return&lt;/SPAN&gt; result;
}&lt;/PRE&gt;
&lt;P&gt;It iterates through all items of the source collection and calls the delegate for each of them, then adds only those for which the delegate is true to the results.&lt;/P&gt;
&lt;P&gt;So &lt;EM&gt;i=&amp;gt; i &amp;gt; 5&lt;/EM&gt; is basically a different syntax for specifying the delegate!&lt;/P&gt;
&lt;P&gt;How do they play together?! Get back for the next part of the article!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6143645" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/knom/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item></channel></rss>