<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/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>ScottGu's Blog </title><link>http://weblogs.asp.net/scottgu/default.aspx</link><description>Scott Guthrie lives in Seattle and builds a few products for Microsoft</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Presenting in Europe Next Week</title><link>http://weblogs.asp.net/scottgu/archive/2009/11/27/presenting-in-europe-next-week.aspx</link><pubDate>Fri, 27 Nov 2009 08:33:49 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7265713</guid><dc:creator>ScottGu</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=7265713</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2009/11/27/presenting-in-europe-next-week.aspx#comments</comments><description>&lt;font size="2" face="arial"&gt;   &lt;p&gt;I’m off to Europe next week to do a bunch of technical presentations.&amp;#160; I’m presenting for 5-6 hours in a bunch of different cities, and will be doing talks that cover: ASP.NET 4 and VS 2010, ASP.NET MVC 2, and Silverlight 4.&lt;/p&gt;    &lt;p&gt;Below are details on the different cities I’m visiting, and how to register to attend the talks:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://reg.payments.no/microsoft/" target="_blank"&gt;Oslo, Norway - December 1st&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032433666&amp;amp;Culture=sv-SE" target="_blank"&gt;Stockholm, Sweden – December 2nd&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032433863&amp;amp;Culture=da-DK" target="_blank"&gt;Copenhagen, Denmark – December 3rd&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032433782&amp;amp;Culture=en-US" target="_blank"&gt;Brussels, Belgium – December 4th&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;I’ll also be attending the BizSpark Camp in Paris on December 8th and will be doing a presentation there as well:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032433417&amp;amp;Culture=fr-FR" target="_blank"&gt;Paris, France – December 8th&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;Hope to see some of you at once of these events in person!&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt;    &lt;p&gt;P.S. In addition to blogging, I’m also now using Twitter for quick updates and to share links. Follow me at: &lt;a href="http://www.twitter.com/scottgu"&gt;twitter.com/scottgu&lt;/a&gt;&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7265713" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Talks/default.aspx">Talks</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category></item><item><title>LIDNUG: Online chat with me Monday Nov 23rd</title><link>http://weblogs.asp.net/scottgu/archive/2009/11/22/lidnug-online-chat-with-me-monday-nov-23rd.aspx</link><pubDate>Mon, 23 Nov 2009 07:30:16 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7263333</guid><dc:creator>ScottGu</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=7263333</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2009/11/22/lidnug-online-chat-with-me-monday-nov-23rd.aspx#comments</comments><description>&lt;font size="2"&gt;   &lt;p&gt;&lt;font face="Arial"&gt;This past week was a busy one – with lots of announcements and cool releases happening at this year’s &lt;/font&gt;&lt;a href="http://microsoftpdc.com/" target="_blank"&gt;&lt;font face="Arial"&gt;PDC conference&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;.&amp;#160; All of the PDC keynotes and breakout sessions are now posted online for anyone to watch for free.&amp;#160; You can find sessions to watch &lt;/font&gt;&lt;a href="http://microsoftpdc.com/Sessions" target="_blank"&gt;&lt;font face="Arial"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;.&amp;#160; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Arial"&gt;My PDC keynote covered our new Silverlight 4 release and was on Day 2.&amp;#160; You can watch it &lt;/font&gt;&lt;a href="http://bit.ly/67G2Q4" target="_blank"&gt;&lt;font face="Arial"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt; (I start at the 1 hour, 2 minute, and 45 second mark).&lt;/font&gt;&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;&lt;font face="Arial"&gt;LIDNUG Online Chat Monday November 23rd&lt;/font&gt;&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;&lt;font face="Arial"&gt;I’ll be doing a &lt;/font&gt;&lt;a href="http://events.linkedin.com/LIDNUG-Scott-Guthrie-Talks-Shop/pub/144324" target="_blank"&gt;&lt;font face="Arial"&gt;free online web chat&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt; Monday November 23rd at 11:30am PST where you can ask any questions about anything (including PDC announcements).&amp;#160; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Arial"&gt;The chat is hosted by the LIDNUG user group.&amp;#160; You can sign up and attend for free &lt;/font&gt;&lt;a href="http://events.linkedin.com/LIDNUG-Scott-Guthrie-Talks-Shop/pub/144324" target="_blank"&gt;&lt;font face="Arial"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;.&amp;#160; The chat will be recorded and I’ll update this post with a link to the recording when it is over.&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Arial"&gt;You can ask questions either through the chat tool – or by posting them to Twitter.&amp;#160; To ask questions via twitter simply post a tweet using this format:&lt;/font&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;&lt;font face="Arial"&gt;@ScottGu #LidnugLiveQ &lt;em&gt;question goes here&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;&lt;em&gt;Post Show Update&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;: You can now download the audio version of the talk &lt;/font&gt;&lt;a href="http://bit.ly/6din68" target="_blank"&gt;&lt;font face="Arial"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;.&lt;/font&gt;&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;&lt;font face="Arial"&gt;Other PDC Resources&lt;/font&gt;&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;&lt;font face="Arial"&gt;I’ll be doing more blog posts about some of what was announced at PDC this past week.&amp;#160; Below are a few good posts that summarize some of the announcements from my team in the meantime:&lt;/font&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://bit.ly/83wA3e" target="_blank"&gt;&lt;font face="Arial"&gt;Silverlight 4 Overview&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt; &lt;/font&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://bit.ly/8coLxh" target="_blank"&gt;&lt;font face="Arial"&gt;Silverlight 4 Resources&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt; (includes links to all SL4 videos at PDC) &lt;/font&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://haacked.com/archive/2009/11/17/asp.net-mvc-2-beta-released.aspx" target="_blank"&gt;&lt;font face="Arial"&gt;ASP.NET MVC 2 Beta&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt; &lt;/font&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://jamessenior.com/post/News-on-the-ASPNET-Ajax-Library.aspx" target="_blank"&gt;&lt;font face="Arial"&gt;ASP.NET AJAX Library Beta&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;&amp;#160; &lt;/font&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&lt;font face="Arial"&gt;Hope this helps,&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Arial"&gt;Scott&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Arial"&gt;P.S. In addition to blogging, I’m also now using Twitter for quick updates and to share links. Follow me at: &lt;/font&gt;&lt;a href="http://www.twitter.com/scottgu"&gt;&lt;font face="Arial"&gt;twitter.com/scottgu&lt;/font&gt;&lt;/a&gt;&lt;em&gt;&lt;/em&gt;&lt;em&gt;&lt;font face="Arial"&gt; (@scottgu is my twitter name)&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7263333" width="1" height="1"&gt;</description></item><item><title>November Conferences</title><link>http://weblogs.asp.net/scottgu/archive/2009/11/02/november-conferences.aspx</link><pubDate>Tue, 03 Nov 2009 06:05:20 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7245704</guid><dc:creator>ScottGu</dc:creator><slash:comments>14</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=7245704</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2009/11/02/november-conferences.aspx#comments</comments><description>&lt;font size="2" face="arial"&gt;   &lt;p&gt;I’m doing keynotes at two big conferences later this month:&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET Connections in Las Vegas: November 9th to 12th&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;I’ll be doing a keynote talking about ASP.NET 4 and VS 2010 at the &lt;a href="http://bit.ly/4m1tRB" target="_blank"&gt;ASP.NET Connections conference&lt;/a&gt; next week.&amp;#160; I’ll also be doing an evening Q&amp;amp;A session together with the ASP.NET team.&lt;/p&gt;    &lt;p&gt;ASP.NET Connections is a great conference that is jointly hosted with the VS, SharePoint, SQL and Windows Connections conferences (enabling you to choose from tons of great sessions).&amp;#160; The speakers at the event are also really top-notch.&lt;/p&gt;    &lt;p&gt;You can learn more about the conference and register online &lt;a href="http://bit.ly/4m1tRB" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;PDC in Los Angeles: November 17th to 19th&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;I’m also doing a keynote at the &lt;a href="http://bit.ly/3XAm5d" target="_blank"&gt;Microsoft PDC conference&lt;/a&gt; in two weeks.&amp;#160; The PDC is Microsoft’s big platform conference, where we talk about future platform and technology roadmaps.&amp;#160; There is almost always some cool new stuff...&lt;/p&gt;    &lt;p&gt;You can learn more about the conference and register online &lt;a href="http://bit.ly/3XAm5d" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;Hope I might be able to see some of you in person at one of these events!&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt;    &lt;p&gt;P.S. In addition to blogging, I’m also now using Twitter for quick updates and to share links. Follow me at: &lt;/em&gt;&lt;a href="http://www.twitter.com/scottgu" target="_blank"&gt;twitter.com/scottgu&lt;/a&gt;&lt;em&gt;&lt;/em&gt;&lt;em&gt; (@scottgu is my twitter name)&lt;/em&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7245704" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category></item><item><title>Add Reference Dialog Improvements (VS 2010 and .NET 4.0 Series)</title><link>http://weblogs.asp.net/scottgu/archive/2009/10/29/add-reference-dialog-improvements-vs-2010-and-net-4-0-series.aspx</link><pubDate>Thu, 29 Oct 2009 07:12:09 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7242158</guid><dc:creator>ScottGu</dc:creator><slash:comments>116</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=7242158</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2009/10/29/add-reference-dialog-improvements-vs-2010-and-net-4-0-series.aspx#comments</comments><description>&lt;font size="2" face="arial"&gt;   &lt;p&gt;&lt;em&gt;[In addition to blogging, I am now using Twitter for quick updates and to share links. Follow me at: &lt;/em&gt;&lt;a href="http://www.twitter.com/scottgu" target="_blank"&gt;twitter.com/scottgu&lt;/a&gt;&lt;em&gt;&lt;/em&gt;&lt;em&gt; (@scottgu is my twitter name)]&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;This is the twelfth in &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/08/25/vs-2010-and-net-4-series.aspx" target="_blank"&gt;a series of blog posts&lt;/a&gt; I’m doing on the upcoming VS 2010 and .NET 4 release.&amp;#160; Today’s post covers a small, but nice, change coming with VS 2010 – an “Add Reference” dialog that loads fast.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Add Reference Dialog in VS 2008&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;The slow performance of the “Add Reference” dialog in previous releases of Visual Studio has been a common complaint that many a developer (including yours truly) has ranted about.&lt;/p&gt;    &lt;p&gt;Previous releases of VS opened the “Add Reference” dialog on the “.NET” tab by default – and when that tab was loaded VS would synchronously scan the global assembly cache (GAC) retrieving .NET assembly information.&amp;#160; Because the GAC scan was done on the UI thread, it would freeze the IDE until the scan completed – which meant that you couldn’t cancel the operation, even if you didn’t want to use that tab.&amp;#160; &lt;/p&gt;    &lt;p&gt;Because GAC scans can often take awhile (if you have lots of assemblies installed and/or a slow hard drive), you could end up having to wait a really long time for the dialog to respond.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Add Reference Dialog in VS 2010&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;The Beta2 release of VS 2010 introduces a few welcome changes to the “Add Reference” dialog behavior that significantly improves its performance.&amp;#160; &lt;/p&gt;    &lt;p&gt;The first improvement is that the “Add Reference” dialog in VS 2010 now defaults to opening on the “Projects” tab instead of the .NET tab.&amp;#160; This means that the dialog always loads really fast.&amp;#160; If you want to setup a project-to-project reference, or browse the file-system to select a file assembly, etc. you can now select these tabs immediately without having to wait for anything to load.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_0E7F4E62.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_1B792E73.png" width="482" height="408" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;The second improvement is that the .NET and COM tabs now load asynchronously and do not block the UI thread while their lists are populated.&amp;#160; This means that if you accidentally click the tabs you are no longer blocked waiting for them to synchronously load – with VS 2010 you can now either click “Cancel” to close the dialog or click on another tab instead.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1AA0C889.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_728E1969.png" width="482" height="408" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7242158" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category></item><item><title>WPF 4 (VS 2010 and .NET 4.0 Series)</title><link>http://weblogs.asp.net/scottgu/archive/2009/10/26/wpf-4-vs-2010-and-net-4-0-series.aspx</link><pubDate>Tue, 27 Oct 2009 06:11:49 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7240216</guid><dc:creator>ScottGu</dc:creator><slash:comments>55</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=7240216</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2009/10/26/wpf-4-vs-2010-and-net-4-0-series.aspx#comments</comments><description>&lt;font size="2" face="arial"&gt;   &lt;p&gt;&lt;em&gt;[In addition to blogging, I am now using Twitter for quick updates and to share links. You can follow me on Twitter at: &lt;/em&gt;&lt;a href="http://www.twitter.com/scottgu" target="_blank"&gt;twitter.com/scottgu&lt;/a&gt;&lt;em&gt;&lt;/em&gt;&lt;em&gt; (@scottgu is my twitter name)]&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;This is the eleventh in &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/08/25/vs-2010-and-net-4-series.aspx" target="_blank"&gt;a series of blog posts&lt;/a&gt; I’m doing on the upcoming VS 2010 and .NET 4 release.&amp;#160; Today’s post covers WPF 4.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;WPF 4 Improvements&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;WPF (Windows Presentation Foundation) is one of the core components of the .NET Framework, and enables developers to build rich, differentiated Windows client applications.&amp;#160; WPF 4 includes major productivity, performance and capability improvements – in particular in the areas of Controls, XAML, Text, Graphics, Windows 7 integration (multitouch, taskbar integration, etc), Core Fundamentals, and Deployment.&amp;#160; This is the first of several posts I’ll do over the coming months about some of the improvements and new features.&lt;/p&gt;    &lt;p&gt;I will do a separate post soon that covers some of the major advances coming with VS 2010’s WPF and Silverlight Designer – which also includes a ton of improvements.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Controls&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_13447686.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" align="right" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_35B90541.png" width="375" height="291" /&gt;&lt;/a&gt; &lt;b&gt;Controls for Building Rich Clients &lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;WPF 4 adds a variety of new controls that make building rich line-of-business applications for the client easier and faster. The new, richer control set includes LOB essentials such as DataGrid, DatePicker, and Calendar controls.&lt;b&gt; &lt;/b&gt;These new controls are 99% API- and behaviorally-compatible with their Silverlight counterparts, enabling developers to create a consistent experience across the client and web while optimizing workflow by reusing code between Silverlight and WPF implementations.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Bag O'Tricks is back&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;We are also releasing an out-of-band collection of eight controls called the WPF Bag O’ Tricks download.&amp;#160; It includes the following controls: AnimatingTilePanel, ColorPicker, InfoTextBox, ListPager, NumericUpDown, Reveal, TransitionsPresenter, TreeMapPanel.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Windows 7 &amp;amp; Office Ribbon Control&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;A new WPF Ribbon Control will be available for download shortly after the release of WPF 4. It features skins for Windows 7 and Office, as well as all the standard Ribbon features that end-users are familiar with, including tabs and groups, dynamic resizing, quick access toolbar, application menu, contextual tabs, key tips, and more.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6261BF1A.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_416E4C73.png" width="520" height="129" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;The WPF Ribbon will be fully extensible to meet changing guidelines for future releases. A CTP with a limited feature set is available today &lt;a href="http://www.codeplex.com/wikipage?ProjectName=wpf&amp;amp;title=WPF%20Ribbon%20Preview" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;    &lt;h3&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_2E4D1FC7.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" align="right" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_46708A22.png" width="360" height="284" /&gt;&lt;/a&gt;&lt;u&gt;GRAPHICS&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;&lt;b&gt;Cached Composition&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Massive performance wins are possible with the new Cached Composition feature in WPF 4, which allows applications to cache arbitrary content including live and fully-interactive controls, vector geometry, etc. as bitmaps which persist in video memory. Once cached, these elements can be arbitrarily transformed, animated, manipulated, and can have Effects applied, all without having to re-render the cached element.&amp;#160; &lt;/p&gt;    &lt;p&gt;This spares both the CPU and the GPU the cost of re-rendering content, and instead allows the GPU to render straight from the cache. The cache(s) understand dirty regions, so a blinking cursor in a cached textblock, for example, will only need to re-render the cursor between frames. There’s even a new Brush which specifically uses these intelligent caches – effectively a VisualBrush with vastly better performance.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Pixel Shader 3 Support&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;WPF 4 builds on top of the very popular ShaderEffect support first introduced in WPF 3.5 SP1 by allowing applications to now write Effects using Pixel Shader version 3.0. The PS 3.0 shader model is dramatically more sophisticated than PS 2.0, allowing for even more compelling Effects on supported hardware.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;LayoutRounding&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;WPF 4 adopts the &lt;a href="http://blogs.msdn.com/text/archive/2009/08/27/layout-rounding.aspx" target="_blank"&gt;UseLayoutRounding&lt;/a&gt; property, originally introduced in Silverlight 2. WPF’s layout engine frequently calculates sub-pixel positioning coordinates. This can lead to rendering artifacts as elements positioned on sub-pixel boundaries are anti-aliased over multiple physical pixels. &lt;/p&gt;    &lt;p&gt;UseLayoutRounding will force the layout engine to place elements on whole pixel boundaries, thus removing most of the rendering artifacts caused by this problem – which generates cleaner and crisper UI by default.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_3E78E7C0.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" align="right" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_4F7D15A3.png" width="349" height="251" /&gt;&lt;/a&gt; &lt;b&gt;Animation Easing Function&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Discrete, linear, and spline animations were supported with previous versions of WPF. WPF 4 introduces a new concept of Easing Functions – which allows application authors to create fluid behavior using animations. This can be used in an infinite number of ways, such as creating a springy behavior, or adding anticipation to an animation. Easing Functions customize the manner in which animations progress from start to finish.&amp;#160; The built-in easing functions provide a range of behaviors such as circular, exponential, elastic, and bouncy animation progress. The extensibility design also allows application authors to create custom easing functions to define the manner in which their animations progress. With this easy-to-use feature, designers can effortlessly create fluid, organic animations.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;CleartypeHint&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;The new CleartypeHint attached property allows application authors to enable higher-quality Cleartyped text rendering in many situations where it would have previously been disabled. Such situations include text in layered windows, text in VisualBrushes, DrawingBrushes, BitmapCacheBrushes, and anywhere else where the introduction of an intermediate render target would have previously resulted in grayscale text rendering.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;TEXT STACK&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;&lt;b&gt;New Text Rendering Stack&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;The &lt;a href="http://blogs.msdn.com/text/archive/2009/08/24/wpf-4-0-text-stack-improvements.aspx" target="_blank"&gt;WPF text rendering stack&lt;/a&gt; has been completely replaced – a change that brings with it significant improvements to text rendering clarity, configurability, and support for international languages. The new text stack now supports display-optimized character layout, to produce text with comparable sharpness to Win32/GDI text:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_35A8DF74.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_098BE283.png" width="446" height="167" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;WPF’s new text stack also now supports explicitly selecting aliased, grayscale, or ClearType rendering modes:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_214319E9.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_32B37AC1.png" width="137" height="46" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;The new text stack allows optimizing text hinting and snapping for either animated or static text. Additionally, the new text stack now supports fonts with embedded bitmaps. This allows many East Asian fonts to render with the sharpness to which Win32 users have grown accustomed. &lt;/p&gt;    &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;BindableRun&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Since the initial release of WPF, Run.Text has been a normal CLR property. This has meant that Run.Text lacks all the benefits of the WPF dependency property system, most notably the ability to be bound. In WPF 4, we have converted Run.Text to a dependency property allowing developers to use the first WPF supplied bindable Run.&amp;#160; More details can be found &lt;a href="http://blogs.msdn.com/text/archive/2009/09/01/bindable-run.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Custom Dictionaries&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;WPF includes a spell checker which before WPF 4 only used the OS-provided dictionary for input validation. This has been a major issue for apps which target specific industries with specialized terminology, as those apps were plagued by misspelling notifications. WPF 4 has introduced an API to allow an application to add words to the dictionaries used by WPF for spell checking.&amp;#160; More details can be found &lt;a href="http://blogs.msdn.com/text/archive/2009/10/02/custom-dictionaries.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Selection and Caret Brush &lt;/b&gt;&lt;/p&gt;    &lt;p&gt;In a push to allow rich customization of the look and feel of WPF apps, developers can also now change the brush used to paint WPF text selection and carets via two simple properties: &lt;a href="http://blogs.msdn.com/text/archive/2009/08/28/selection-brush.aspx" target="_blank"&gt;SelectionBrush&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/text/archive/2009/09/01/caret-brush.aspx" target="_blank"&gt;CaretBrush&lt;/a&gt;:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_59155E0C.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_50B188B5.png" width="263" height="108" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://weblogs.asp.net/blogs/scottgu/image_36DD5286.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_561FF959.png" width="203" height="108" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;h3&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1C30B66D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" align="right" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_5396C79B.png" width="445" height="298" /&gt;&lt;/a&gt;&lt;u&gt;WINDOWS 7 LIGHT UP&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;&lt;b&gt;Windows 7 Multitouch Support&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;With the introduction of multi-touch input and manipulation processing support, WPF 4 provides a great way to light up your client applications in Windows 7. Multiple finger input are exposed through existing and new input events in WPF 4, while new manipulation and inertia events are now available for developers to use. New features include:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Multi-touch Manipulation, Inertia (Pan, Zoom, Rotate) events on UIElement &lt;/li&gt;      &lt;li&gt;Raw multi-touch events (Up, Move, Down) on UIElement, UIElement3D and ContentElement &lt;/li&gt;      &lt;li&gt;Multiple capture supporting multiple active controls &lt;/li&gt;      &lt;li&gt;ScrollViewer enhancement to support multi-touch panning &lt;/li&gt;      &lt;li&gt;Touch device extensibility &lt;/li&gt;      &lt;li&gt;Future Surface SDK compatibility &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&lt;b&gt;Windows 7 Shell Integration&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;WPF 4 also exposes several new and key Windows 7 Shell features to WPF developers. These Shell features enable a richer, integrated user experience. The new taskbar is less cluttered and can convey more information at a glance. The Aero thumbnails support user commands. Jump lists provide access to contextual startup tasks and files available to the application.&lt;/p&gt;    &lt;p&gt;WPF 4 integrates Windows 7 Jump List functionality, including:&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_3F9D3505.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" align="right" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_28FAE6BE.png" width="517" height="168" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Tasks &lt;/li&gt;      &lt;li&gt;Items &lt;/li&gt;      &lt;li&gt;Recent and Frequent Lists integration &lt;/li&gt;      &lt;li&gt;Custom Categories &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;Windows 7 Taskbar integration, including:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Progress bar &lt;/li&gt;      &lt;li&gt;Overlay Icon &lt;/li&gt;      &lt;li&gt;Thumbnail buttons with commanding support &lt;/li&gt;      &lt;li&gt;Description Text DWM Thumbnail clipping &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;In Windows 7, the taskbar has been redesigned to be less cluttered and to help users perform tasks with fewer clicks. WPF 4 provides integration with the Windows 7 taskbar in XAML, allowing applications to surface useful information to the user from the application's taskbar icon using icon overlays, progress bar, thumbnail toolbars, thumbnail description text, and thumbnail clipping. &lt;/p&gt;    &lt;p&gt;There is also a new TaskbarItemInfo class in WPF 4 that is exposed as a dependency property.&amp;#160; It encompasses all the new taskbar features introduced in Windows 7. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_55A3A097.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" align="right" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_06C2DB38.png" width="401" height="94" /&gt;&lt;/a&gt;&lt;b&gt;Icon Overlays &lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Icon overlays allow an application to communicate certain notifications and status to the user through its taskbar button by display of small overlays which appear at the lower-right corner of the button. &lt;/p&gt;    &lt;p&gt;&lt;b&gt;Progress Bars &lt;/b&gt;&lt;/p&gt;    &lt;p&gt;A taskbar button can be used to display simple progress information to the user without that user having to switch to the application window itself. Progress bars can be used to track file copies, downloads, installations, media burning, or any other operation that will take a period of time.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Thumbnail Toolbars&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Thumbnail Toolbars provide access to the key commands for an application without the user having to restore or activate the window. This feature enables application authors to embed an active toolbar control in a window's thumbnail preview. The application can show, enable, disable, or hide buttons from the thumbnail toolbar as required by its current state:&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_5386A1CE.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_0B58E5F2.png" width="337" height="235" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;WPF FUNDAMENTALS&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;&lt;b&gt;New XAML/BAML Parser Engine &lt;/b&gt;&lt;/p&gt;    &lt;p&gt;WPF 4 has replaced its implementation of XamlReader.Load(), BAML loading, Control &amp;amp; DataTemplates functionality with a new engine built on top of the new System.Xaml.dll.&amp;#160; As part of this effort, we’ve fixed many bugs and made many functionality improvements. Users of XamlReader.Load() can take advantage of several new language features in XAML2009 such as support for generic types. MarkupExtensions and TypeConverters can now get more services during object graph creation, enabling more scenarios, such as access to the Root object. Tools to analyze and manipulate XAML will also be much easier to create with many of the new low level APIs provided in System.Xaml.dll.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Data Binding Support for DLR&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Unlike CLR classes, the members of dynamic objects are defined at runtime. DynamicObject is a new abstract class in the .NET Framework 4 that allows developers to easily implement IDynamicMetaObjectProvider. With C#’s new DLR support with the ‘dynamic’ keyword, we are expecting some library implementations to switch to using DynamicObject and IDynamicMetaObjectProvider as a standard way to exposing runtime defined properties and members of objects. WPF 4 data binding support for IDynamicMetaObjectProvider will allow the use of natural property syntax to access dynamic properties.&lt;/p&gt;    &lt;p&gt;This feature extends the WPF data binding engine to map the existing property and indexer access data binding syntax to support access to dynamic members offered by IDynamicMetaObjectProvider.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Visual State Manager (VSM) &lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Another new feature supporting the WPF-Silverlight continuum is the VisualStateManager, which introduces a simple new way to apply visual states to controls. This mechanism provides a way to easily customize both the look and feel of a control by providing the means to map the control logic to its respective start and end visual states.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_170E2D24.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_68487481.png" width="534" height="207" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;VSM is very flexible in that it automatically generates the transition animations in between the respective states, so the control author spends less time writing code and more time on the visual states that are defined in a control template. That means VSM can give a control author the ability to easily interchange the look and feel of controls, and VSM gives the control author a way to easily interchange how a control visually responds to user interaction.&amp;#160; This is fully supported with Expression Blend.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;HTML-XBAP Script Interop &lt;/b&gt;&lt;/p&gt;    &lt;p&gt;WPF 4 provides the means for direct communication between an XBAP and script in the host HTML page (where the XBAP is loaded in an HTML frame or IFRAME element). The XBAP can get deep access to the HTML DOM, including to any ActiveX controls embedded in the containing HTML page and including handling of DOM events. &lt;/p&gt;    &lt;p&gt;WPF exposes the main script object from the host frame. This is a dynamic object that represents the frame’s window object plus any custom script functions and global variables from script in the HTML page. From it, an application can invoke script functions directly or “dot into” the HTML DOM. The functionality is available in partial-trust XBAPs and under all supported versions of Internet Explorer and Firefox.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;UIAutomation Virtualization &lt;/b&gt;&lt;/p&gt;    &lt;p&gt;WPF has introduced virtualized controls in past releases; however there was never a standardized way for an automation client to interact with a virtualized control. Two control patterns, ItemsContainerPattern and VirtualizedItemPattern, have been added in WPF 4 to support access and interact with virtualized elements. ItemsContainerPattern is used to access the virtualized controls &amp;amp; find virtualized items and VirtualizedItemPattern is used to realize virtualized items.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;SynchronizedInput Pattern&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;This is another UIA control pattern added in WPF 4. This pattern could be used by automation clients to track whether the given input event is routed to the correct element by WPF framework. This pattern has three associated automation events, viz. InputReachedTargetEvent, InputReachedOtherElementEvent and InputDiscardedEvent to indicate where the input is handled.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;CLIENT DEPLOYMENT&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;&lt;b&gt;.NET Framework 4 Client Profile&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;To improve deployment size, time and overall experience of the .NET Framework 4 deployment, there is now a more compact version of .NET that is a subset of the full .NET Framework 4 - called the &lt;a href="http://blogs.msdn.com/jgoldb/archive/2009/10/19/what-s-new-in-net-framework-4-client-profile-beta-2.aspx" target="_blank"&gt;.NET Framework 4 Client Profile&lt;/a&gt;. The current redistributable size of the .NET Framework 4 Client Profile is about 30MB. The full Microsoft .NET Framework 4 is a pure superset of the Client Profile.&lt;/p&gt;    &lt;p&gt;The goal of the .NET Framework 4 Client Profile is to improve and help streamline the deployment size, time, reliability and overall deployment experience for client applications. The Client Profile contains the functionality that most common desktop client applications (including Windows Forms and WPF applications) would need so it is anticipated that the majority of client application developers will target it instead of the Full .NET Framework 4. For that reason, most Visual Studio 2010 Beta 2 client project templates target the .NET Framework 4 Beta 2 Client Profile by default. &lt;/p&gt;    &lt;p&gt;Unlike the .NET Framework 3.5 SP1 Client Profile, an important enhancement in the NET Framework 4 Client Profile is its support on all platforms and OSs, including those supported by the Full Framework like Windows Vista, Windows XP, Windows Servers 2003 and 2008, Windows 7, all for both x86 and x64.&amp;#160; &lt;/p&gt;    &lt;p&gt;You can view or change the version of the framework that you target by opening your project’s properties window, and then select the &amp;quot;Application&amp;quot; page. You can then change the “Target framework” drop-down to either the full .NET Framework or the .NET Client Profile.&amp;#160; The project Publish property page also allows you to select the prerequisite needed for your ClickOnce deployment. In Beta2, VS2010 automatically selects the correct profile (Client Profile or Full) depending on your primary project target:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_2739F51D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_2CA865C1.png" width="687" height="553" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;The same prerequisite dialog from above appears when you create “Setup and Deployment” projects (under “Add New Project”/“Other Project Types”). The NET4 Client Profile prerequisite entry is checked by default in this case.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Enhancements in NET4 Client Profile vs. NET 3.5 SP1 Client Profile&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Although the concept of a Client Profile is not new and was &lt;a href="http://windowsclient.net/wpf/wpf35/wpf-35sp1-client-profile.aspx" target="_blank"&gt;introduced in .NET Framework 3.5 SP1&lt;/a&gt;, the .NET Framework 4 Client Profile contains several important improvements:&lt;/p&gt;    &lt;p&gt;     &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;         &lt;tr style="color: white" bgcolor="#000000"&gt;           &lt;td valign="top" width="164"&gt;&amp;#160;&lt;/td&gt;            &lt;td valign="top" width="328"&gt;             &lt;p&gt;&lt;b&gt;.NET Framework 4 Client Profile (NEW)&lt;/b&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td valign="top" width="315"&gt;             &lt;p&gt;&lt;b&gt;.NET Framework 3.5 SP1 Client Profile &lt;/b&gt;&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="164"&gt;             &lt;p&gt;&lt;b&gt;Supported OS &lt;/b&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td valign="top" width="328"&gt;             &lt;p&gt;Supported on all platforms and&amp;#160; OSs that are supported by the .NET Framework (excluding IA64 and the Server Core role in W2K8) &lt;/p&gt;           &lt;/td&gt;            &lt;td valign="top" width="315"&gt;             &lt;p&gt;Supported only on Windows XP 32-bit machines that did not have any .NET Framework version installed. &lt;/p&gt;              &lt;p&gt;(Client Profile setup silently installs the full 3.5 SP1 Framework otherwise) &lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="164"&gt;             &lt;p&gt;&lt;b&gt;Redistributable &lt;/b&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td valign="top" width="328"&gt;             &lt;p&gt;Supports redistributable as well as web download &lt;/p&gt;           &lt;/td&gt;            &lt;td valign="top" width="315"&gt;             &lt;p&gt;Supports web download only &lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="164"&gt;             &lt;p&gt;&lt;b&gt;Add Remove Programs entries &lt;/b&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td valign="top" width="328"&gt;             &lt;p&gt;The full Framework comprises the Client Profile and another part called “Extended”. Thus it has two entries in the Add/Remove Programs dialog (or Programs and Features window). &lt;/p&gt;              &lt;p&gt;If you installed the Full Framework, you can switch to the Client Profile by simply removing “Extended” from Add/Remove Programs. &lt;/p&gt;           &lt;/td&gt;            &lt;td valign="top" width="315"&gt;             &lt;p&gt;Single entry in Add Remove Programs &lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="164"&gt;             &lt;p&gt;&lt;b&gt;Visual Studio &lt;/b&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td valign="top" width="328"&gt;             &lt;p&gt;Improved support for Client Profile targeting in Visual Studio 2010. &lt;/p&gt;              &lt;p&gt;By default many Visual Studio 2010 Beta2 Client project target the NET4 Client Profile. &lt;/p&gt;           &lt;/td&gt;            &lt;td valign="top" width="315"&gt;             &lt;p&gt;Single checkbox in Visual Studio 2008 Service Pack 1 “Application” Project properties for .NET Framework 3.5 projects. Client Profile support unavailable in out-of-the-box VS 2008. &lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="164"&gt;             &lt;p&gt;&lt;b&gt;Features &lt;/b&gt;&lt;/p&gt;           &lt;/td&gt;            &lt;td valign="top" width="328"&gt;             &lt;p&gt;Includes new .NET 4&amp;#160; features (such as &lt;a href="http://www.codeplex.com/MEF"&gt;Managed Extensibility Framework&lt;/a&gt; (MEF), &lt;a href="http://www.hanselman.com/blog/C4AndTheDynamicKeywordWhirlwindTourAroundNET4AndVisualStudio2010Beta1.aspx"&gt;C# 4 Dynamic Keyword,&lt;/a&gt; etc) as well as features previously included in NET 3.5 SP1 Full (Speech, WPF Spell Check, etc) &lt;/p&gt;           &lt;/td&gt;            &lt;td valign="top" width="315"&gt;             &lt;p&gt;Subset of features in .NET 3.5 SP1 Full &lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;&lt;/table&gt;   &lt;/p&gt;    &lt;p&gt;Because .NET 4.0 is a side-by-side release from previous releases of the .NET Framework, installation of the .NET 4.0 Framework does not require that prior versions of .NET on the machine need to be serviced/patched.&amp;#160; This means that the .NET 4.0 Client Profile installs much faster on a machine than the .NET 3.5 SP1 Client Profile.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Full Trust XBAP Deployment &lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Starting in WPF 4, the ClickOnce elevation prompt is also enabled for XAML Browser Applications (XBAPs) in Intranet and Trusted Zones, making it easier to deploy full-trust XBAPs. For XBAPs that require security permissions greater than the minimum code access security (CAS) permission grantset of the Intranet and Trusted Zones, the user will be able to click 'Run' on the ClickOnce elevation prompt when they navigate to the XBAP to allow the XBAP to run with the requested permissions. &lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;As you can tell above – there is a bunch of great new functionality coming with WPF 4.0.&amp;#160; Below are a few links and resources you can follow to learn more some of these features:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://channel9.msdn.com/posts/Jaime+Rodriguez/New-Text-Stack-in-WPF-4/"&gt;Channel 9: Chipalo Street explains what’s new and improved in WPF 4 Text&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://blogs.msdn.com/text/"&gt;Chipalo also has a series of in-depth posts on the improvements in WPF 4’s new text stack.&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://channel9.msdn.com/posts/Jaime+Rodriguez/Graphics-improvements-in-WPF-4/"&gt;Channel 9: A primer on WPF 4 Graphics with David Teitlebaum&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://channel9.msdn.com/posts/Jaime+Rodriguez/NET-4-Client-Profile/"&gt;Channel 9: Jossef Goldberg delves into what’s new in the Client Profile in .NET Framework 4 &lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Jossef also has detailed posts that &lt;a href="http://blogs.msdn.com/jgoldb/archive/2009/05/27/net-framework-4-client-profile-introduction.aspx"&gt;introduces .NET 4 Client Profile &lt;/a&gt;and details &lt;a href="http://blogs.msdn.com/jgoldb/archive/2009/10/19/what-s-new-in-net-framework-4-client-profile-beta-2.aspx"&gt;what’s new in .NET 4 Beta 2 Client Profile&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://channel9.msdn.com/posts/Jaime+Rodriguez/Whats-new-in-the-WPF-and-Silverlight-Cider-Designer-in-VS2010-beta2/"&gt;Channel 9: Mark Wilson-Thomas demos what’s new in the Visual Studio 2010 WPF and Silverlight Designers &lt;/a&gt;&lt;/li&gt;      &lt;li&gt;and there are &lt;a href="http://windowsclient.net/wpfdesigner/"&gt;additional Hands on labs and videos on Windows Client.net&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://blogs.msdn.com/jaimer/archive/2009/10/23/what-is-new-in-wpf-and-cider-on-the-net-framework-4-and-vs2010-beta-2-release.aspx"&gt;Jaime Rodriguez’s highlights some of the key new features in WPF 4 and the WPF Designer in Visual Studio 2010 Beta 2&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;I’ll do more posts in the coming months that also highlight some of the new WPF 4 capabilities and how to take advantage of them.&amp;#160; I’ll also be doing another post shortly that talks about the new VS 2010 WPF and Silverlight designer – which makes it possible to build great WPF and Silverlight applications using a WYSIWYG designer directly within Visual Studio 2010.&lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7240216" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/WPF/default.aspx">WPF</category></item><item><title>VS 2010 Code Intellisense Improvements (VS 2010 and .NET 4.0 Series)</title><link>http://weblogs.asp.net/scottgu/archive/2009/10/22/vs-2010-code-intellisense-improvements-vs-2010-and-net-4-0-series.aspx</link><pubDate>Fri, 23 Oct 2009 06:47:54 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7236752</guid><dc:creator>ScottGu</dc:creator><slash:comments>69</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=7236752</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2009/10/22/vs-2010-code-intellisense-improvements-vs-2010-and-net-4-0-series.aspx#comments</comments><description>&lt;font size="2" face="arial"&gt;   &lt;p&gt;This is the tenth in &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/08/25/vs-2010-and-net-4-series.aspx" target="_blank"&gt;a series of blog posts&lt;/a&gt; I’m doing on the upcoming VS 2010 and .NET 4 release.&amp;#160; &lt;/p&gt;    &lt;p&gt;In today’s blog post I’m going to cover a small but really nice improvement to code intellisense with VS 2010 – which is its ability to better filter type and member code completion.&amp;#160; This enables you to more easily find and use APIs when writing code.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Code Intellisense with VS 2008&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;To help illustrate this intellisense improvements coming with VS 2010, let’s start by doing a simple scenario in VS 2008 where we want to write some code to enable an editing scenario with a GridView control.&lt;/p&gt;    &lt;p&gt;We might start off by typing “GridView1.Edit” to bring up intellisense to see what Edit members are available on the control.&amp;#160; Doing this with VS 2008 brings up the intellisense drop-down and filters the current location in the dropdown to the members that start with the word “Edit”:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_09E715E4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_1674C300.png" width="543" height="341" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;This is great if the method/property/event we want to work with starts with “Edit” – but doesn’t really help us if the “Edit” member we are looking for starts with something else (for example: the “RowEditing” event or the “SetEditRow()” helper method).&amp;#160; We have to either manually scroll up and down looking for the other edit members, or pull up the object browser or help system to find them.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Code Intellisense with VS 2010&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Let’s now try out the same scenario with VS 2010.&amp;#160; When we type “GridView1.Edit” within VS 2010 we’ll find that the EditIndex property is still highlighted by default.&amp;#160; But the intellisense list has also been filtered so that it enables you to quickly locate all other members that have the word “Edit” &lt;em&gt;anywhere&lt;/em&gt; in them:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_00AADAA3.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_1FED8176.png" width="579" height="288" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;This allows us to quickly see &lt;u&gt;all&lt;/u&gt; of the edit related methods/properties/events and more quickly find what we are looking for.&lt;/p&gt;    &lt;p&gt;&lt;u&gt;&lt;strong&gt;Searching for Keywords&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;    &lt;p&gt;This new intellisense filtering feature of VS 2010 is useful for searching for any member – regardless of what word it starts with.&amp;#160; For example, if we want to enable paging on a datagrid and can’t remember how to-do it, we could just type “GridView1.Paging” and it would automatically filter out everything but members that have the word paging.&amp;#160; Notice below how no members on the GridView class actually start with the word “Paging” – but I am still finding the two members that do have paging in them later in their names:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_7EFA0ECE.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_332E3815.png" width="621" height="227" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;u&gt;Searching for Types&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;This new intellisense filtering capability of VS 2010 is also useful for quickly finding classes and types. For example, when we type “List” to declare a variable, the editor will provide automatic filtering to show all types that have the word “List” somewhere in them (including IList&amp;lt;&amp;gt; and SortedList&amp;lt;&amp;gt; – which do not start with List):&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_5270DEE8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_55A2C6D0.png" width="504" height="335" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;This makes it much easier to find type names you can’t entirely remember – without having to resort to searching through the object browser and/or using help documentation.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;u&gt;Pascal Case Intellisense&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;The .NET Framework naming guidelines specify that type and member names should be “Pascal Cased” by default.&amp;#160; This means that each word in a type or member should start with a capitalized letter (for example: &lt;strong&gt;P&lt;/strong&gt;age&lt;strong&gt;I&lt;/strong&gt;ndex&lt;strong&gt;C&lt;/strong&gt;hanged).&amp;#160; &lt;/p&gt;    &lt;p&gt;VS 2010’s intellisense filtering support now enables you to take advantage of this to quickly find and filter methods based on their pascal naming pattern.&amp;#160; For example, if we typed “GridView1.PIC” VS 2010 would filter to show us the members that have PIC in their name, as well as those members which have a pascal cased name where the word segments start with that letter sequence:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_74E56DA3.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_4215672F.png" width="626" height="177" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Notice above how PIC caused both “PageIndexChanged” and “PageIndexChanging” to show up.&amp;#160; This saves us a few keystrokes when resolving either member or type names.&amp;#160; &lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;I think you’ll find that the new intellisense filtering approach in VS 2010 makes it easier to quickly find and use classes and members when writing code.&amp;#160; You can take advantage of it with both VB and C#.&lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt;    &lt;p&gt;P.S. In addition to blogging, I have recently been using Twitter to-do quick posts and share links. You can follow me on Twitter at: &lt;a href="http://www.twitter.com/scottgu" target="_blank"&gt;www.twitter.com/scottgu&lt;/a&gt; (@scottgu is my twitter name)&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7236752" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category></item><item><title>Searching and Navigating Code in VS 2010 (VS 2010 and .NET 4.0 Series)</title><link>http://weblogs.asp.net/scottgu/archive/2009/10/21/searching-and-navigating-code-in-vs-2010-vs-2010-and-net-4-0-series.aspx</link><pubDate>Wed, 21 Oct 2009 07:50:57 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7234625</guid><dc:creator>ScottGu</dc:creator><slash:comments>81</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=7234625</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2009/10/21/searching-and-navigating-code-in-vs-2010-vs-2010-and-net-4-0-series.aspx#comments</comments><description>&lt;font size="2" face="arial"&gt;   &lt;p&gt;This is the ninth in &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/08/25/vs-2010-and-net-4-series.aspx" target="_blank"&gt;a series of blog posts&lt;/a&gt; I’m doing on the upcoming VS 2010 and .NET 4 release.&amp;#160; In today’s blog post I’m going to cover some of the new code searching and navigation features that are now built-into VS 2010.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Searching and Navigating code&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Developers need to be able to easily navigate, search and understand the code-base they are working on.&amp;#160; In usability studies we’ve done, we typically find that developers spend more time reading, reviewing and searching existing code than actually writing new code.&amp;#160; &lt;/p&gt;    &lt;p&gt;The VS 2010 code editor adds some nice new features that allow you to more productively search and navigate a code-base, and enable you to more easily understand how code is being used within a solution.&amp;#160; &lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Searching and Navigating the ASP.NET MVC Source Code &lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;For this blog post I’m going to use the ASP.NET MVC framework code-base (which has many thousand lines of code) to help demonstrate some of the new VS 2010 searching and navigation features.&amp;#160; If you have VS 2010 Beta 2 installed, you can follow along by downloading and opening the ASP.NET MVC framework source code from &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471" target="_blank"&gt;here&lt;/a&gt;. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_5F9C65E4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_04B9B051.png" width="704" height="492" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;You should find that the performance of the below features is really fast with this project – despite it being many thousands of lines of code in size.&amp;#160; All of the features I’m demonstrating below are also now built-into VS 2010 (and work for all project types and for both VB and C#).&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;VS 2010 “Navigate To” Support&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Being able to quickly find and navigate code is important with both big and small solutions.&lt;/p&gt;    &lt;p&gt;Visual Studio 2010 now supports a new (&lt;strong&gt;Ctrl&lt;/strong&gt;+&lt;strong&gt;comma)&lt;/strong&gt; keyboard shortcut (meaning the control key is held down together with the comma key).&amp;#160; When you press the (&lt;strong&gt;Ctrl+comma)&lt;/strong&gt; combination, a new VS 2010 “Navigate To” dialog will appear that allows you to quickly search for types, files, variables and members within your solution – and then open and navigate to them:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_0713324F.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_41FA6518.png" width="714" height="392" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;The “Navigate To” dialog provides an fast incremental search UI – with results immediately populating as soon as you start typing search terms.&amp;#160; For example, type “cont” (without pressing enter) and you’ll see that 176 results immediately show up within the results list as you start to type:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_12C87981.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_23CCA764.png" width="714" height="392" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Type a few more characters and you’ll see the list automatically filters to just those results that match “controller”:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_77AFAA72.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_3634F819.png" width="714" height="392" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;You can use the scroll bar to scroll through the results – or alternatively press the tab key and then use the cursor arrows if you don’t want to take your hands off the keyboard.&amp;#160; You’ll find that the “Navigate To” window lists all types of results that match your search term – including Type names, Method/Property names, Field declarations, and file names:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_473925FC.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_5AE60F90.png" width="714" height="392" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Selecting any of the results in the results list will open the relevant source file within VS 2010 (if it isn’t already open) and take you immediately to the relevant source location (and highlight the relevant name within it):&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6BEA3D73.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_033541E5.png" width="704" height="492" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;u&gt;&lt;strong&gt;Nice Fuzzy Search Capabilities&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;    &lt;p&gt;The “Navigate To” search box supports some nice “fuzzy search” capabilities that allow you to perform smart filters and searches without having to know exactly the name of the thing you are looking for.&amp;#160; These work well with the incremental/immediate search UI of the dialog – and allow you to refine your searches and get real-time results as you type.&lt;/p&gt;    &lt;p&gt;To try this out let’s first search on the word “cache”.&amp;#160; Notice how the search results include not just items that start with the word “cache” – but also display any results that have the word “cache” in it:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_219F82CE.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_075F19AA.png" width="714" height="392" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;We can add multiple words to the search textbox to further filter the results.&amp;#160; For example, below I am filtering the list to only include those that have both “cache” &lt;em&gt;and&lt;/em&gt; “action” in the name:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_2D54CA00.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_7E22DE68.png" width="714" height="392" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Types and members within the .NET Framework using a naming design-guideline pattern called “Pascal Casing” – which means that the first letter of each word in a Type or Member name is capitalized.&amp;#160; The “Navigate To” dialog allows you to optionally use this “Pascal Casing” convention to quickly filter types. Just type the uppercase first letter of names in a type/member and it will automatically filter for results that match the uppercase pascal naming convention.&amp;#160; &lt;/p&gt;    &lt;p&gt;For example, typing “AMS” will filter to the below results (just those types and members that have words in them that start with A then M then S):&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_18EF0475.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_7C05DF9F.png" width="714" height="392" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;The “Navigate To” dialog allows you to quickly filter and locate code with a minimum of keystrokes – and avoid you ever having to use the mouse, open the solution explorer, and click on a file directly.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;View Call Hierarchy&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Having the ability to quickly search and navigate to code is great.&amp;#160; Being able to also quickly discover how that code is being used is even better.&amp;#160; VS 2010 introduces a new “View Call Hierarchy” feature that allows you to quickly discover where a particular method or property within your code-base is being called from, and allows you to quickly traverse the call tree graph throughout the code-base (without having to run or debug the solution).&lt;/p&gt;    &lt;p&gt;To use this feature, simply select a method or property name within your code-base, and then either type the (&lt;strong&gt;Ctrl+K,Ctrl+T) &lt;/strong&gt;keyboard shortcut combination, or right-click and select the “View Call Hierarchy” context menu command:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_76B6F8EE.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_1997BA9F.png" width="795" height="586" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;This will bring up a new “Call Hierarchy” tool window that by default shows up under the code editor.&amp;#160; Below you can see how the “Call Hierarchy” window is displaying the two methods within our solution that invoke the ViewPage.RenderView() method we selected above.&amp;#160; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_581D0845.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_5DF7ABDE.png" width="779" height="569" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;We can then optionally drill down hierarchically into the first “RenderViewAndRestoreContentType” method to see who in-turn calls it:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_5CB312FF.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_22579D1E.png" width="804" height="617" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;For virtual methods/properties you can also use the call hierarchy window to see what types sub-class and override them.&lt;/p&gt;    &lt;p&gt;Double clicking any of the members within the “Call Hierarchy” window will open the appropriate source file and take you immediately to that source location:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_79D8BB09.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_31AAFF2D.png" width="801" height="637" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;This allows you to quickly navigate throughout a code-base and better understand the relationships between classes and methods as you code.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Highlighted References&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;With VS 2010, when you select or highlight a variable / parameter / field declaration within the code-editor, all subsequent usages of it are now automatically highlighted for you within the editor.&amp;#160; This makes it easy to quickly identify where and how a variable or parameter is being used.&lt;/p&gt;    &lt;p&gt;For example, when we select the “controllerContext” parameter passed to the ControllerActionInvoker.GetParameterValue() method in the editor below, notice how the 4 usages of it within that method are also now automatically highlighted:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_5E53B906.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_2F21CD6F.png" width="755" height="619" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;If I select a local variable within the method, all the places it is used are also now automatically highlighted:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_0DC227D3.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_139CCB6C.png" width="755" height="619" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;If multiple usages are highlighted, you can cycle through them using the (&lt;strong&gt;Ctrl-Shift-up arrow)&lt;/strong&gt; and (&lt;strong&gt;Ctrl-Shift-Down arrow&lt;/strong&gt;) keystrokes to quickly move the cursor to the previous or next highlighted symbol.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;The new VS 2010 text editor makes it easy to quickly search, navigate and explore code within a project or solution.&amp;#160; The performance of these operations is really fast (even with a large code-base) and are kept up to date as you work on the project and make changes to it.&amp;#160; The end result enables you to be much more productive.&lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt;    &lt;p&gt;P.S. In addition to blogging, I have recently been using Twitter to-do quick posts and share links. You can follow me on Twitter at: &lt;a href="http://www.twitter.com/scottgu" target="_blank"&gt;www.twitter.com/scottgu&lt;/a&gt; (@scottgu is my twitter name)&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7234625" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category></item><item><title>VS 2010 and .NET 4.0 Beta 2</title><link>http://weblogs.asp.net/scottgu/archive/2009/10/19/vs-2010-and-net-4-0-beta-2.aspx</link><pubDate>Tue, 20 Oct 2009 05:01:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7233502</guid><dc:creator>ScottGu</dc:creator><slash:comments>152</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=7233502</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2009/10/19/vs-2010-and-net-4-0-beta-2.aspx#comments</comments><description>&lt;FONT size=2 face=arial&gt;
&lt;P&gt;I’m happy to announce that today we shipped the Beta 2 release of Visual Studio 2010 and .NET 4.0.&amp;nbsp; You can &lt;A href="http://go.microsoft.com/fwlink/?LinkID=151797" mce_href="http://go.microsoft.com/fwlink/?LinkID=151797"&gt;download&lt;/A&gt;&amp;nbsp;it now.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://weblogs.asp.net/blogs/scottgu/image_7D4408BA.png" mce_href="http://weblogs.asp.net/blogs/scottgu/image_7D4408BA.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://weblogs.asp.net/blogs/scottgu/image_thumb_7407CD79.png" width=771 height=611 mce_src="http://weblogs.asp.net/blogs/scottgu/image_thumb_7407CD79.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;U&gt;VS 2010 and .NET Improvements&lt;/U&gt;&lt;/H3&gt;
&lt;P&gt;VS 2010 and .NET 4 bring a huge number of improvements and additions. They include big advances for ASP.NET web development, WPF and WinForms client development, SharePoint development, Silverlight development, data development, parallel computing development, and cloud computing development.&amp;nbsp; VS 2010 also delivers a ton of improvements in the core IDE, code editors, programming languages, and enterprise design, architect, and testing tools.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;TFS 2010 is now easy to install (only 20 minutes to setup source control, bug and work item tracking, build automation, and continuous integration), can be installed on both servers as well as client OS and domain controller machines, and is now included with all MSDN subscriptions of Visual Studio.&lt;/P&gt;
&lt;P&gt;I’ve started a &lt;A href="http://weblogs.asp.net/scottgu/archive/2009/08/25/vs-2010-and-net-4-series.aspx" target=_blank mce_href="http://weblogs.asp.net/scottgu/archive/2009/08/25/vs-2010-and-net-4-series.aspx"&gt;series of blog posts&lt;/A&gt; that will cover some of the improvements and feature additions in VS 2010 and .NET 4.&amp;nbsp; Stay tuned to my blog as I post many, many more posts over the coming months.&lt;/P&gt;
&lt;H3&gt;&lt;U&gt;VS 2010 Product Line SKU Simplifications&lt;/U&gt;&lt;/H3&gt;
&lt;P&gt;With VS 2010 we are simplifying the product lineup and pricing options of Visual Studio, as well as adding new benefits for MSDN subscribers.&amp;nbsp; With VS 2010 we will now ship a simpler set of SKU options:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Visual Studio Express:&lt;/STRONG&gt; Free Express SKUs for Web, VB, C#, and C++ &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;Visual Studio 2010 Professional with MSDN&lt;/B&gt;: Professional development tools as you are used to today with the addition of source control integration, bug tracking, build automation, and more. It also includes 50 hours/month of Azure cloud computing. &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;Visual Studio 2010 Premium with MSDN&lt;/B&gt;: Premium has everything in Professional plus advanced development tools (including richer profiling and debugging, code coverage, code analysis and testing prioritization), advanced database support, UI testing, and more.&amp;nbsp; Rather than buying multiple “Team” SKUs like you would with VS 2008, you can now get this combination of features in one box with VS 2010. It also includes 100 hours/month of Azure cloud computing. &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;Visual Studio 2010 Ultimate with MSDN&lt;/B&gt;: Ultimate has everything in Premium plus additional advanced features for developers, testers, and architects including features like Intellitrace (formerly Historical Debugging), the new architecture tools (UML, discovery), test lab management, etc.&amp;nbsp; It also includes 250 hours/month of Azure cloud computing. &lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;&lt;U&gt;Side by Side Support with VS 2008&lt;/U&gt;&lt;/H3&gt;
&lt;P&gt;VS 2010 and .NET 4.0 can be installed side-by-side on the same machine as VS 2008 and .NET 3.5.&amp;nbsp; You can install the Beta 2 version on a machine and it will not impact your existing VS 2008 / .NET 3.5 development.&lt;/P&gt;
&lt;H3&gt;&lt;U&gt;Go-Live License Available&lt;/U&gt;&lt;/H3&gt;
&lt;P&gt;.NET 4 and VS 2010 Beta 2 include a “go-live” license which means you can start using the products for production projects.&amp;nbsp; &lt;/P&gt;
&lt;H3&gt;&lt;U&gt;Summary&lt;/U&gt;&lt;/H3&gt;
&lt;P&gt;VS 2010 and .NET 4.0 deliver some significant new capabilities and improvements. The goal with today’s Beta 2 release was to work hard on performance, stability, and the integration of the overall feature set.&amp;nbsp; The team’s focus is now transitioning to getting your feedback on the product and preparing for the final release candidate (RC) milestone.&amp;nbsp; Please send us any feedback you have on the Beta 2 release.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hope this helps,&lt;/P&gt;
&lt;P&gt;Scott&lt;/P&gt;
&lt;P&gt;P.S. In addition to blogging, I have recently been using Twitter to-do quick posts and share links. You can follow me on Twitter at: &lt;A href="http://www.twitter.com/scottgu" mce_href="http://www.twitter.com/scottgu"&gt;www.twitter.com/scottgu&lt;/A&gt; (@scottgu is my twitter name)&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7233502" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category></item><item><title>Announcing Microsoft Ajax Library (Preview 6) and the Microsoft Ajax Minifier</title><link>http://weblogs.asp.net/scottgu/archive/2009/10/15/announcing-microsoft-ajax-library-preview-6-and-the-microsoft-ajax-minifier.aspx</link><pubDate>Fri, 16 Oct 2009 06:48:09 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7231166</guid><dc:creator>ScottGu</dc:creator><slash:comments>79</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=7231166</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2009/10/15/announcing-microsoft-ajax-library-preview-6-and-the-microsoft-ajax-minifier.aspx#comments</comments><description>&lt;font size="2" face="arial"&gt;   &lt;p&gt;The ASP.NET team today &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34488" target="_blank"&gt;released a significant new update&lt;/a&gt; of the Microsoft Ajax Library (Preview 6).&amp;#160; This update includes a bunch of new capabilities and improvements to our client-side AJAX library, and can be used with any version of ASP.NET (including ASP.NET 2.0, 3.5 and 4.0), and can be used in both ASP.NET Web Forms and ASP.NET MVC projects.&amp;#160; Today’s release includes the following feature improvements:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;em&gt;Better Imperative Syntax&lt;/em&gt;: A new, simplified, code syntax for creating client controls. &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;&lt;em&gt;Client Script Loader&lt;/em&gt;: A new client-side script loader that can dynamically load all of the JavaScript files required by a client control or library automatically, and executes the scripts in the right order. &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;&lt;em&gt;Better jQuery Integration&lt;/em&gt;: All Microsoft Ajax controls are now automatically exposed as jQuery plug-ins. &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;In addition to the client library improvements, we also today released a new (free) Microsoft AJAX Minifier tool.&amp;#160; This tool allows you to substantially improve the performance of your websites by reducing the size of your JavaScript files.&amp;#160; It can be run both as a command-line tool, and also ships as a Visual Studio MSBuild task that you can integrate into your VS projects to automatically minify your JavaScript files whenever you do a build.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Using the Microsoft AJAX Library (Preview 6)&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;There are two ways that you can start building applications with the Microsoft Ajax (Preview 6) release:&lt;/p&gt;    &lt;p&gt;1) You can visit the ASP.NET CodePlex website and &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34488" target="_blank"&gt;download the Preview 6 release&lt;/a&gt; (which also includes a large set of samples with it).&lt;/p&gt;    &lt;p&gt;2) Alternatively, you can access the Microsoft Ajax Library scripts directly from the Microsoft Ajax Content Delivery Network (CDN).&amp;#160; You can do this by just adding the following script tag to either an .aspx or .html page:&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;script src=”&lt;a href="http://ajax.microsoft.com/ajax/beta/0910/Start.js"&gt;http://ajax.microsoft.com/ajax/beta/0910/Start.js&lt;/a&gt;” type=”text/javascript”&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;    &lt;p&gt;You read &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/09/15/announcing-the-microsoft-ajax-cdn.aspx" target="_blank"&gt;my blog post&lt;/a&gt; from last month to learn more about the Microsoft AJAX CDN (or visit &lt;a href="http://www.asp.net/ajax/cdn"&gt;http://www.asp.net/ajax/cdn&lt;/a&gt;).&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Better Imperative Code Syntax with this release&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;The ASP.NET team heard feedback from the community that many developers preferred an imperative code approach (as opposed to a declarative syntax approach) when creating client controls. With today’s release we are introducing a simple imperative code syntax for creating client controls and binding them to HTML elements within a page. This syntax is fully supported by the JavaScript Intellisense in both VS 2008 and VS 2010.&lt;/p&gt;    &lt;p&gt;Below is an example of the imperative code you can now write to programmatically create a client-side DataView control that displays data from a WCF web service:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_4DEF31CE.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_6D31D8A1.png" width="579" height="163" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;The above code instantiates a new Microsoft Ajax DataView control and attaches the control to an HTML &amp;lt;div&amp;gt; element with the id “imageView”. The URL of the WCF service is specified with the “dataProvider” property, and the name of the method to call on the service is specified with the “fetchOperation” property.&amp;#160; The “autoFetch” property indicates that the control should automatically bind against the WCF service when it loads.&lt;/p&gt;    &lt;p&gt;Below is what the “imageView” HTML &amp;lt;div&amp;gt; element that the DataView control is attached to looks like.&amp;#160; This &amp;lt;div&amp;gt; contains a template that will be used for displaying each data item retrieved from the service (note: templates were a feature we introduced with an earlier Microsoft Ajax Preview release):&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_4C3E65FA.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_403C75C6.png" width="501" height="143" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;The {{ Uri }} and {{ Name }} expressions within the template above are replaced with the Name and Uri properties of the images retrieved from the service.&amp;#160; The attribute namespace prefix “sys:src” on the &amp;lt;img&amp;gt; element is used to prevent browsers from attempting to load an image at the actual path &lt;i&gt;{Uri}&lt;/i&gt;. The value of the sys:src attribute gets plugged into the src attribute when the template is loaded.&lt;/p&gt;    &lt;p&gt;When the page is rendered in the browser, we then get a simple photo gallery like below:&lt;/p&gt;   &lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6AA8A6E3.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_5C89B7E6.png" width="628" height="531" /&gt;&lt;/a&gt;     &lt;p&gt;&lt;/p&gt;    &lt;p&gt;Alternatively, if you don’t want to use a declarative binding syntax within a template, you can modify the template to be pure HTML markup like below (no more {{ }} expressions):&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_64BDDD7D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_63E57793.png" width="477" height="151" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;You can then wire-up and specify a itemRendered event handler when you create the DataView control like below:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_23432B24.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_707324AF.png" width="584" height="179" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;You can then implement the “imageRendered” event handler using the JavaScript below, and use the Sys.bind() method to programmatically assign values to the &amp;lt;img&amp;gt; and &amp;lt;span&amp;gt; tags within the template:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_01775293.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_555A55A1.png" width="747" height="106" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;This allows you to maintain your template as pure HTML markup, while still displaying the same photo gallery experience at runtime.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Using the Microsoft Ajax Client Script Loader&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;The Microsoft AJAX Client-side library is now split up across multiple JavaScript files – allowing you to download and use only those script files that you actually need (reducing download sizes).&amp;#160; &lt;/p&gt;    &lt;p&gt;Manually adding all of the script files required to use Ajax controls can be tedious though (and error prone). To make it easier to use both client controls as well individual client library components, we are introducing a new client script loader with today’s release. This client script loader helps you automatically load all of the scripts required by a control and execute the scripts in the right order when a page loads.&lt;/p&gt;    &lt;p&gt;For example, the following page uses the client script loader to load all of the scripts required by the “watermark” control, and then wires up the watermark control to an &amp;lt;input&amp;gt; textbox:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_7FC686BE.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_2C6F4098.png" width="925" height="598" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Notice the call to the Sys.require() method above. When you call Sys.require(), you supply the name of a client component (or an array of client components) that you want to load. The sys.require() client loader then automatically downloads all of the required script files in parallel (allowing your scripts to load faster and also allow you to avoid blocking the page from rendering).&amp;#160; When all of the scripts required by the components requested are loaded, the Sys.onReady() method is called and the watermark is created.&lt;/p&gt;    &lt;p&gt;Above we are binding the “watermark” control to a &amp;lt;input&amp;gt; textbox with an id of “name”.&amp;#160; At runtime the watermark control will cause the textbox to have a watermark (that automatically disappears when a user sets the focus on the textbox and starts typing):&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/clip_image006_0B7BCDF1.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://weblogs.asp.net/blogs/scottgu/clip_image006_thumb_518C8B04.jpg" width="381" height="236" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;The client script loader supports many advanced features including automatic script combining and lazy loading. It can also be smart about downloading either debug or release versions of libraries. It also allows you to register your own libraries and have them automatically be loaded as well using the Sys.require() syntax.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Using Microsoft Ajax Library Controls with jQuery&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Microsoft ships jQuery as a standard part of the ASP.NET MVC framework, and also adds it by default to new ASP.NET Web Forms projects created with Visual Studio 2010.&lt;/p&gt;    &lt;p&gt;With today’s preview we are making it easy to integrate jQuery and Microsoft Ajax controls, and enable developers using jQuery to use the Microsoft Ajax controls with a familiar jQuery plug-in API syntax.&amp;#160; Specifically, we are now exposing all Microsoft Ajax controls as jQuery plug-ins automatically. In other words, when you add jQuery to a page, you can use Microsoft Ajax controls just like jQuery plug-ins.&lt;/p&gt;    &lt;p&gt;For example, the following script demonstrates how you can use jQuery to create a DataView that displays data from a WCF service (using a jQuery plugin like code syntax):&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_57672E9D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_3A7E09C8.png" width="898" height="243" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Notice above that I’m loading jQuery by calling the Sys.require() client-side loader API. You can load jQuery using the new client script loader, or alternatively you can just include the jQuery library in the page using a standard &amp;lt;script&amp;gt; tag. &lt;/p&gt;    &lt;p&gt;Once jQuery is added to the page, Microsoft Ajax Library controls are automatically exposed as jQuery plug-ins.&amp;#160; This means you can create and attach Microsoft Ajax controls using a standard jQuery plugin syntax (like above), and fully integrate with the jQuery selector syntax.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Reducing the Size of JavaScript Files with the Microsoft Ajax Minifier&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;There are two common ways that people use to reduce the download size of a JavaScript file: compression and minification. &lt;/p&gt;    &lt;p&gt;When you host your website on a Windows Server using IIS 7.0, you can configure IIS to automatically compress your JavaScript files using GZIP compression – which can provide a significant improvement on performance and the download size of files. However, you can get additional performance benefits by both compressing and &lt;i&gt;minifying&lt;/i&gt; your JavaScript files. Steve Sounders describes these additional benefits in his excellent book &lt;a href="https://www.amazon.com/dp/0596529309?tag=scoblo04-20&amp;amp;camp=0&amp;amp;creative=0&amp;amp;linkCode=as4&amp;amp;creativeASIN=0596529309&amp;amp;adid=081D052PBM7GF6D8JK4F&amp;amp;" target="_blank"&gt;High Performance Web Sites&lt;/a&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;.&lt;/p&gt;    &lt;p&gt;In addition to releasing Microsoft Ajax Library (Preview 6), we are today also releasing a new (free) &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34488" target="_blank"&gt;Microsoft Ajax Minifier utility&lt;/a&gt; that can help reduce the size of your JavaScript files considerably.&amp;#160; It was created by Ron Logon who works on the MSN team. You can &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34488" target="_blank"&gt;download the Microsoft Ajax Minifier&lt;/a&gt; from the ASP.NET CodePlex website for free.&amp;#160; &lt;/p&gt;    &lt;p&gt;The following screenshot demonstrates the results of minifying the standard jQuery library using various minification tools such as Douglas Crockford’s JSMin, Dean Edward’s Packer, and the YUI Compressor. The bottom two files were minified using the &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34488" target="_blank"&gt;Microsoft Ajax Minifier utility&lt;/a&gt;. Notice that the Microsoft Ajax Minifier has reduced jQuery from 125 KB to only 53 KB.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_359B560C.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_66BA90AC.png" width="590" height="163" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;The &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34488" target="_blank"&gt;Microsoft Ajax Minifier&lt;/a&gt; supports two levels of minification: normal and hypercrunched. When you use normal minification, the Microsoft Ajax Minifier removes all unnecessary whitespace, comments, curly braces, and semi-colons.&amp;#160; When you enable hypercrunching, the Microsoft Ajax Minifier becomes more aggressive in reducing the size of a JavaScript file, and it minifies local variable names and removes unreachable code.&lt;/p&gt;    &lt;p&gt;Here’s a sample of a JavaScript file:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1EF907C5.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_6C290150.png" width="565" height="174" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Here’s what the JavaScript file looks like after it has been minified with the Microsoft Ajax Minifier (with hypercrunching enabled):&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_5254CB21.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_5CA5EF81.png" width="645" height="60" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Notice that all unnecessary whitespace has been removed. Notice also that the function parameters firstValue and secondValue have been renamed to b and a.&lt;/p&gt;    &lt;p&gt;The &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34488" target="_blank"&gt;Microsoft Ajax Minifier download&lt;/a&gt; includes the following components:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;ajaxmin.exe – A command-line tool for minifying JavaScript files. &lt;/li&gt;      &lt;li&gt;ajaxmintask.dll – A MSBuild task for minifying JavaScript files in a Visual Studio project. &lt;/li&gt;      &lt;li&gt;ajaxmin.dll – A component that you can use in your C# or VB.NET applications to minify JavaScript files. &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;After you install the Microsoft Ajax Minifier, you can use the Microsoft Ajax Minifier command-line tool to minify a JavaScript file from a command-prompt.&amp;#160; &lt;/p&gt;    &lt;p&gt;You also have the option of adding the Microsoft Ajax Minifier as a custom MSBuild task to Visual Studio. Adding the Microsoft Ajax Minifier MSBuild task to your Visual Studio project file allows you to automatically minify all of the JavaScript files in your project whenever you perform a build, and enables you to perform minification in an automated way.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Today’s release of the Microsoft Ajax Library has several exciting new features for client-side developers. The new simplified imperative syntax should appeal to JavaScript developers. The client script loader makes it much easier to create client controls and optimize the download of files. And, the jQuery integration enables developers using jQuery to take advantage of the client controls, templating, and data access features of the Microsoft Ajax Library without changing their programming style.&lt;/p&gt;    &lt;p&gt;Finally, the new Microsoft Ajax Minifier enables you to significantly improve the performance of your Ajax applications by reducing the size of your JavaScript files. You can use the minifier from a command prompt or you can use the minifier when building a project in Visual Studio.&lt;/p&gt;    &lt;p&gt;Read &lt;a href="http://weblogs.asp.net/bleroy/archive/2009/10/15/entirely-unobtrusive-and-imperative-templates-with-microsoft-ajax-4-preview-6.aspx" target="_blank"&gt;Bertrand Le Roy’s Blog Post about Preview 6&lt;/a&gt; to learn even more about the release.&amp;#160; &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34488" target="_blank"&gt;Click here to download&lt;/a&gt; both the Microsoft Ajax Library (Preview 6) release and the new Microsoft Ajax Minifier release.&amp;#160; &lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt;    &lt;p&gt;P.S. In addition to blogging, I have recently been using Twitter to-do quick posts and share links. You can follow me on Twitter at: &lt;a href="http://www.twitter.com/scottgu" target="_blank"&gt;www.twitter.com/scottgu&lt;/a&gt; (@scottgu is my twitter name)&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7231166" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Atlas/default.aspx">Atlas</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category></item><item><title>URL Routing with ASP.NET 4 Web Forms (VS 2010 and .NET 4.0 Series)</title><link>http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx</link><pubDate>Tue, 13 Oct 2009 07:13:25 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7228505</guid><dc:creator>ScottGu</dc:creator><slash:comments>78</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=7228505</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx#comments</comments><description>&lt;font size="2" face="arial"&gt;   &lt;p&gt;&lt;em&gt;[In addition to blogging, I have recently been using Twitter to-do quick posts and share links. You can follow me on Twitter at: &lt;/em&gt;&lt;a href="http://www.twitter.com/scottgu" target="_blank"&gt;www.twitter.com/scottgu&lt;/a&gt;&lt;em&gt;&lt;/em&gt;&lt;em&gt; (@scottgu is my twitter name)]&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;This is the eighth in &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/08/25/vs-2010-and-net-4-series.aspx" target="_blank"&gt;a series of blog posts&lt;/a&gt; I’m doing on the upcoming VS 2010 and .NET 4 release.&amp;#160; Today’s post covers a cool new runtime feature in ASP.NET 4 – which is the ability to use URL routing with Web Forms based pages.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;What is URL Routing?&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;URL routing was a capability we first introduced with ASP.NET 3.5 SP1, and which is already used within ASP.NET MVC applications to expose clean, SEO-friendly “web 2.0” URLs.&amp;#160; URL routing lets you configure an application to accept request URLs that do not map to physical files. Instead, you can use routing to define URLs that are semantically meaningful to users and that can help with search-engine optimization (SEO).&lt;/p&gt;    &lt;p&gt;For example, the URL for a traditional page that displays product categories might look like below:&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.mysite.com/products.aspx?category=software"&gt;http://www.mysite.com/products.aspx?category=software&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;Using the URL routing engine in ASP.NET 4 you can now configure the application to accept the following URL instead to render the same information:&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.mysite.com/products/software"&gt;http://www.mysite.com/products/software&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;With ASP.NET 4.0, URLs like above can now be mapped to both ASP.NET MVC Controller classes, as well as ASP.NET Web Forms based pages.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Mapping URLs using ASP.NET MVC&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;The URL Routing engine introduced with ASP.NET 3.5 SP1 provides a powerful way to handle incoming URLs.&amp;#160; Typically you write code as part of application startup to register/map URLs that match a specific URL format to code handlers.&amp;#160; &lt;/p&gt;    &lt;p&gt;Below is an example of how you can use ASP.NET MVC today to map the &lt;em&gt;/products/software&lt;/em&gt; URL to a controller class called “Products” that has an action method named “Browse”:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step1_2C298E39.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="step1" border="0" alt="step1" src="http://weblogs.asp.net/blogs/scottgu/step1_thumb_5D48C8D9.png" width="721" height="249" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;The first “products-browse” parameter to the MapRoute() helper method above is a friendly name for the route.&amp;#160; The second &lt;em&gt;“products/{category}”&lt;/em&gt; parameter is the URL filter that matches the &lt;em&gt;/products/software&lt;/em&gt; URL – and which treats the second segment of the URL as a parameter value called “category”.&amp;#160; This parameter will then be passed to the ProductsController’s Browse() action method to process.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Mapping URLs using ASP.NET Web Forms&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;ASP.NET 4.0 now allows you to also use the URL Routing engine to map URLs to ASP.NET Web Forms pages as well as ASP.NET MVC Controllers.&amp;#160; &lt;/p&gt;    &lt;p&gt;Below is an example of how you can use the new &lt;em&gt;MapPageRoute()&lt;/em&gt; helper method in ASP.NET 4.0 to map the &lt;em&gt;/products/software&lt;/em&gt; URL to a “Products.aspx” page that lives immediately under the application root directory:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step2_5866151D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="step2" border="0" alt="step2" src="http://weblogs.asp.net/blogs/scottgu/step2_thumb_1A897DA1.png" width="531" height="268" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;The first two parameters to the &lt;em&gt;MapPageRoute() &lt;/em&gt;helper are the same as in &lt;em&gt;MapRoute().&lt;/em&gt; The first parameter provides a friendly name for the route, and the second specifies the URL format to match.&amp;#160; The third parameter, though, points to a Products.aspx page to handle the URL instead of a controller class.&amp;#160; You can optionally specify additional parameters to &lt;em&gt;MapPageRoute() &lt;/em&gt;that take advantage of features like “route constraints” and provide “default values for parameters” just like you can with ASP.NET MVC based route registrations.&lt;/p&gt;    &lt;p&gt;Within the Products.aspx page you can then write code like below that uses the new &lt;em&gt;Page.RouteData&lt;/em&gt; property in ASP.NET 4.0 to retrieve the “category” parameter value mapped using the &lt;em&gt;/products/{category}&lt;/em&gt; URL filter, and then databind the category products to display them:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step3_00B54772.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="step3" border="0" alt="step3" src="http://weblogs.asp.net/blogs/scottgu/step3_thumb_06FC1E00.png" width="544" height="191" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;In addition to programmatically accessing incoming route parameters using code like above, you can also take advantage of the new declarative &amp;lt;asp:routeparameter&amp;gt; control with any ASP.NET DataSource control to declaratively bind a value from a route as well.&amp;#160; For example, below we are using a &amp;lt;asp:routeparameter&amp;gt; statement to bind the select statement’s @category parameter from the &lt;em&gt;/products/{category}&lt;/em&gt; parameter in the URL route:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step4_3F3A9518.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="step4" border="0" alt="step4" src="http://weblogs.asp.net/blogs/scottgu/step4_thumb_5E7D3BEB.png" width="565" height="159" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Retrieving URLs within an ASP.NET Web Form&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;The URL routing engine in ASP.NET can be used to both map incoming URLs to code handlers, as well as be used to programmatically generate outgoing URLs using the same mapping registration logic.&amp;#160; &lt;/p&gt;    &lt;p&gt;For example, above when we mapped the &lt;em&gt;/products/{category}&lt;/em&gt; URL we gave it a “friendly name” of “products-browse”.&amp;#160; This allows us to now also use the new &lt;em&gt;Page.GetRouteUrl()&lt;/em&gt; helper method to lookup the route within the URL routing system, optionally specify parameters to it, and then retrieve an actual URL that it maps back to.&amp;#160; For example, the below code would retrieve a URL value of “/products/software”: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step6_1D6EBC87.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="step6" border="0" alt="step6" src="http://weblogs.asp.net/blogs/scottgu/step6_thumb_15E34D1A.png" width="630" height="63" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;You can access the above helper method within either your code-behind file or within your .aspx markup.&amp;#160; &lt;/p&gt;    &lt;p&gt;There is also now a &lt;em&gt;Response.RedirectToRoute()&lt;/em&gt; set of methods that you can use to redirect users to a route (regardless of whether it is a MVC or Web Forms handled one) and optionally pass parameters to it.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Handling PostBack Scenarios&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;URL Routing with ASP.NET 4.0 fully supports postback scenarios.&amp;#160; The &amp;lt;form runat=”server”&amp;gt; control will automatically emit the same URL that caused the page to be rendered.&amp;#160; For example, if you access a page with a &lt;em&gt;/products/software&lt;/em&gt; URL then any server-side &amp;lt;form runat=”server”&amp;gt; control within it would render out a &amp;lt;form action=”/products/software”&amp;gt; HTML element back to the client – which means that any postback scenarios that happen on the page will preserve the original URL.&amp;#160; &lt;/p&gt;    &lt;p&gt;This makes supporting clean, SEO friendly, URLs easy with Web Forms and postback scenarios – and avoids some of the tricks people need to use today when using URL rewriting modules to achieve similar effects.&amp;#160; &lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;ASP.NET 4.0 makes it easy to implement clean, SEO friendly, URLs using both ASP.NET MVC and now ASP.NET Web Forms (you can also have applications that mix the two).&amp;#160; &lt;/p&gt;    &lt;p&gt;The URL routing engine makes it easy to register URLs of any shape or format and map them to any handler you want.&amp;#160; Because the URL routing engine can be used for both mapping incoming URLs as well as generating outgoing URLs, you can at a later point change the URL mappings&amp;#160; and not have to modify any page or controller specific code to reflect them – which makes building SEO optimized applications much easier.&lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7228505" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category></item><item><title>Announcing the WebsiteSpark Program</title><link>http://weblogs.asp.net/scottgu/archive/2009/09/24/announcing-the-websitespark-program.aspx</link><pubDate>Thu, 24 Sep 2009 09:45:06 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7215401</guid><dc:creator>ScottGu</dc:creator><slash:comments>142</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=7215401</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2009/09/24/announcing-the-websitespark-program.aspx#comments</comments><description>&lt;font size="2" face="arial"&gt;   &lt;p&gt;I’m excited to announce a new program – &lt;a href="http://www.microsoft.com/web/websitespark/" target="_blank"&gt;WebsiteSpark&lt;/a&gt; – that Microsoft is launching today.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.microsoft.com/web/websitespark/" target="_blank"&gt;WebsiteSpark&lt;/a&gt; is designed for independent web developers and web development companies that build web applications and web sites on behalf of others.&amp;#160; It enables you to get software, support and business resources from Microsoft at no cost for three years, and enables you to expand your business and build great web solutions using ASP.NET, Silverlight, SharePoint and PHP, and the &lt;a href="http://www.microsoft.com/web/gallery/default.aspx" target="_blank"&gt;open source applications&lt;/a&gt; built on top of them.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;What does the program provide?&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;&lt;a href="http://www.microsoft.com/web/websitespark/" target="_blank"&gt;WebSiteSpark&lt;/a&gt; provides software licenses that you can use for three years at no cost.&amp;#160; Once enrolled, you can download and immediately use the following software from Microsoft:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;3 licenses of Visual Studio 2008 Professional Edition &lt;/li&gt;      &lt;li&gt;1 license of Expression Studio 3 (which includes Expression Blend, Sketchflow, and Web) &lt;/li&gt;      &lt;li&gt;2 licenses of Expression Web 3 &lt;/li&gt;      &lt;li&gt;4 processor licenses of Windows Web Server 2008 R2 &lt;/li&gt;      &lt;li&gt;4 processor licenses of SQL Server 2008 Web Edition &lt;/li&gt;      &lt;li&gt;DotNetPanel control panel (enabling easy remote/hosted management of your servers) &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;The Windows Server and SQL Server licenses can be used for both development &lt;em&gt;and&lt;/em&gt; production deployment.&amp;#160; You can either self-host the servers on your own, or use the licenses with a hoster.&amp;#160; &lt;a href="http://www.microsoft.com/web/websitespark/" target="_blank"&gt;WebsiteSpark&lt;/a&gt; makes it easy to find hosters who are also enrolled in the program, and who can use your licenses to provide you with either dedicated or virtual dedicated servers to host your sites on.&lt;/p&gt;    &lt;p&gt;In addition to software, &lt;a href="http://www.microsoft.com/web/websitespark/" target="_blank"&gt;WebsiteSpark&lt;/a&gt; provides partner opportunities to grow and build your business (including customer referrals through our partner programs).&amp;#160; It also includes product support (including 2 professional support incidents) and free online training for the products.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Who can join the program?&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;&lt;a href="http://www.microsoft.com/web/websitespark/" target="_blank"&gt;WebSiteSpark&lt;/a&gt; is available to independent web developers and small web development companies.&amp;#160; The only two requirements to join the program are:&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Your company builds web sites and web application on behalf of others. &lt;/li&gt;      &lt;li&gt;Your company currently has less than 10 employees. &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;If you meet these requirements you can visit the &lt;a href="http://www.microsoft.com/web/websitespark/" target="_blank"&gt;WebsiteSpark website&lt;/a&gt; and sign-up today.&amp;#160; &lt;/p&gt;    &lt;p&gt;As part of the enrollment process you can pick either a network referral partner (for example: a hoster or an existing Microsoft partner), or enter a referral code that you have received at an event or from a Microsoft employee.&amp;#160; If you send mail to &lt;a href="mailto:webspark@microsoft.com"&gt;webspark@microsoft.com&lt;/a&gt; you can get a referral code quickly.&amp;#160; You can then use that code to enroll in the program on the &lt;a href="http://www.microsoft.com/web/websitespark/"&gt;WebsiteSpark website&lt;/a&gt;.&amp;#160; Once enrolled you can immediately download and use the software, as well as begin to participate in the network/partner opportunities.&lt;/p&gt;    &lt;p&gt;If you have any problems enrolling, you can also send me mail (&lt;a href="mailto:scottgu@microsoft.com"&gt;scottgu@microsoft.com&lt;/a&gt;) and I can connect you with someone who can help.&amp;#160; &lt;/p&gt;    &lt;h3&gt;&lt;u&gt;What happens after the 3 years?&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;WebsiteSpark is a 3 year program.&amp;#160; There is &lt;u&gt;no obligation&lt;/u&gt; to continue to use any of the software after the three years is over, and there are no costs for the three years other than a $100 program fee at the end of the three years.&lt;/p&gt;    &lt;p&gt;At the end of the three years, WebsiteSpark participants can optionally choose to purchase all of the software in the WebsiteSpark program via a $999/year package.&amp;#160; This includes 3 copies of VS Professional, 1 copy of Expression Studio (including Blend and Sketchflow), 2 copies of Expression Web, and 4 processor licenses of Windows Web Server 2008 and 4 processor licenses of SQL Server Web edition that can be used for production deployment.&lt;/p&gt;    &lt;p&gt;Alternatively, if you want to purchase only the production server licenses, you can take advantage of a $199/year offering that includes both 1 Windows Web Server processor license &lt;em&gt;and&lt;/em&gt; 1 SQL Server Web edition processor license.&amp;#160; You can buy the quantity you need of this package at $199/year each.&amp;#160; &lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;The &lt;a href="http://www.microsoft.com/web/websitespark/" target="_blank"&gt;WebsiteSpark program&lt;/a&gt; joins the other two successful “Spark” programs we’ve previously launched - &lt;em&gt;&lt;a href="http://www.microsoft.com/bizspark/" target="_blank"&gt;BizSpark&lt;/a&gt;&lt;/em&gt; for startups, and &lt;a href="https://www.dreamspark.com/default.aspx" target="_blank"&gt;&lt;em&gt;DreamSpark&lt;/em&gt;&lt;/a&gt; for students.&lt;/p&gt;    &lt;p&gt;Coming at a time when the current economic climate is still tough, &lt;a href="http://www.microsoft.com/web/websitespark/" target="_blank"&gt;WebsiteSpark&lt;/a&gt; will help support developers and companies by providing the business resources, training, and software necessary for companies to get started and grow successful businesses on the Microsoft Web Platform.&lt;/p&gt;    &lt;p&gt;Visit &lt;a href="http://www.microsoft.com/web" target="_blank"&gt;www.microsoft.com/web&lt;/a&gt; to learn more about the Microsoft Web Platform, as well as download and install the new &lt;a href="http://www.microsoft.com/web/downloads/platform.aspx" target="_blank"&gt;Microsoft Web Platform Installer V2&lt;/a&gt; we released today – which makes it really easy to quickly provision web servers and web development machines.&amp;#160; You can then browse and download and use open source web applications from the &lt;a href="http://www.microsoft.com/web/gallery/default.aspx" target="_blank"&gt;Windows Web Application Gallery&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt;    &lt;p&gt;P.S. In addition to blogging, I have been using Twitter more recently to-do quick posts and share links.&amp;#160; You can follow me on Twitter at: &lt;a href="http://www.twitter.com/scottgu"&gt;http://www.twitter.com/scottgu&lt;/a&gt; (@scottgu is my twitter name)&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7215401" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Tip/Trick: Increase your VS screen real estate by disabling HTML Navigation Bar</title><link>http://weblogs.asp.net/scottgu/archive/2009/09/21/tip-trick-increase-your-vs-screen-real-estate-by-disabling-html-navigation-bar.aspx</link><pubDate>Mon, 21 Sep 2009 07:50:53 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7212926</guid><dc:creator>ScottGu</dc:creator><slash:comments>42</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=7212926</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2009/09/21/tip-trick-increase-your-vs-screen-real-estate-by-disabling-html-navigation-bar.aspx#comments</comments><description>&lt;font size="2" face="arial"&gt;   &lt;p&gt;Below is a tip/trick I twittered via my &lt;a href="http://twitter.com/scottgu" target="_blank"&gt;Twitter account&lt;/a&gt; earlier today.&amp;#160; A number of people seemed interested in – so I thought i'd blog it here too.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;HTML Navigation Bar in VS 2008&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;By default, when you are in HTML source-editing mode with VS 2008 and Visual Web Developer 2008 Express edition there is a set of drop-downs that are rendered immediately above the HTML text editor view:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step1_12558954.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step1" border="0" alt="step1" src="http://weblogs.asp.net/blogs/scottgu/step1_thumb_70F5E3B7.png" width="788" height="487" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;This set of drop-downs is called the &amp;quot;Navigation Bar&amp;quot;, and in the VS 2008 HTML editor they allow you to navigate between functions and methods defined within the HTML.&amp;#160; These include both JavaScript client-side functions defined inline within the .aspx/.html file, and server-side methods defined in-line within the .aspx file when in single-file mode (meaning no code-behind file).&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Disabling the HTML Navigation Bar and Getting back some pixels&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Personally I don't find the HTML navigation bar super useful – since I tend not to define JavaScript functions inline within the HTML (instead I use more unobtrusive JavaScript techniques and put my JavaScript code in separate files), and I usually use code-behind instead of single-file event handlers for server-side code.&lt;/p&gt;    &lt;p&gt;If you are like me and also don't find yourself using that particular navigation toolbar much, you'll be happy to know that you can turn it off in VS 2008 and get back about 40-50 pixels that can instead be applied toward your HTML source code view.&amp;#160; To-do this, just select the Tools-&amp;gt;Options menu item within VS, navigate to the &amp;quot;Text Editor-&amp;gt;HTML&amp;quot; node and uncheck the &amp;quot;Navigation Bar&amp;quot; checkbox option:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step2_56B57A93.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step2" border="0" alt="step2" src="http://weblogs.asp.net/blogs/scottgu/step2_thumb_407F5F41.png" width="762" height="446" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Once you do this and press the &amp;quot;ok&amp;quot; button, you'll find that the drop-downs are gone and you have more screen real estate:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step3_2D5E3295.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step3" border="0" alt="step3" src="http://weblogs.asp.net/blogs/scottgu/step3_thumb_451569FB.png" width="788" height="487" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;(Note: if there is no immediate change after you hit ok, try closing and then re-opening the HTML/ASP.NET file)&lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt;    &lt;p&gt;P.S. By default with VS 2010 (starting with Beta2) we are hiding the navigation bar when in HTML mode with the standard web profile – you can then turn it back on via Tools-&amp;gt;Options if you find it useful.&amp;#160; VS 2010 also has a new optional &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/09/02/code-optimized-web-development-profile-vs-2010-and-net-4-0-series.aspx" target="_blank"&gt;&amp;quot;code optimized&amp;quot; web profile&lt;/a&gt; as well that turns off all toolbars, dropdown and HTML designers.&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7212926" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category></item><item><title>Announcing the Microsoft AJAX CDN</title><link>http://weblogs.asp.net/scottgu/archive/2009/09/15/announcing-the-microsoft-ajax-cdn.aspx</link><pubDate>Wed, 16 Sep 2009 06:46:17 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7207601</guid><dc:creator>ScottGu</dc:creator><slash:comments>155</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=7207601</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2009/09/15/announcing-the-microsoft-ajax-cdn.aspx#comments</comments><description>&lt;font size="2" face="arial"&gt;   &lt;p&gt;Earlier today the ASP.NET team launched a new Microsoft Ajax CDN (Content Delivery Network) service that provides caching support for AJAX libraries (including jQuery and ASP.NET AJAX).&amp;#160; The service is available for free, does not require any registration, and can be used for both commercial and non-commercial purposes.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;What does a CDN provide?&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Content delivery networks (CDNs) are composed of &amp;quot;edge cache&amp;quot; servers that are strategically placed around the world at key Internet network points.&amp;#160; These &amp;quot;edge cache&amp;quot; servers can be used to cache and deliver all types of content – including images, videos, CSS and JavaScript files.&lt;/p&gt;    &lt;p&gt;Using a CDN can significantly improve a website's end-user performance, since it enables browsers to more quickly retrieve and download content.&amp;#160; For example, instead of having a browser request for an image traverse all the way across the Internet to your web server to download, a CDN can instead serve the request directly from a nearby &amp;quot;edge cache&amp;quot; server that might only be a single network hop away from your customer (making it return much faster – which makes your pages load quicker).&amp;#160; &lt;/p&gt;    &lt;h3&gt;&lt;u&gt;What does the Microsoft AJAX CDN provide?&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;The Microsoft AJAX CDN makes it really easy to add the jQuery and ASP.NET AJAX script libraries to your web sites, and have them be automatically served from one of our thousands of geo-located edge-cache servers around the world.&amp;#160; &lt;/p&gt;    &lt;p&gt;For example, if you want to use jQuery from the Microsoft AJAX CDN then you can simply add a standard script tag to your page using the URL below:&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt; &lt;span style="color: red"&gt;src&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;When the browser requests the script file it will be automatically served by the CDN &amp;quot;edge cache&amp;quot; server that is closest to the end-user.&amp;#160; This means:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;The request will be processed much faster than if it had to hit your web-server (making the end-user's page load much faster) &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;You don't have to pay for the bandwidth of this file – since the file comes from our server we pay the bandwidth cost (saving you money) &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;The script can be easily cached across multiple web-sites – which means it might not even need to be downloaded if the user has already hit a web-site that requested the file (and as such has it already in the browser's cache).&amp;#160; &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;You can get a full listing of the JavaScript libraries (and associated URLs) we already have loaded in our CDN cache here: &lt;a href="http://www.asp.net/ajax/cdn" target="_blank"&gt;www.asp.net/ajax/cdn&lt;/a&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;We'll update the available libraries in the CDN as we ship new versions of ASP.NET AJAX, and continue to update it to include all of the JavaScript files we ship with ASP.NET and Visual Studio (including jQuery, the jQuery Validation plugin, and additional libraries we ship in the future).&amp;#160; &lt;/p&gt;    &lt;p&gt;The CDN service is free and available for anyone in the community to use for both commercial and non-commercial purposes.&amp;#160; You do not need to register to take advantage of it.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Using the Microsoft AJAX CDN with the ASP.NET 4.0 ScriptManager&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;In addition to allowing you to reference script files directly using a &amp;lt;script&amp;gt; element, ASP.NET 4.0 will make it easy to use the CDN from ASP.NET Web Forms applications that use the &amp;lt;asp:scriptmanager/&amp;gt; server control.&amp;#160; &lt;/p&gt;    &lt;p&gt;The ASP.NET 4.0 &amp;lt;asp:ScriptManager&amp;gt; control includes a new property named EnableCdn. When you assign the value &lt;b&gt;true&lt;/b&gt; to this property, your application will use the Microsoft CDN to request JavaScript files automatically:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/scriptmanager_2204295B.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="scriptmanager" border="0" alt="scriptmanager" src="http://weblogs.asp.net/blogs/scottgu/scriptmanager_thumb_76535F5E.png" width="240" height="118" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;When you enable the CDN with the ScriptManager, your application will retrieve all JavaScript files that it normally retrieves from the System.Web.dll or System.Web.Extensions.dll assemblies from the CDN instead.&amp;#160; This includes both the JavaScript files within ASP.NET AJAX, as well as the built-in Web Forms JavaScript files (for example: the WebUIValidation.js file for client-side validation, and the JavaScript files for controls like TreeView, Menu, etc).&lt;/p&gt;    &lt;p&gt;This provides a nice end-user performance improvement, and means that users accessing your ASP.NET website won’t need to re-download these files if they have visited another ASP.NET website that uses the CDN.&lt;/p&gt;    &lt;h3&gt;Using ASP.NET AJAX Preview 5 from the CDN&lt;/h3&gt;    &lt;p&gt;In addition to launching the AJAX CDN site, the ASP.NET team has also recently released ASP.NET AJAX Preview 5. You can download ASP.NET AJAX Preview 5 (with sample code) from CodePlex: &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=32770" target="_blank"&gt;http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=32770&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;You can also now use the ASP.NET AJAX libraries simply by adding the following script tags that point at the CDN:&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;&lt;font color="#000000"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt; &lt;span style="color: red"&gt;src&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://ajax.microsoft.com/ajax/beta/0909/MicrosoftAjax.js&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt; &lt;span style="color: red"&gt;src&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://ajax.microsoft.com/ajax/beta/0909/MicrosoftAjaxTemplates.js&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;These script tags reference the beta version of the September 2009 release of the ASP.NET AJAX library (the /0909/ part of the URL represents the year and month that the version of ASP.NET AJAX was released).&amp;#160; &lt;/p&gt;    &lt;p&gt;After you add script tags that reference the ASP.NET AJAX library, you can start using the library in your page. For example, the following code attaches a client DataView control that represents an array of photos to a DIV element in the body of the page.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/data_67A8B379.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="data" border="0" alt="data" src="http://weblogs.asp.net/blogs/scottgu/data_thumb_34D8AD05.png" width="576" height="336" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;The DIV element – with an id of &amp;quot;photos&amp;quot; – contains a template for formatting each photo in the array of photos. Here’s how the photos element is declared:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/template_541B53D8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="template" border="0" alt="template" src="http://weblogs.asp.net/blogs/scottgu/template_thumb_658BB4B0.png" width="386" height="124" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;When the DataView is rendered, the contents of the photos DIV element is rendered for each photo in the array of photos. The following photos are displayed:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/photos_0BED97FC.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="photos" border="0" alt="photos" src="http://weblogs.asp.net/blogs/scottgu/photos_thumb_559C6FEC.png" width="522" height="636" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Because ASP.NET AJAX is a pure JavaScript library, the code above works perfectly well in an ASP.NET Web Forms, ASP.NET MVC, HTML, or even with classic Active Server Pages. The code also works with all modern browsers.&lt;/p&gt;    &lt;p&gt;You can learn more about ASP.NET AJAX Preview 5 by downloading the sample code from the CodePlex project: &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=32770" target="_blank"&gt;http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=32770&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Below are several blog posts that delve into the features of ASP.NET AJAX Preview 5 in more depth:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://weblogs.asp.net/infinitiesloop/archive/2009/09/10/microsoft-ajax-4-preview-5-the-dataview-control.aspx" target="_blank"&gt;Microsoft Ajax 4 Preview 5: The DataView Control&lt;/a&gt; -- Dave Reed explains how to take advantage of the new Dynamic Templates and Placeholders feature added to Preview 5. &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://weblogs.asp.net/jimwang/archive/2009/09/11/asp-net-ajax-preview-5-and-updatepanel.aspx" target="_blank"&gt;ASP.NET Ajax Preview 5 and UpdatePanel&lt;/a&gt; – Jim Wang explains how you can use Preview 5 with existing websites that use the standard ASP.NET UpdatePanel control. &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://weblogs.asp.net/bleroy/archive/2009/09/14/building-a-class-browser-with-microsoft-ajax-4-0-preview-5.aspx" target="_blank"&gt;Building a class browser with Microsoft Ajax 4.0 Preview 5&lt;/a&gt; – Bertrand Le Roy builds a very cool Ajax class browser application by taking advantage of several new features of Preview 5 including recursive templates. &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://lostintangent.com/2009/06/20/how-the-datacontext-can-change-your-data-and-your-life-well-sort-of-but-not-really/" target="_blank"&gt;How the DataContext can change your data and your life (well, sort of, but not really)&lt;/a&gt; – Jonathan Carter has a great series of posts that dive into the details of the Ajax DataView and DataContext. &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;&lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;The Microsoft Ajax CDN enables you to significantly improve the performance of ASP.NET Web Forms and ASP.NET MVC applications that use ASP.NET AJAX or jQuery.&amp;#160; The service is available for free, does not require any registration, and can be used for both commercial and non-commercial purposes.&lt;/p&gt;    &lt;p&gt;ASP.NET 4.0 will make it especially easy for ASP.NET Web Forms developers to take advantage of the CDN. By setting one property of the ScriptManager control, you will be able to redirect all requests for the built-in ASP.NET JavaScript files to the CDN and improve the performance of your Web Forms applications. &lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt;    &lt;p&gt;P.S. In addition to blogging, I have been using Twitter more recently to-do quick posts and share links.&amp;#160; You can follow me on Twitter at: &lt;a href="http://www.twitter.com/scottgu"&gt;http://www.twitter.com/scottgu&lt;/a&gt; (@scottgu is my twitter name)&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7207601" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Atlas/default.aspx">Atlas</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category></item><item><title>Auto-Start ASP.NET Applications (VS 2010 and .NET 4.0 Series)</title><link>http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx</link><pubDate>Tue, 15 Sep 2009 08:46:13 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7206086</guid><dc:creator>ScottGu</dc:creator><slash:comments>43</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=7206086</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx#comments</comments><description>&lt;font size="2"&gt;   &lt;p&gt;&lt;font face="Arial"&gt;This is the seventh in &lt;/font&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2009/08/25/vs-2010-and-net-4-series.aspx"&gt;&lt;font face="Arial"&gt;a series of blog posts&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt; I’m doing on the upcoming VS 2010 and .NET 4 release.&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Arial"&gt;I’m going to switch from discussing new VS 2010 tooling features and instead do a few posts covering a few new runtime features (don’t worry – I’ll come back to a lot more VS features, I’m just trying to mix things up a bit).&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Arial"&gt;Today’s post covers a small, but nice, new feature that you can now optionally take advantage of with ASP.NET 4 - the ability to automatically startup and proactively initialize a web application without having to wait for an external client to hit the web server.&amp;#160; This can help you provide a faster response experience for the first user who hits the server, and avoids you having to write custom scripts to “warm up” the server and get any data caches ready.&amp;#160; It works with all types of ASP.NET applications – including both ASP.NET Web Forms and ASP.NET MVC based applications.&lt;/font&gt;&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;&lt;font face="Arial"&gt;Auto-Start Web Applications with ASP.NET 4&lt;/font&gt;&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;&lt;font face="Arial"&gt;Some web applications need to load large amounts of data, or perform expensive initialization processing, before they are ready to process requests.&amp;#160; Developers using ASP.NET today often do this work using the “Application_Start” event handler within the Global.asax file of an application (which fires the first time a request executes).&amp;#160; They then either devise custom scripts to send fake requests to the application to periodically “wake it up” and execute this code before a customer hits it, or simply cause the unfortunate first customer that accesses the application to wait while this logic finishes before processing the request (which can lead to a long delay for them).&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Arial"&gt;ASP.NET 4 ships with a new feature called “auto-start” that better addresses this scenario, and is available when ASP.NET 4 runs on IIS 7.5 (which ships with Windows 7 and Windows Server 2008 R2).&amp;#160; The auto-start feature provides a controlled approach for starting up an application worker process, initializing an ASP.NET application, and then accepting HTTP requests.&lt;/font&gt;&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;&lt;font face="Arial"&gt;Configuring an ASP.NET 4 Application to Auto-Start&lt;/font&gt;&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;&lt;font face="Arial"&gt;To use the ASP.NET 4 auto-start feature, you first configure the IIS “application pool” worker process that the application runs within to automatically startup when the web-server first loads.&amp;#160; &lt;/font&gt;&lt;font face="Arial"&gt;You can do this by opening up the IIS 7.5 applicationHost.config file (C:\Windows\System32\inetsrv\config\applicationHost.config) and by adding a &lt;em&gt;startMode=”AlwaysRunning”&lt;/em&gt; attribute to the appropriate &amp;lt;applicationPools&amp;gt; entry:&lt;/font&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p class="CodeCxSpFirst"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: blue; mso-no-proof: no"&gt;&amp;lt;&lt;/span&gt;&lt;span style="mso-no-proof: no"&gt;applicationPools&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p class="CodeCxSpMiddle"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: blue; mso-no-proof: no"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="mso-no-proof: no"&gt;add&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;MyAppWorkerProcess&lt;/span&gt;&amp;quot; &lt;font color="#ff0000"&gt;managedRuntimeVersion&lt;/font&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;v4.0&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: red"&gt;startMode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;AlwaysRunning&amp;quot;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p class="CodeCxSpLast"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: blue; mso-no-proof: no"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="mso-no-proof: no"&gt;applicationPools&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;&lt;font face="Arial"&gt;If you load up the Windows task manager, click the “show processes from all users” checkbox, and then hit save on a startMode attribute change to the applicationHost.config file, you’ll see a new “w3wp.exe” worker process immediately startup as soon as the file is saved.&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Arial"&gt;A single IIS application pool worker process can host multiple ASP.NET applications.&amp;#160; You can specify which applications you want to have automatically start when the worker process loads by adding a &lt;em&gt;serviceAutoStartEnabled=&amp;quot;true&amp;quot; &lt;/em&gt;attribute on their &amp;lt;application&amp;gt; configuration entry:&lt;/font&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p class="CodeCxSpFirst"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: blue; mso-no-proof: no"&gt;&amp;lt;&lt;/span&gt;&lt;span style="mso-no-proof: no"&gt;sites&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p class="CodeCxSpMiddle"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: blue; mso-no-proof: no"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="mso-no-proof: no"&gt;site&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;MySite&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;1&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p class="CodeCxSpMiddle"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: blue; mso-no-proof: no"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span&gt;application&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;path&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&lt;/span&gt;&amp;quot; &lt;strong&gt;&lt;font color="#ff0000"&gt;serviceAutoStartEnabled&lt;/font&gt;=&amp;quot;&lt;span style="color: blue"&gt;true&lt;/span&gt;&amp;quot; &lt;font color="#ff0000"&gt;serviceAutoStartProvider&lt;/font&gt;=&amp;quot;&lt;font color="#0000ff"&gt;PreWarmMyCache&lt;/font&gt;&amp;quot; &lt;/strong&gt;/&lt;/span&gt;&lt;span style="color: blue; mso-no-proof: no"&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p class="CodeCxSpMiddle"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: blue; mso-no-proof: no"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="mso-no-proof: no"&gt;site&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p class="CodeCxSpLast"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: blue; mso-no-proof: no"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="mso-no-proof: no"&gt;sites&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p class="CodeCxSpLast"&gt;&lt;font face="Courier New"&gt;&lt;span style="mso-no-proof: no"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p class="CodeCxSpFirst"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: blue; mso-no-proof: no"&gt;&amp;lt;&lt;/span&gt;&lt;span style="mso-no-proof: no"&gt;serviceAutoStartProviders&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p class="CodeCxSpMiddle"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: blue; mso-no-proof: no"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="mso-no-proof: no"&gt;add&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;PreWarmMyCache&lt;/span&gt;&amp;quot; &lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;font color="#0000ff"&gt;PreWarmCache, MyAssembly&lt;/font&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p class="CodeCxSpLast"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: blue; mso-no-proof: no"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="mso-no-proof: no"&gt;&lt;span style="mso-no-proof: no"&gt;serviceAutoStartProviders&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;&lt;font face="Arial"&gt;The &lt;em&gt;serviceAutoProvider=&amp;quot;PreWarmMyCache&amp;quot; &lt;/em&gt;attribute above references a provider entry within the config file that enables you to configure a custom class that can be used to encapsulate any &amp;quot;warming up&amp;quot; logic for the application.&amp;#160; &lt;/font&gt;&lt;font face="Arial"&gt;This class will be automatically invoked as soon as the worker process and application are preloaded (before any external web requests are received), and can be used to execute any initialization or cache loading logic you want to run before requests are received and processed:&lt;/font&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;p class="CodeCxSpFirst"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: blue; mso-no-proof: no"&gt;public&lt;/span&gt;&lt;span style="mso-no-proof: no"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PreWarmCache&lt;/span&gt; : System.Web.Hosting.IProcessHostPreloadClient &lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="mso-no-proof: no"&gt;{&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p class="CodeCxSpMiddle"&gt;&lt;font face="Courier New"&gt;&lt;span style="mso-no-proof: no"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Preload(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] parameters) &lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="mso-no-proof: no"&gt;{ &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p class="CodeCxSpMiddle"&gt;&lt;span style="mso-no-proof: no"&gt;&lt;font face="Courier New"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// Perform initialization and cache loading logic here... &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p class="CodeCxSpMiddle"&gt;&lt;span style="mso-no-proof: no"&gt;&lt;font face="Courier New"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p class="CodeCxSpLast"&gt;&lt;span style="mso-no-proof: no"&gt;&lt;font face="Courier New"&gt;} &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;&lt;font face="Arial"&gt;IIS will start the application in a state during which it will not accept requests until your &amp;quot;warming up&amp;quot; logic has completed.&amp;#160; After your initialization code runs in the Preload method and the method returns, the ASP.NET application will be marked as ready to process requests.&amp;#160; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Arial"&gt;You can optionally combine the new auto-start &amp;quot;warming up&amp;quot; feature with the load-balancing capabilities of the &lt;a href="http://www.iis.net/extensions/ApplicationRequestRouting" target="_blank"&gt;IIS7 Application Request Routing (ARR)&lt;/a&gt; extension, and use it to signal to a load-balancer once the application is initialized and ready to accept HTTP traffic – at which point the server can be brought into the web farm to process requests. &lt;/font&gt;      &lt;h3&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h3&gt;      &lt;p&gt;The new &amp;quot;auto start&amp;quot; feature of ASP.NET 4 and IIS 7.5 provides a well-defined approach that allows you to perform expensive application startup and pre-cache logic that can run before any end-users hit your application.&amp;#160; This enables you to have your application &amp;quot;warmed up&amp;quot; and ready from the very beginning, and deliver a consistent high performance experience.&lt;/p&gt;      &lt;p&gt;Hope this helps,&lt;/p&gt;      &lt;p&gt;Scott&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;P.S. In addition to blogging, I have been using Twitter more recently to-do quick posts and share links.&amp;#160; You can follow me on Twitter at: &lt;a href="http://www.twitter.com/scottgu"&gt;http://www.twitter.com/scottgu&lt;/a&gt; (@scottgu is my twitter name)&lt;/p&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7206086" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category></item><item><title>ASP.NET, HTML, JavaScript Snippet Support (VS 2010 and .NET 4.0 Series)</title><link>http://weblogs.asp.net/scottgu/archive/2009/09/04/asp-net-html-javascript-snippet-support-vs-2010-and-net-4-0-series.aspx</link><pubDate>Fri, 04 Sep 2009 09:12:15 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7191489</guid><dc:creator>ScottGu</dc:creator><slash:comments>51</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=7191489</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2009/09/04/asp-net-html-javascript-snippet-support-vs-2010-and-net-4-0-series.aspx#comments</comments><description>&lt;font size="2" face="arial"&gt;   &lt;p&gt;This is the sixth in &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/08/25/vs-2010-and-net-4-series.aspx" target="_blank"&gt;a series of blog posts&lt;/a&gt; I’m doing on the upcoming VS 2010 and .NET 4 release.&lt;/p&gt;    &lt;p&gt;Today’s post covers another useful improvement in VS 2010 – HTML/ASP.NET/JavaScript snippet support.&amp;#160; Snippets allow you to be more productive within source view by allowing you to create chunks of code and markup that you can quickly apply and use in your application with a minimum of character typing.&lt;/p&gt;    &lt;p&gt;Visual Studio has supported the concept of “snippets” for VB and C# in previous releases – but not for HTML, ASP.NET markup and JavaScript.&amp;#160; With VS 2010 we now support snippets for these content types as well.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Using ASP.NET Snippets&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Let’s walkthrough how we can use snippets to quickly implement a common security scenario.&amp;#160; Specifically, we’ll implement the functionality necessary to display either a “[ Login ]” link or a “[ Welcome &lt;em&gt;UserName &lt;/em&gt;]” message at the the top right of a site depending on whether or not the user is logged in:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step1_1925DA4F.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step1" border="0" alt="step1" src="http://weblogs.asp.net/blogs/scottgu/step1_thumb_10C204F8.png" width="683" height="414" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;em&gt;The above functionality is automatically added for you when you create a project using the new &lt;/em&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2009/08/26/starter-project-templates-vs-2010-and-net-4-0-series.aspx" target="_blank"&gt;&lt;em&gt;ASP.NET Project Starter Template in VS 2010&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&amp;#160; For the purpose of this walkthrough, though, we’ll assume we are starting with a blank master page and will build it entirely from scratch.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;We’ll start by adding a standard &amp;lt;div&amp;gt; element to a master page, and then position our cursor within it:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step2_41E13F98.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step2" border="0" alt="step2" src="http://weblogs.asp.net/blogs/scottgu/step2_thumb_0785C9B7.png" width="718" height="474" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;We are going to use the built-in &amp;lt;asp:loginview&amp;gt; control to help implement our scenario.&amp;#160; The &amp;lt;asp:loginview&amp;gt; control is a templated control (first introduced with ASP.NET 2.0) that allows us to easily switch between “Anonymous” and “LoggedIn” templates that automatically display depending on whether the user is authenticated.&amp;#160; Rather than type the &amp;lt;asp:loginview&amp;gt; markup manually, we’ll instead use the new snippet support in VS 2010.&lt;/p&gt;    &lt;p&gt;Typing in “&amp;lt;log” in the editor will bring up intellisense and display available elements, controls and code snippets that start with those characters.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step3_74649D0A.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step3" border="0" alt="step3" src="http://weblogs.asp.net/blogs/scottgu/step3_thumb_779684F2.png" width="590" height="354" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;We’ll select the built-in “loginview” code snippet from the above list and hit the “tab” key to complete it:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step4_5298C479.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step4" border="0" alt="step4" src="http://weblogs.asp.net/blogs/scottgu/step4_thumb_5636DF56.png" width="246" height="121" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Now that we’ve selected the snippet we want to use, we can hit the “tab” key again to execute the snippet – which will cause it to immediately replace the snippet name with the markup below.&amp;#160; Notice below the snippet added a new &amp;lt;asp:loginview&amp;gt; control for us and automatically defined the two most commonly used templates on it.&amp;#160; We were able to implement that all with just 6 keystrokes (4 keystrokes to type “&amp;lt;log”, and then 2 tab keystrokes).&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step5_2A86155A.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step5" border="0" alt="step5" src="http://weblogs.asp.net/blogs/scottgu/step5_thumb_69E3C8EA.png" width="440" height="205" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;We’ll now implement the “AnonymousTemplate”. &lt;/p&gt;    &lt;p&gt;Typing in “&amp;lt;a” in the editor will being up intellisense and display available elements and code-snippets we can use:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step6_144FFA08.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step6" border="0" alt="step6" src="http://weblogs.asp.net/blogs/scottgu/step6_thumb_0F6D464C.png" width="573" height="245" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;We’ll select the built-in “a” code snippet from the above list and hit the “tab” key to complete it.&amp;#160; When we hit tab again it will execute the snippet – which will cause it to replace the snippet name with the markup below:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step7_19BE6AAC.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step7" border="0" alt="step7" src="http://weblogs.asp.net/blogs/scottgu/step7_thumb_46D3577A.png" width="436" height="239" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;The “href” attribute attribute value and the inner content of the &amp;lt;a&amp;gt; element above are highlighted with a green background color.&amp;#160; This indicates that these values are replaceable parameters and that we can automatically tab between them when filling them out – avoiding the need to use the cursor keys or touch the mouse (making things much faster).&lt;/p&gt;    &lt;p&gt;Without having to move our cursor or mouse, we can begin typing the login page URL we want to send users to if they are not authenticated on the site:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step8_7F11CE92.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step8" border="0" alt="step8" src="http://weblogs.asp.net/blogs/scottgu/step8_thumb_2BBA886C.png" width="436" height="242" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;When done, we can hit the “tab” key and VS will automatically highlight the second content parameter in the editor for us (no manual cursor movement or mouse action required):&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step9_11E6523D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step9" border="0" alt="step9" src="http://weblogs.asp.net/blogs/scottgu/step9_thumb_6320999A.png" width="420" height="242" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;We can then type the text we want displayed (again without having to move the mouse or touch a cursor key):&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step10_293156AE.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step10" border="0" alt="step10" src="http://weblogs.asp.net/blogs/scottgu/step10_thumb_616FCDC6.png" width="453" height="239" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Once done with the “&amp;lt;AnonymousTemplate&amp;gt;” we can move onto the &amp;quot;&amp;lt;LoggedInTemplate&amp;gt;”.&amp;#160; We’ll type “&amp;lt;log” in the editor to bring up intellisense – and select the built-in “loginname” snippet:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step11_479B9797.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step11" border="0" alt="step11" src="http://weblogs.asp.net/blogs/scottgu/step11_thumb_3FA3F535.png" width="464" height="285" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;When we hit tab it will execute the snippet – which will cause it to replace the snippet with the markup below:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step12_25CFBF06.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step12" border="0" alt="step12" src="http://weblogs.asp.net/blogs/scottgu/step12_thumb_64C13FA1.png" width="679" height="257" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;The “FormatString” property value above was automatically populated for us with a default welcome text message.&amp;#160; The value is also automatically highlighted in case we want to change it (without having to move the mouse or cursor keys).&amp;#160; For this sample we’ll just keep the default text.&lt;/p&gt;    &lt;p&gt;Our final markup then looks like below:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step13_4AED0972.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step13" border="0" alt="step13" src="http://weblogs.asp.net/blogs/scottgu/step13_thumb_6DCDCB22.png" width="688" height="285" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;When we run our application the above markup will display a “[Login]” link when we aren’t authenticated:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step19_68EB1766.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step19" border="0" alt="step19" src="http://weblogs.asp.net/blogs/scottgu/step19_thumb_39B92BCF.png" width="643" height="340" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;When we are logged in we’ll see a welcome string like below:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step15_31C1896D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step15" border="0" alt="step15" src="http://weblogs.asp.net/blogs/scottgu/step15_thumb_5E6A4346.png" width="645" height="340" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;The total number of key strokes to implement this entire scenario is less than 15% of what we would previously have had to type.&amp;#160; Typing fast, I found I could implement the entire scenario in less than 15 seconds :-)&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET MVC Snippets&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Built-in snippets are available for all ASP.NET controls and HTML markup elements.&amp;#160; &lt;/p&gt;    &lt;p&gt;Built-in snippets are also available for common ASP.NET MVC view scenarios, and for the built-in ASP.NET MVC HTML helpers.&amp;#160; &lt;/p&gt;    &lt;p&gt;For example, we can type “&amp;lt;act” within a ASP.NET MVC view and select the “actionlink” snippet:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step16_0F897DE7.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step16" border="0" alt="step16" src="http://weblogs.asp.net/blogs/scottgu/step16_thumb_4E7AFE82.png" width="678" height="339" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;When we complete it and hit the “tab” key the snippet will execute – which will cause it to replace the snippet name with the markup below:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step17_42790E4E.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step17" border="0" alt="step17" src="http://weblogs.asp.net/blogs/scottgu/step17_thumb_6C790C76.png" width="678" height="197" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Notice that the “linktext” and “actionname” values are marked as snippet parameters – which means we can easily replace them without having to use the cursor keys or touch the mouse.&amp;#160; The first linktext parameter value is selected by default – which means we can just type to immediately replace the value, then hit tab to immediately select and replace the second actionname parameter:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/step18_00922900.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="step18" border="0" alt="step18" src="http://weblogs.asp.net/blogs/scottgu/step18_thumb_58EBACD5.png" width="599" height="112" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Custom Snippets&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Visual Studio 2010 will include more than 200 built-in snippets that you can immediately use when you install the product.&lt;/p&gt;    &lt;p&gt;What is really nice is that you are not limited to only using the built-in snippets.&amp;#160; You can also easily create your own snippets (complete with replaceable parameters) and both import them into VS 2010, as well as easily share them with other developers.&amp;#160; This makes it easy for you to quickly automate your own common tasks.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.switchonthecode.com/tutorials/csharp-tutorial-visual-studio-code-snippets" target="_blank"&gt;This article&lt;/a&gt; describes the snippet support that already exists in VS 2008, and provides a little more context on how to create and manage custom snippets. &lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Snippets are a useful feature that enable you to reduce keystrokes within the editor, and allow you to complete scenarios and tasks much faster.&amp;#160; Having snippets now enabled in not just VB and C#, but also in HTML, ASP.NET and JavaScript files, makes this capability even more useful – and can make you even more productive.&lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt;    &lt;p&gt;P.S. In addition to blogging, I have been using Twitter more recently to-do quick posts and share links.&amp;#160; You can follow me on Twitter at: &lt;a href="http://www.twitter.com/scottgu"&gt;http://www.twitter.com/scottgu&lt;/a&gt; (@scottgu is my twitter name)&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7191489" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category></item></channel></rss>