<?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 : Development</title><link>http://blogs.msdn.com/knom/archive/tags/Development/default.aspx</link><description>Tags: Development</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>A Valuable Tool for WPF and Silverlight</title><link>http://blogs.msdn.com/knom/archive/2008/12/03/a-valuable-tool-for-wpf-and-silverlight.aspx</link><pubDate>Wed, 03 Dec 2008 12:14:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9163909</guid><dc:creator>knom</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/knom/comments/9163909.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=9163909</wfw:commentRss><description>&lt;p&gt;Working with WPF &amp;amp; Silverlight is really great!&lt;/p&gt;  &lt;p&gt;The only problem if you use it in production is how you quickly generate new views. They don't need any animations or other stuff, just plain details views.&lt;/p&gt;  &lt;p&gt;You could do it with Expression Blend or the Visual Studio WPF Designer, still it would take more time than doing it directly in XAML..&lt;/p&gt;  &lt;p&gt;But.. Who is interested in writing 30 or so views in XAML ?!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;There is a better solution: &lt;/strong&gt;XAML Powertoys.&lt;/p&gt;  &lt;p&gt;XAML Powertoys are a bunch of Visual Studio 2008 additions which really ease your daily work with XAML (either in WPF or in Silverlight).&lt;/p&gt;  &lt;p&gt;Let's say you have an entity Person and you want to create a list view for it.&lt;/p&gt;  &lt;p&gt;Just select &amp;quot;Create Form, ListView,..&amp;quot; in the &amp;quot;XAML Power Toys&amp;quot; context menu within the XAML designer.   &lt;br /&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="298" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/AValuableToolforWPFandSilverlight_980D/image_3.png" width="642" border="0" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Next you select the type..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/AValuableToolforWPFandSilverlight_980D/image_5.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="212" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/AValuableToolforWPFandSilverlight_980D/image_thumb_1.png" width="544" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Next you can select the type of UI you want to create (either form, WPF ListView or the new DataGrid control).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/AValuableToolforWPFandSilverlight_980D/image_7.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="371" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/AValuableToolforWPFandSilverlight_980D/image_thumb_2.png" width="592" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can select the participating data fields from the class and configure how they are bound, etc...&lt;/p&gt;  &lt;p&gt;That's it.. The XAML is automatically created and copied into your clipboard. Just paste it at the corresponding position and your UI is ready!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;gt; &lt;/strong&gt;&lt;a href="http://karlshifflett.wordpress.com/xaml-power-toys/#Downloads" target="_blank"&gt;&lt;strong&gt;Get the XAML PowerToys here.&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;But don't forget to add the install-path to trusted Add-In paths under Tools-Options:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/AValuableToolforWPFandSilverlight_980D/image_9.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="338" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/AValuableToolforWPFandSilverlight_980D/image_thumb_3.png" width="587" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9163909" 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/Silverlight/default.aspx">Silverlight</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>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>Whitepaper - "InfoScreen App with Silverlight 1.0"</title><link>http://blogs.msdn.com/knom/archive/2008/06/06/whitepaper-infoscreen-app-with-silverlight-1-0.aspx</link><pubDate>Fri, 06 Jun 2008 14:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8577563</guid><dc:creator>knom</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/knom/comments/8577563.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=8577563</wfw:commentRss><description>&lt;P&gt;One of our mail goals in the Developer &amp;amp; Platform Evangelism is driving adoption of new technologies. To do so we're working with strategic customers which are interested in our stuff and help them implementing projects.&lt;/P&gt;
&lt;P&gt;A few months ago we started working with derStandard.at, which is a well-known website in Austria, that is attached to one of the largest country-wide newspapers.&lt;/P&gt;
&lt;P&gt;They're looking for new innovative ways to provide their content. That's why they evaluated Silverlight for a new InfoScreen application of theirs.&lt;/P&gt;
&lt;P&gt;My colleague Mario Szpuszta and I supported derStandard.at in architectural design and prototyping of their project.&lt;/P&gt;
&lt;P&gt;As a conclusion we've written a whitepaper on the architecture of the application and some best practices when working with Silverlight 1.0.&lt;/P&gt;
&lt;P&gt;By the time we started the project, Silverlight 1.0 was the stable release of the new platform, that's why we've decided to use the first, JavaScript based version. derStandard.at will update their project to Silverlight 2.0 and so will we update the whitepaper (if you're interested in us doing so).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A class="" href="http://blogs.msdn.com/knom/attachment/8577563.ashx" target=_blank mce_href="http://blogs.msdn.com/knom/attachment/8577563.ashx"&gt;Feel free to download the whitepaper here &lt;/A&gt;and see our experiences with building an InfoScreen application with Silverlight 1.0.&lt;/STRONG&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8577563" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/knom/attachment/8577563.ashx" length="543138" type="application/pdf" /><category domain="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/knom/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/knom/archive/tags/Whitepapers/default.aspx">Whitepapers</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>"Hacking" System.Net.Mail.SmtpClient</title><link>http://blogs.msdn.com/knom/archive/2008/04/16/hacking-system-net-mail-smtpclient.aspx</link><pubDate>Wed, 16 Apr 2008 17:48:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8399057</guid><dc:creator>knom</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/knom/comments/8399057.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=8399057</wfw:commentRss><description>&lt;p&gt;In .NET 2.0 there is a cool class called &lt;em&gt;SmtpClient&lt;/em&gt; within &lt;em&gt;System.Net.Mail&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;With this class you can send mail (at least I thought).&lt;br&gt;The requirement was to send an email over a server of one of our agencies.&lt;br&gt;The mail server was secured by username/password authentication. That's why I used the following code:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;SmtpClient&lt;/span&gt; _client = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;SmtpClient&lt;/span&gt;();
_client = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;SmtpClient&lt;/span&gt;(&lt;span style="color: rgb(163,21,21)"&gt;"smtp.myserver.at"&lt;/span&gt;);

_client.UseDefaultCredentials = &lt;span style="color: rgb(0,0,255)"&gt;false&lt;/span&gt;;
_client.Credentials = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;NetworkCredential&lt;/span&gt;(&lt;span style="color: rgb(163,21,21)"&gt;"username"&lt;/span&gt;, &lt;span style="color: rgb(163,21,21)"&gt;"password"&lt;/span&gt;);

_client.Send(&lt;span style="color: rgb(163,21,21)"&gt;"from@test.at"&lt;/span&gt;, &lt;span style="color: rgb(163,21,21)"&gt;"to@test.at"&lt;/span&gt;, &lt;span style="color: rgb(163,21,21)"&gt;"Hallo Welt"&lt;/span&gt;, &lt;span style="color: rgb(163,21,21)"&gt;"Hallo max!!"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="code"&gt;&lt;font face="Verdana"&gt;At execution of the last statement an exceptíon occurred:&lt;br&gt;&lt;/font&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="57" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/HackingSystem.Net.Mail.SmtpClient_EC25/image_8.png" width="226" border="0"&gt; &lt;/pre&gt;&lt;pre class="code"&gt;&lt;font face="Verdana"&gt;The inner exception said "Invalid lenght for a Base-64 char array."&lt;/font&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;font face="Verdana"&gt;That didn't make any sense for me (nor helped me to fix the problem).&lt;/font&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;font face="Verdana"&gt;I had a look at the stack trace and found out, that the exception had occurred in a class called&lt;br&gt;&lt;em&gt;Smtp&lt;strong&gt;Ntlm&lt;/strong&gt;AuthenticationModule&lt;/em&gt;.&lt;/font&gt;&lt;br&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="204" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/HackingSystem.Net.Mail.SmtpClient_EC25/image_7.png" width="303" border="0"&gt;&lt;/pre&gt;
&lt;p&gt;So I used &lt;em&gt;telnet&lt;/em&gt; to manually connect to the smtp server.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;S: 220 smtp.myserver.at ESMTP&lt;br&gt;C: ehlo asd.com&lt;br&gt;S: 250-smtp.myserver.at Hello mypc.microsoft.com [xxx.xxx.xxx.xxx]&lt;br&gt;S: 250-SIZE 20971520&lt;br&gt;S: 250-PIPELINING&lt;br&gt;S: 250-AUTH PLAIN LOGIN CRAM-MD5 NTLM&lt;br&gt;C: AUTH NTLM &amp;lt;base64 encoded string&amp;gt;&lt;/em&gt;&lt;br&gt;&lt;em&gt;S: 334 NTLM supported&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Seemed like the server would support NTLM.. But.. when I looked up the &lt;em&gt;&lt;a href="http://download.microsoft.com/download/9/5/e/95ef66af-9026-4bb0-a41d-a4f81802d92c/[MS-SMTP].pdf" target="_blank"&gt;NTLM-SMTP specification&lt;/a&gt;,&lt;/em&gt;I found out that the server should respond with
&lt;p&gt;&lt;em&gt;334 &amp;lt;NTLM supported as base64 encoded string&amp;gt;&lt;/em&gt;
&lt;p&gt;So the problem obviously is, that "NTLM supported" was not a valid Base-64 encoded string (as the inner exception above also pointed out).
&lt;p&gt;So how could this problem be solved...
&lt;p&gt;I digged into the private members of the &lt;em&gt;SmtpClient&lt;/em&gt; object and found a member called transport (of type SmtpTransport).
&lt;p&gt;The &lt;em&gt;SmtpTransport&lt;/em&gt; object had private members as well, and one of them was called &lt;em&gt;authenticationModules &lt;/em&gt;- bingo!&lt;br&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="257" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/HackingSystem.Net.Mail.SmtpClient_EC25/image_14.png" width="672" border="0"&gt; 
&lt;p&gt;This is an array of &lt;em&gt;ISmtpAuthenticationModule&lt;/em&gt;s like Negotiate, NTLM, Digest and Login.
&lt;p&gt;Unfortunately &lt;em&gt;SmtpClient&lt;/em&gt; always picks the most effective supported method (in this case NTLM). As NTLM was not working I needed a way to kick out NTLM of the list of supported auth methods.
&lt;p&gt;So I used reflection to modify the array and "disable" (override) NTLM in the array. Here's what I did:&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;FieldInfo&lt;/span&gt; transport = _client.GetType().GetField(&lt;span style="color: rgb(163,21,21)"&gt;"transport"&lt;/span&gt;,
    &lt;span style="color: rgb(43,145,175)"&gt;BindingFlags&lt;/span&gt;.NonPublic | &lt;span style="color: rgb(43,145,175)"&gt;BindingFlags&lt;/span&gt;.Instance);

&lt;span style="color: rgb(43,145,175)"&gt;FieldInfo&lt;/span&gt; authModules = transport.GetValue(_client).GetType()
    .GetField(&lt;span style="color: rgb(163,21,21)"&gt;"authenticationModules"&lt;/span&gt;,
        &lt;span style="color: rgb(43,145,175)"&gt;BindingFlags&lt;/span&gt;.NonPublic | &lt;span style="color: rgb(43,145,175)"&gt;BindingFlags&lt;/span&gt;.Instance);

&lt;span style="color: rgb(43,145,175)"&gt;Array&lt;/span&gt; modulesArray = authModules.GetValue(transport.GetValue(_client)) &lt;span style="color: rgb(0,0,255)"&gt;as&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Array&lt;/span&gt;;
modulesArray.SetValue(modulesArray.GetValue(2), 0);
modulesArray.SetValue(modulesArray.GetValue(2), 1);
modulesArray.SetValue(modulesArray.GetValue(2), 3);&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Voila!&lt;br&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="60" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/HackingSystem.Net.Mail.SmtpClient_EC25/image_17.png" width="320" border="0"&gt; &lt;/p&gt;
&lt;p&gt;Guess which smtp authentication module will be used now :-)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8399057" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/knom/archive/tags/Development/default.aspx">Development</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>Inside Workflow Foundation Activities</title><link>http://blogs.msdn.com/knom/archive/2008/03/01/inside-workflow-foundation-activities.aspx</link><pubDate>Sat, 01 Mar 2008 22:17:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7981110</guid><dc:creator>knom</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/knom/comments/7981110.aspx</comments><wfw:commentRss>http://blogs.msdn.com/knom/commentrss.aspx?PostID=7981110</wfw:commentRss><description>&lt;p&gt;Activities are the heart of WF. Together they form workflows, control the flow or do loops.&lt;/p&gt; &lt;p&gt;They can either be &lt;strong&gt;&lt;em&gt;simple and atomic&lt;/em&gt;&lt;/strong&gt; or&lt;strong&gt;&lt;em&gt; composite&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Simple activities&lt;/strong&gt; can do one thing as calling a database or web service, terminating the workflow or something else.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Composite&lt;/strong&gt; &lt;strong&gt;activities&lt;/strong&gt; consist of other activities - they have children within. If the "parent" composite activity is executed, it controls which children are executed in which order. The simplest composite activity, the sequence executes all it's children in a sequential way. A parallel activity consists of several sequences executes at the same time. But there are even more complex composite activities like IF statements, or loops. Even the entire workflow (either sequential or state machine based) is nothing more than a special activity with custom logic and additional properties.&lt;/p&gt; &lt;p&gt;Regardless of whether it is a simple or composite activity, each activity (at least somewhere above in the inheritance tree) inherits of &lt;strong&gt;&lt;em&gt;Activity&lt;/em&gt;&lt;/strong&gt; class.&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;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;MyActivity&lt;/span&gt; : &lt;span style="color: rgb(43,145,175)"&gt;Activity
&lt;/span&gt;{
    &lt;span style="color: rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Initialize(&lt;span style="color: rgb(43,145,175)"&gt;IServiceProvider&lt;/span&gt; provider);

    &lt;span style="color: rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;override&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;ActivityExecutionStatus&lt;/span&gt; Execute(&lt;span style="color: rgb(43,145,175)"&gt;ActivityExecutionContext&lt;/span&gt; executionContext);
    &lt;span style="color: rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;override&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;ActivityExecutionStatus&lt;/span&gt; Cancel(&lt;span style="color: rgb(43,145,175)"&gt;ActivityExecutionContext&lt;/span&gt; executionContext);
    &lt;span style="color: rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;override&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;ActivityExecutionStatus&lt;/span&gt; HandleFault(&lt;span style="color: rgb(43,145,175)"&gt;ActivityExecutionContext&lt;/span&gt; executionContext,
                                                                &lt;span style="color: rgb(43,145,175)"&gt;Exception&lt;/span&gt; exception);
    &lt;span style="color: rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Uninitialize(&lt;span style="color: rgb(43,145,175)"&gt;IServiceProvider&lt;/span&gt; provider);
}&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;What you get, is basic virtual methods, which you can override to provide the behaviour of your activity for this state.&lt;/p&gt;
&lt;p&gt;Speaking of states - each activity implements a finite state machine.&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/InsideWorkflowFoundationActivities_11D37/image_2.png"&gt;&amp;nbsp;&lt;/a&gt;That means the activity is guaranteed to be in one of the following states:&lt;a href="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/InsideWorkflowFoundationActivities_11D37/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="243" alt="image" src="http://blogs.msdn.com/blogfiles/knom/WindowsLiveWriter/InsideWorkflowFoundationActivities_11D37/image_thumb_1.png" width="644" border="0"&gt;&lt;/a&gt;  State transitions may occur only in the directions of the arrows. White arrows are runtime-, yellow ones developer initiated.&lt;/p&gt;
&lt;p&gt;This activity automaton displays the entire lifecycle of an activity:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;At creation of the workflow &lt;em&gt;&lt;strong&gt;Initialize()&lt;/strong&gt; &lt;/em&gt;is called on all activities. They are afterwards placed in the &lt;strong&gt;&lt;em&gt;Initialized &lt;/em&gt;&lt;/strong&gt;state.&lt;/li&gt;
&lt;li&gt;The activity is placed into &lt;strong&gt;&lt;em&gt;Executing&lt;/em&gt;&lt;/strong&gt; state and it's &lt;strong&gt;&lt;em&gt;Executing()&lt;/em&gt;&lt;/strong&gt; method is called. Within it the activity's actual work is done.&lt;/li&gt;
&lt;li&gt;If an error occurs, the activity &lt;em&gt;automatically &lt;/em&gt;transitions into &lt;strong&gt;&lt;em&gt;Faulting,&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;HandleFault()&lt;/em&gt;&lt;/strong&gt; is called.&lt;/li&gt;
&lt;li&gt;Executing activities can be &lt;strong&gt;canceled &lt;/strong&gt;&lt;em&gt;by other activities &lt;/em&gt;to stop their execution.&lt;/li&gt;
&lt;li&gt;Finally if all the execution, cancellation or fault handling work is done, the activity is closed &lt;em&gt;by the developer&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Additionally there is the possibility to "undo" already executed activities. For that situation you can implement the &lt;strong&gt;&lt;em&gt;ICompensatableActivity&lt;/em&gt;&lt;/strong&gt; interface, which defines a &lt;strong&gt;&lt;em&gt;Compensate()&lt;/em&gt;&lt;/strong&gt; method. This method is called in the &lt;strong&gt;&lt;em&gt;Compensating&lt;/em&gt;&lt;/strong&gt; state and allows you to provide custom undo logic.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;So to write you custom little activity, just inherit of the Activity base class and override the suitable methods for the states you want to provider logic for. To pass data from outside into the activity you can use &lt;strong&gt;&lt;em&gt;DependencyProperties&lt;/em&gt;&lt;/strong&gt;, a new concept in .NET 3.0 which are also used with WPF.&lt;/p&gt;
&lt;p&gt;Here is a sample of a ConsoleWritelineActivity:&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;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;ConsoleWriteline&lt;/span&gt; : &lt;span style="color: rgb(43,145,175)"&gt;Activity
&lt;/span&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;DependencyProperty&lt;/span&gt; OutputProperty = &lt;span style="color: rgb(43,145,175)"&gt;DependencyProperty&lt;/span&gt;.Register(&lt;span style="color: rgb(163,21,21)"&gt;"Output"&lt;/span&gt;,
        &lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;), &lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;ConsoleWriteline&lt;/span&gt;));

    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; Output
    {
        &lt;span style="color: rgb(0,0,255)"&gt;get
&lt;/span&gt;        {
            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; ((&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;)(&lt;span style="color: rgb(0,0,255)"&gt;base&lt;/span&gt;.GetValue(&lt;span style="color: rgb(43,145,175)"&gt;ConsoleWriteline&lt;/span&gt;.OutputProperty)));
        }
        &lt;span style="color: rgb(0,0,255)"&gt;set
&lt;/span&gt;        {
            &lt;span style="color: rgb(0,0,255)"&gt;base&lt;/span&gt;.SetValue(&lt;span style="color: rgb(43,145,175)"&gt;ConsoleWriteline&lt;/span&gt;.OutputProperty, &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;);
        }
    }
    &lt;span style="color: rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;override&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;ActivityExecutionStatus&lt;/span&gt; Execute(&lt;span style="color: rgb(43,145,175)"&gt;ActivityExecutionContext&lt;/span&gt; executionContext)
    {
        &lt;span style="color: rgb(43,145,175)"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.Output);
        &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;ActivityExecutionStatus&lt;/span&gt;.Closed;
    }
}&lt;/pre&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7981110" 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/WF/default.aspx">WF</category></item></channel></rss>