<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jason Zander's WebLog</title><link>http://blogs.msdn.com/b/jasonz/</link><description>Corporate Vice President, Visual Studio, Developer Division</description><dc:language>en-US</dc:language><generator>Telligent Community 5.6.583.20496 (Build: 5.6.583.20496)</generator><item><title>Join me at the ALM &amp; Test days in Italy</title><link>http://blogs.msdn.com/b/jasonz/archive/2012/01/19/join-me-at-the-alm-and-test-days-in-italy.aspx</link><pubDate>Fri, 20 Jan 2012 01:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10189006</guid><dc:creator>Jason Zander</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10189006</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2012/01/19/join-me-at-the-alm-and-test-days-in-italy.aspx#comments</comments><description>&lt;p&gt;I&amp;rsquo;m looking forward to my upcoming trip to Italy next week, where I&amp;rsquo;ll have an opportunity to speak at Microsoft events, and spend time with customers and partners. I wanted to share my plans with you, in case we have an opportunity to connect.&lt;/p&gt;
&lt;p&gt;The Microsoft events where I will be keynoting are the &lt;a href="http://www.microsoft.com/italy/alm/eventi/almday/index.aspx"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;ALM &amp;amp; Test days&lt;/span&gt;&lt;/a&gt;. These are single day events, being held in Milan on January 24&lt;sup&gt;th&lt;/sup&gt; and Rome on January 26&lt;sup&gt;th&lt;/sup&gt;. The events will focus on Application Lifecycle Management, and will provide useful resources for both business decision makers and technical decision makers. In my keynote, I will describe the Microsoft ALM Strategy. This will be a good opportunity to learn about the direction we&amp;rsquo;re taking with our Microsoft ALM products, and gain insight into the thinking behind it. I will also share information on what you can expect to see in the next Visual Studio release.&lt;/p&gt;
&lt;p&gt;Following my presentation, there will be talks offering insights and learning&amp;rsquo;s from real-world examples of implementing ALM in the enterprise including CIO interviews, customer panels, and detailed sessions on end-to-end integration by expert partner teams. I look forward to meeting everyone!&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Follow me at &lt;/i&gt;&lt;a title="twitter.com/jlzander" href="http://twitter.com/jlzander"&gt;&lt;i&gt;twitter.com/jlzander&lt;/i&gt;&lt;/a&gt;&lt;i&gt;.&lt;/i&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10189006" width="1" height="1"&gt;</description></item><item><title>January 17th What’s Happening Around Visual Studio</title><link>http://blogs.msdn.com/b/jasonz/archive/2012/01/17/january_2D00_17_2D00_what_2D00_is_2D00_happening_2D00_around_2D00_visual_2D00_studio.aspx</link><pubDate>Wed, 18 Jan 2012 02:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10189007</guid><dc:creator>Jason Zander</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10189007</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2012/01/17/january_2D00_17_2D00_what_2D00_is_2D00_happening_2D00_around_2D00_visual_2D00_studio.aspx#comments</comments><description>&lt;p&gt;I hope everyone had a great holiday season, and is off to a good new year. I enjoyed taking some time off to spend with my family.&lt;/p&gt;
&lt;p&gt;I wanted to share some of what&amp;rsquo;s been going on in the Visual Studio team since &lt;a href="http://www.buildwindows.com/"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;BUILD&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In October we released the &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27746"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Microsoft &amp;ldquo;Roslyn&amp;rdquo; CTP&lt;/span&gt;&lt;/a&gt;. Roslyn is a long lead project (post-Visual Studio 11), in which we&amp;rsquo;re rewriting the C# and Visual Basic compilers in C# and Visual Basic! In the process, we&amp;rsquo;re opening up these compilers as APIs that are accessible to developers. This is a significant shift from traditional black box compilers, where source code goes in and assemblies come out. One advantage of opening up these compilers is that it will make it easier to create amazing tools for these languages. We&amp;rsquo;re looking forward to seeing what you will build with this support. For more information on &amp;ldquo;Roslyn&amp;rdquo;, please visit &lt;a href="http://msdn.com/en-us/roslyn"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;http://msdn.com/en-us/roslyn&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In November we released the latest &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=28045"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Windows Azure SDK for .NET&lt;/span&gt;&lt;/a&gt;, which included updates to the Windows Azure Tools for Visual Studio 2010 and the Windows Azure Emulator. If you&amp;rsquo;ve been targeting Windows Azure, a couple of improvements you&amp;rsquo;ll enjoy are the Publish Windows Azure Application wizard and command-line build support. For the full list of changes, please see the &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/11/14/updated-windows-azure-sdk-amp-windows-azure-hpc-scheduler-sdk.aspx"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Windows Azure team blog post&lt;/span&gt;&lt;/a&gt; or the &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg441573.aspx"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Windows Azure documentation&lt;/span&gt;&lt;/a&gt;. If you&amp;rsquo;re new to Windows Azure, there are also some great new resources to get you started, such as the redesigned Windows Azure website at &lt;a href="http://www.windowsazure.com/"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;http://www.windowsazure.com/&lt;/span&gt;&lt;/a&gt;. If you&amp;rsquo;re looking for hands-on labs, slides, and demos, be sure to also download the &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=8396"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Windows Azure Training Kit&lt;/span&gt;&lt;/a&gt;. For presentations, I recommend watching the session videos from the recent &lt;a href="http://channel9.msdn.com/events/windowsazure/learn"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Learn Windows Azure&lt;/span&gt;&lt;/a&gt; event in December.&lt;/p&gt;
&lt;p&gt;Following the Windows Azure release in November, we released a refresh of our &lt;a href="http://tfspreview.com/"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Team Foundation Service&lt;/span&gt;&lt;/a&gt; (Team Foundation Server running on Windows Azure) in December. Team Foundation Service is the fastest and easiest way to get up and running on a team project. Team Foundation Service preview has been running as a private preview since April, and with public invitation codes since September at BUILD. The most recent enhancements in the &lt;a href="http://blogs.msdn.com/b/visualstudioalm/archive/2011/12/08/team-foundation-service-december-update.aspx"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;December release&lt;/span&gt;&lt;/a&gt; include navigation updates, richer homepages, simplified web UI for small teams, performance, email notifications, forecast lines, and in-tile taskboard editing. These changes are in response to feedback from our early adopters, and make the tool even more helpful and easy to use. We are very interested in your feedback at this point in the product development (both on &lt;a href="http://visualstudio.uservoice.com/"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;UserVoice&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://connect.microsoft.com/"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Connect&lt;/span&gt;&lt;/a&gt;), so we can make the right improvements as we develop the product. To learn more about the Team Foundation Service preview, please visit &lt;a href="http://blogs.msdn.com/b/bharry/"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Brian Harry&amp;rsquo;s blog&lt;/span&gt;&lt;/a&gt;, the &lt;a href="http://blogs.msdn.com/b/visualstudioalm/archive/tags/team+foundation+service+preview/"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;ALM Team blog&lt;/span&gt;&lt;/a&gt;, or &lt;a href="http://channel9.msdn.com/posts/Team-Foundation-Service-Preview-Introduction"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Channel9&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;December was a big month for TFS. In addition to the Team Foundation Service preview, we also released an update of the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Team Foundation Server Power Tools&lt;/span&gt;&lt;/a&gt;. While the Team Foundation Service preview is an early look at a future technology, the Team Foundation Server Power Tools are an extension to the released product, Team Foundation Server 2010. I&amp;rsquo;ve blogged about power tools &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/06/07/announcing-vs2010-productivity-power-tools-and-modeling-feature-packs.aspx"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;before&lt;/span&gt;&lt;/a&gt;, and explained that we release them to try out new ideas or answer common requests more quickly than in the next product release. In the December TFS Power Tools release we focused on developers using TFS from Eclipse. We want to make sure that TFS is accessible to developers using any tools, and therefore we add support to additional tools beyond Visual Studio, where it makes sense. Eclipse users can &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28557"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;download&lt;/span&gt;&lt;/a&gt; the December release, and get additional features including TFS alerts, work item templates, and improved Find in Source Control. Another improvement available in the December release is 64-bit MSSCCI support.&lt;/p&gt;
&lt;p&gt;In November, I also participated in the &lt;a href="http://www.alm-summit.com/home.aspx"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;ALM Summit&lt;/span&gt;&lt;/a&gt; which was held at the Microsoft Headquarters in Redmond Washington. This event is a great opportunity to discuss application lifecycle management challenges, learn how to apply Microsoft&amp;rsquo;s solutions, and pick up best practices from industry experts. At the Summit I gave a presentation on The Microsoft Vision for ALM, which you can find recorded on &lt;a href="http://channel9.msdn.com/Events/ALM-Summit/2011/The-Microsoft-Vision-for-ALM"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Channel9&lt;/span&gt;&lt;/a&gt;. In this talk, I shared the trends I&amp;rsquo;m seeing in the industry, and how we&amp;rsquo;re advancing the Visual Studio product offerings to address them. If you missed this event and are interested in ALM, I&amp;rsquo;d definitely recommend viewing this and the other session videos available &lt;a href="http://channel9.msdn.com/Events/ALM-Summit/2011"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;online&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Follow me at &lt;/i&gt;&lt;a title="twitter.com/jlzander" href="http://twitter.com/jlzander"&gt;&lt;i&gt;twitter.com/jlzander&lt;/i&gt;&lt;/a&gt;&lt;i&gt;.&lt;/i&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10189007" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Azure/">Azure</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/ALM/">ALM</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/News/">News</category></item><item><title>Announcing Visual Studio 11 Developer Preview</title><link>http://blogs.msdn.com/b/jasonz/archive/2011/09/14/announcing-visual-studio-11-developer-preview.aspx</link><pubDate>Wed, 14 Sep 2011 17:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10189004</guid><dc:creator>Jason Zander</dc:creator><slash:comments>40</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10189004</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2011/09/14/announcing-visual-studio-11-developer-preview.aspx#comments</comments><description>&lt;p&gt;Today in the &lt;a title="BUILD" href="http://www.buildwindows.com/"&gt;BUILD&lt;/a&gt; keynote I had the opportunity to show some of the new functionality in Microsoft&amp;reg; Visual Studio&amp;reg; 11 Developer Preview and Microsoft&amp;reg; Team Foundation Server Preview.&amp;nbsp; MSDN subscribers can download the previews today as well as the new release of .NET Framework 4.5 Developer Preview; general availability is on Friday, September 16.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Download &lt;strong&gt;Visual Studio 11&lt;/strong&gt;, &lt;strong&gt;Team Foundation Server 11&lt;/strong&gt;, and several other components today (&lt;a title="MSDN Subscribers Only Downloads" href="http://go.microsoft.com/fwlink/?LinkId=227374"&gt;MSDN Subscribers Only Downloads&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Friday 10:00 AM PDT general availability&lt;/strong&gt; for &lt;a title="Visual Studio 11" href="http://go.microsoft.com/fwlink/?LinkId=225709"&gt;Visual Studio 11&lt;/a&gt; and &lt;a title="Team Foundation Server 11" href="http://go.microsoft.com/fwlink/?LinkId=225714"&gt;Team Foundation Server 11&lt;/a&gt; can be downloaded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some exciting announcements are being made here at BUILD.&amp;nbsp; Visual Studio 11 provides an &lt;strong&gt;integrated development experience that spans the entire lifecycle of software creation&lt;/strong&gt; from architecture to code creation, testing and beyond. This release adds support for Windows 8 and HTML 5, enabling you to target platforms across devices, services and the cloud.&amp;nbsp; Integration with Team Foundation Server enables the entire team to collaborate throughout the development cycle to create quality applications.&lt;/p&gt;
&lt;p&gt;.NET 4.5 has focused on top developer requests across all our key technologies, and includes new features for Asynchronous programming in C# and Visual Basic, support for state machines in Windows Workflow, and increased investments in HTML5 and CSS3 in ASP.NET.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve shared a lot at BUILD already, for more on the future of Windows development I suggest you take a look at &lt;a title="Steven Sinofsky" href="http://blogs.msdn.com/b/b8/"&gt;Steven Sinofsky&lt;/a&gt; and &lt;a title="S. Somasegar's" href="http://blogs.msdn.com/b/somasegar/"&gt;S. Somasegar&amp;rsquo;s&lt;/a&gt; blogs. More details on Team Foundation Server including the new service announced at BUILD and how we&amp;rsquo;re helping teams be more productive can be found on &lt;a title="Brian Harry's" href="http://blogs.msdn.com/b/bharry/"&gt;Brian Harry&amp;rsquo;s&lt;/a&gt; blog.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-large;"&gt;&lt;strong&gt;Quick Tour around Visual Studio 11 Features&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio 11 has several new features, all designed to provide an integrated set of tools for delivering great user and application experiences; whether working individually or as part of a team. Let me highlight a few:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-large;"&gt;&lt;strong&gt;Develop Metro style Apps for Windows 8&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio 11 includes a set of templates that get you started quickly developing Metro style applications with JavaScript, C#, VB or C++. The blank Application template provides the simplest starting point with a default project structure that includes sample resources and images. The Grid View, Split View, and Navigation templates are designed to provide a starting point for more complex user interfaces.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/3288.Image1-BUILD.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/3288.Image1-BUILD.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;From Visual Studio 11, seamlessly open up your Metro style app with JavaScript in Expression Blend to add the style and structure of your application.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/5633.Image2-BUILD.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/5633.Image2-BUILD.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Due to the dynamic nature of HTML it is often difficult to see how a web page is going to look unless it is running.&amp;nbsp; Blend&amp;rsquo;s innovative interactive design mode enables you to run your app on the design surface as a live app instead of a static visual layout.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/7713.Image3-BUILD.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/7713.Image3-BUILD.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;&lt;strong&gt;Enhancements for Game Development&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;We have added Visual Studio Graphics tools to help game developers become more productive, making it easier to build innovative games. Visual Studio 11 provides access to a &lt;strong&gt;number of resource editing, visual design, and visual debugging tools for writing 2D / 3D games and Metro style applications&lt;/strong&gt;. Specifically, Visual Studio Graphics includes tools for:&lt;/p&gt;
&lt;p&gt;Viewing and basic editing of 3D models in Visual Studio 11.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/3580.Image4-BUILD.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/3580.Image4-BUILD.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Viewing and editing of images and textures with support for alpha channels and transparency.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/8306.Image5-BUILD.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/8306.Image5-BUILD.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Visually designing shader programs and effect files.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/4353.Image6-BUILD.png" target="_blank"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/6175.Image6a_2D00_BUILD.PNG" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/6175.Image6a_2D00_BUILD.PNG" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Debugging and diagnostics of DirectX based output.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/0576.Image7a_2D00_BUILD.PNG" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/0576.Image7a_2D00_BUILD.PNG" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/4454.Image7-BUILD.png" target="_blank"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-large;"&gt;&lt;strong&gt;Code Clone Analysis&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio has historically provided tools that enable a developer to improve code quality by refactoring code. However this process depends on the developer to determine where such reusable code is likely to occur. The Code-Clone Analysis tool in Visual Studio 11 &lt;strong&gt;examines your solution looking for logic that is duplicated, enabling you to factor this code out into one or more common methods&lt;/strong&gt;. The tool does this very intelligently; it does not just search for identical blocks of code, rather it searches for semantically similar constructs using heuristics developed by Microsoft Research.&lt;/p&gt;
&lt;p&gt;This technique is useful if you are correcting a bug in a piece of code and you want to find out whether the same bug resulting from the same programmatic idiom occurs elsewhere in the project.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-large;"&gt;&lt;strong&gt;Code Review Workflow with Team Explorer&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio 11 Preview works hand in hand with Team Foundation Server 11 to &lt;strong&gt;provide best in class application lifecycle management&lt;/strong&gt;. Visual Studio 11 facilities collaboration is by enabling developers to request and perform code reviews through using Team Explorer. This feature defines a workflow in Team Foundation Server that saves project state and routes review requests as work items to team members. These workflows are independent of any specific process or methodology, so you can incorporate code reviews at any convenient point in the project lifecycle.&lt;/p&gt;
&lt;p&gt;The Request Review link in the My Work pane enables you to create a new code review task and assign it to one or more other developers.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/5008.Image9-BUILD.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/5008.Image9-BUILD.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The reviewer can accept or decline the review, and respond to any messages or queries associated with the code review, add annotations and more. Visual Studio 11 displays the code by using a &amp;ldquo;Diff&amp;rdquo; format, showing the original code and the changes made by the developer requesting the review. This feature enables the reviewer to quickly understand the scope of the changes and work more efficiently.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/5224.Image10-BUILD.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/5224.Image10-BUILD.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-large;"&gt;&lt;strong&gt;Exploratory Testing and Enhanced Unit Testing&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;As development teams become more flexible and agile, they demand adaptive tools that still ensure a high commitment to quality. The Exploratory Testing feature is an adaptive tool for &lt;strong&gt;agile testing that enables you to test without performing formal test planning&lt;/strong&gt;. You can now directly start testing the product without spending time writing test cases or composing test suites. When you start a new testing session, the tool generates a full log of your interaction with the application under test. You can annotate your session with notes, and you can capture the screen at any point and add the resulting screen shot to your notes. You can also attach a file providing any additional information if required. With the exploratory testing tool you can also:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;File actionable bugs fast&lt;/strong&gt;. The Exploratory Testing tool enables you to generate a bug report, and the steps that you performed to cause unexpected behavior are automatically included in the bug report.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/8054.Image11-BUILD.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/8054.Image11-BUILD.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Create test cases&lt;/strong&gt;. You can generate test cases based on the steps that caused the bugs to appear.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/8875.Image12-BUILD.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/8875.Image12-BUILD.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Manage exploratory testing sessions&lt;/strong&gt;. When testing is complete, you can return to Microsoft Test Manager, which saves the details of the testing session and includes information such as the duration, which new bugs were filed, and which test cases were created.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/4048.Image13-BUILD.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/4048.Image13-BUILD.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-large;"&gt;&lt;strong&gt;What&amp;rsquo;s New in .NET 4.5&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;.NET 4.5 has focused on our top developer requests.&amp;nbsp; Across ASP.NET, the BCL, MEF, WCF, WPF, Windows Workflow, and other key technologies, we&amp;rsquo;ve listened to developers and added functionality in .NET 4.5.&amp;nbsp; Important examples include state machine support in Windows Workflow, and improved support for SQL Server and Windows Azure in ADO.NET.&amp;nbsp; ASP.NET has increased investments in HTML5, CSS3, device detection, page optimization, and the NuGet package system, as well as introduces new functionality with MVC4.&amp;nbsp; Learn more at &lt;a title="Scott Guthrie's" href="http://weblogs.asp.net/scottgu/"&gt;Scott Guthrie&amp;rsquo;s&lt;/a&gt; blog.&lt;/p&gt;
&lt;p&gt;.NET 4.5 also helps developers write faster code.&amp;nbsp; Support for Asynchronous programming in C# and Visual Basic enables developers to easily write client UI code that doesn&amp;rsquo;t block, and server code that scales more efficiently.&amp;nbsp; The new server garbage collector reduces pause times, and new features in the Parallel Computing Platform enable Dataflow programming and other improvements.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-large;"&gt;&lt;strong&gt;Start Coding&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio 11 includes several new features which will help developers collaborate more effectively while creating exciting experiences for their users.&amp;nbsp; Here are some are some resources to help you get started.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Visual Studio 11 Developer Preview" href="http://go.microsoft.com/fwlink/?LinkID=217619"&gt;Visual Studio 11 Developer Preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=".NET Framework 4.5 Developer Preview" href="http://go.microsoft.com/fwlink/?LinkId=228707"&gt;.NET Framework 4.5 Developer Preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background-color: #ffffff;"&gt;&lt;a title="Windows Developer Center" href="http://dev.windows.com/"&gt;Windows Developer Center&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10189004" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Visual+Studio+11/">Visual Studio 11</category></item><item><title>Microsoft® Visual Studio® LightSwitch™ 2011 is Available Today</title><link>http://blogs.msdn.com/b/jasonz/archive/2011/07/26/visual-studio-lightswitch-2011-is-available-today.aspx</link><pubDate>Tue, 26 Jul 2011 17:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10189003</guid><dc:creator>Jason Zander</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10189003</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2011/07/26/visual-studio-lightswitch-2011-is-available-today.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/4186.Image-1-LS2011.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/4186.Image-1-LS2011.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I am happy to say that as of 10:00am PDT today, Microsoft Visual Studio LightSwitch 2011 is available! MSDN subscribers can download LightSwitch immediately and others can download the 90-day trial.&amp;nbsp; General availability is on Thursday, July 28th.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Get &lt;strong&gt;&lt;a title="Visual Studio LightSwitch 2011 (MSDN Subscribers)" href="http://go.microsoft.com/fwlink/?LinkID=207267"&gt;Visual Studio LightSwitch 2011 (MSDN Subscribers)&lt;/a&gt;&lt;/strong&gt;. If you&amp;rsquo;re not a MSDN Subscriber, you can &lt;strong&gt;&lt;a title="download a 90 day trial" href="http://go.microsoft.com/fwlink/?LinkId=215475"&gt;download a 90 day trial&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Thursday&amp;rsquo;s 10:00am PDT general availability&lt;/strong&gt; information can be found on the &lt;a title="LightSwitch site" href="http://www.microsoft.com/visualstudio/lightswitch/buy"&gt;LightSwitch site&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Visual Studio LightSwitch 2011 is a simplified, self-service development tool that enables you to create business applications quickly and easily for the desktop and cloud. I first &lt;a title="announced LightSwitch" href="http://blogs.msdn.com/b/jasonz/archive/2010/08/03/introducing-microsoft-visual-studio-lightswitch.aspx"&gt;announced LightSwitch&lt;/a&gt; at the VS Live conference in August 2010 and have since written a few posts including &lt;a title="detailed tutorials" href="http://blogs.msdn.com/b/jasonz/archive/tags/lightswitch/"&gt;detailed tutorials&lt;/a&gt;. For those of you unfamiliar with it, it starts with the premise that most business applications consist of data and the screens that users interact with. LightSwitch &lt;strong&gt;simplifies attaching to data&lt;/strong&gt; with data source wizards or creating data tables with table designers. It also includes &lt;strong&gt;screen templates for common tasks&lt;/strong&gt; so you can create clean interfaces for your applications without being a designer. Basic applications can be written without a line of code. However, &lt;strong&gt;you can add custom code&lt;/strong&gt; that is specific to your business problem without having to worry about setting up classes and methods.&lt;/p&gt;
&lt;p&gt;As part of today's announcement, I've put together a&amp;nbsp;&lt;a title="video" href="http://www.microsoft.com/visualstudio/en-us/lightswitch/overview-videos/lightswitch-2011-overview" target="_blank"&gt;video&lt;/a&gt; that&lt;strong&gt; highlights some of the features within LightSwitch&lt;/strong&gt;, along with sessions on how to build applications using it.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-large;"&gt;&lt;strong&gt;Visual Studio LightSwitch Key Features&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;LightSwitch provides several features to streamline development of business applications. Some of the key features are:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: large;"&gt;&lt;strong&gt;Starter Kits&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;To jump start your development we created starter kits for common types of business applications.&amp;nbsp; Check out the available starter kits to find the one that best fits your needs and use it as the starting point for your business application.&amp;nbsp;&amp;nbsp;&lt;a title="Downloaded starter kits  " href="http://www.microsoft.com/visualstudio/en-us/lightswitch/starter-kits"&gt;Downloaded starter kits&lt;/a&gt; appear in your installed templates.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/2275.Image-2-LS2011.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/2275.Image-2-LS2011.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: large;"&gt;&lt;strong&gt;Publish to Azure&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Take your LightSwitch applications to the cloud by publishing to Azure directly from the IDE.&amp;nbsp; You don&amp;rsquo;t need to rewrite your application; simply change the target environment, follow the steps and then your application is published to Azure.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/7840.Image-3-LS2011.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/7840.Image-3-LS2011.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Azure publishing does not only include running your application from the cloud&amp;mdash; you can also distribute it from Azure.&amp;nbsp; Desktop applications can be shared from a single location for others to download.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/0003.Image-4-LS2011.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/0003.Image-4-LS2011.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: large;"&gt;&lt;strong&gt;LightSwitch Extensions&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;LightSwitch applications are extensible, giving you the flexibility to update your application in the future with minimal disruptions.&amp;nbsp; Extension points are business data types, screen templates, data sources, themes, shells and custom controls.&amp;nbsp; In addition to being able to create your own extensions, our launch partners, ComponentOne, DevExpress, First Floor Software, Infragistics and RSSBus, are making a variety of extensions available for use today.&amp;nbsp; You can &lt;a title="get more details on the extensions each partner created  " href="http://www.microsoft.com/visualstudio/lightswitch/extensions"&gt;get more details on the extensions each partner created&lt;/a&gt; on the LightSwitch site or from within the Extension Manager in LightSwitch.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/7875.Image-5-LS2011.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/7875.Image-5-LS2011.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Select the extension for use in your current project or for use in all future LightSwitch applications.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/5633.Image-6-LS2011.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/5633.Image-6-LS2011.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;LightSwitch extensions require minimal effort to include them in an application.&amp;nbsp; Often selecting them from a drop-down menu is sufficient, or for more advanced ones may require configuration or some code.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/3527.Image-7-LS2011.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/3527.Image-7-LS2011.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once the extension is added you can use it within your application.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/3036.Image-8-LS2011.png" target="_blank"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/3036.Image-8-LS2011.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-large;"&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Thanks to all of you who downloaded pre-release builds of the product and provided your feedback. Your feedback has been invaluable to us.&lt;/p&gt;
&lt;p&gt;You can find additional information, training resources, and guidelines for moving your existing Beta 2 projects forward on the &lt;a title="LightSwitch team blog" href="http://blogs.msdn.com/b/lightswitch/archive/2011/07/26/visual-studio-lightswitch-rtm-is-here.aspx"&gt;LightSwitch team blog&lt;/a&gt;. Here is an additional list of helpful links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="LightSwitch Site" href="http://www.microsoft.com/visualstudio/en-us/lightswitch"&gt;LightSwitch Site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="LightSwitch Developer Center  " href="http://msdn.microsoft.com/en-us/lightswitch"&gt;LightSwitch Developer Center&lt;/a&gt; (one-stop-shop for training content and the community)&lt;/li&gt;
&lt;li&gt;&lt;a title="LightSwitch on Facebook" href="http://www.facebook.com/vslightswitch"&gt;LightSwitch on Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="LightSwitch on Twitter  " href="http://twitter.com/VSLightSwitch"&gt;LightSwitch on Twitter&lt;/a&gt; (hash tag: &lt;a title="#LightSwitch" href="http://twitter.com/#!/search?q=%23LightSwitch"&gt;#LightSwitch&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a title="LightSwitch Readme" href="http://go.microsoft.com/fwlink/?LinkID=214050"&gt;LightSwitch Readme&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="LightSwitch Forums" href="http://social.msdn.microsoft.com/Forums/en-US/category/vslightswitch"&gt;LightSwitch Forums&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="LightSwitch Connect Site" href="https://connect.microsoft.com/lightswitch"&gt;LightSwitch Connect Site&lt;/a&gt; (feedback)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;Jason&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10189003" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/LightSwitch/">LightSwitch</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Announcement/">Announcement</category></item><item><title>June 28th What's Happening Around Visual Studio</title><link>http://blogs.msdn.com/b/jasonz/archive/2011/06/28/june-28-what-is-happening-around-visual-studio.aspx</link><pubDate>Tue, 28 Jun 2011 18:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10076152</guid><dc:creator>Jason Zander</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10076152</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2011/06/28/june-28-what-is-happening-around-visual-studio.aspx#comments</comments><description>&lt;p&gt;A quick recap of what's been happening on the team.&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a title="Unit Testing the Windows Phone 7 applications" href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/06/26/unit-testing-the-windows-phone-7-applications.aspx"&gt;Unit Testing Windows Phone 7 applications&lt;/a&gt;&lt;/strong&gt; - Amit Chatterjee continues his series of posts as he builds his Chronometer Windows Phone 7 application.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a title="TFS 2010 SP1 Cumulative Update 1 Available" href="http://blogs.msdn.com/b/bharry/archive/2011/06/13/tfs-2010-sp1-cumulative-update-1-available.aspx"&gt;TFS 2010 SP1 Cumulative Update 1 Available&lt;/a&gt;&lt;/strong&gt; - Learn about the latest cumulative update from the TFS team.&amp;nbsp; The update prereqs SP1 and should be installed on TFS application tiers and build servers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Visual Studio ALM Rangers&lt;/strong&gt; - Just recently, the Ranger community launched two sets of guidance that&amp;nbsp;I recommend you check out.&amp;nbsp; The&amp;nbsp;&lt;a title="Visual Studio Build Customization Guidance" href="http://blogs.msdn.com/b/willy-peter_schaub/archive/2011/06/18/we-have-shipped-visual-studio-build-customization-guidance.aspx"&gt;Visual Studio Build Customization Guidance&lt;/a&gt;&amp;nbsp;offers scenario based guidance on versioning, code signing, and branching. The &lt;a title="Visual Studio Lab Management Guidance" href="http://blogs.msdn.com/b/willy-peter_schaub/archive/2011/06/17/we-have-shipped-visual-studio-lab-management-guidance.aspx"&gt;Visual Studio Lab Management Guidance&lt;/a&gt;&amp;nbsp;is designed for professional deployment of Lab Management in production environments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a title="Agile Project Management in Visual Studio ALM V.Next" href="http://blogs.msdn.com/b/bharry/archive/2011/06/14/agile-project-management-in-visual-studio-alm-v-next.aspx"&gt;Agile Project Management in Visual Studio ALM V.Next&lt;/a&gt;&lt;/strong&gt; - Brian Harry walks through how the TFS team adopted Scrum&amp;nbsp;for their&amp;nbsp;feature team level development. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a title="Kinect SDK for PC - VB Samples available  " href="http://blogs.msdn.com/b/vbteam/archive/2011/06/16/kinnect-sdk-for-pc-vb-samples-available.aspx"&gt;Kinect SDK for PC - VB Samples available&lt;/a&gt;&lt;/strong&gt; - Download &lt;a title="Kinect for Windows SDK beta  " href="http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/download.aspx"&gt;Kinect for Windows SDK beta&lt;/a&gt; and start coding using the available VB samples.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a title="The Importance of Feedback in Software Development " href="http://blogs.msdn.com/b/bharry/archive/2011/06/21/the-importance-of-feedback-in-software-development.aspx"&gt;The Importance of Feedback in Software Development&lt;/a&gt;&lt;/strong&gt; - Learn how by increasing the role of interation and feedback in your development process you can build better software.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a title="VS ALM Library Updates on MSDN for May 2011" href="http://blogs.msdn.com/b/vstsue/archive/2011/06/01/vs-alm-library-updates-on-msdn-for-may-2011.aspx"&gt;VS ALM Library Updates on MSDN for May 2011&lt;/a&gt;&lt;/strong&gt; - Check out the latest content published in our Visual Studio Library.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a title="Make Agile Work for you in TFS 2010" href="http://msdn.microsoft.com/en-us/magazine/hh205635.aspx"&gt;Make Agile Work for you in TFS 2010&lt;/a&gt;&lt;/strong&gt; - Chris Adams recently wrote an article for MSDN Magazine that takes you on the journey of his team's adoption of Agile practices using Team Foundation Server 2010.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a title="Micro-framework v4.2 Support for Visual Basic" href="http://blogs.msdn.com/b/vbteam/archive/2011/06/08/micro-framework-v4-2-support-for-visual-basic.aspx"&gt;Micro-framework v4.2 Support for Visual Basic&lt;/a&gt;&lt;/strong&gt; - Check out how VB developers can now be microcontroller developers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a title="New QFE for Visual Studio 2010 testing tools" href="http://blogs.msdn.com/b/vstsqualitytools/archive/2011/06/24/new-qfe-for-visual-studio-2010-testing-tools.aspx"&gt;New QFE for Visual Studio 2010 testing tools&lt;/a&gt;&lt;/strong&gt; - The team recently made available a QFE that fixes some issues reported by our customers. Check out the team blog for a summary of issues fixed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a title="Tips and Tricks for Using the Screen Designer" href="http://blogs.msdn.com/b/lightswitch/archive/2011/06/23/tips-and-tricks-for-using-the-screen-designer.aspx"&gt;Tips and Tricks for Using the Screen Designer&lt;/a&gt;&lt;/strong&gt; - Sheel Shah walks through how to get the most out of your screen designer using LightSwitch.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Follow me at &lt;a title="twitter.com/jlzander" href="http://twitter.com/jlzander"&gt;&lt;span style="color: #366df4;"&gt;twitter.com/jlzander&lt;/span&gt;&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10076152" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/News/">News</category></item><item><title>Please welcome Erich Gamma to the Visual Studio team!</title><link>http://blogs.msdn.com/b/jasonz/archive/2011/06/06/welcome-erich-gamma-to-the-visual-studio-team.aspx</link><pubDate>Mon, 06 Jun 2011 12:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10171264</guid><dc:creator>Jason Zander</dc:creator><slash:comments>38</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10171264</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2011/06/06/welcome-erich-gamma-to-the-visual-studio-team.aspx#comments</comments><description>&lt;p&gt;Today I am thrilled to announce that Erich Gamma will be joining the Visual Studio team as a Microsoft Distinguished Engineer!&amp;nbsp; Erich&amp;rsquo;s contributions have had a huge impact on the software industry.&amp;nbsp; Erich has a passion for shipping high quality, elegant software, something he shared with the community as co-author of &lt;a href="http://en.wikipedia.org/wiki/Design_Patterns"&gt;&lt;span style="color: #192ecc;"&gt;Design Patterns&lt;/span&gt;&lt;/a&gt;.&amp;nbsp; He has always had a passion for building tools to make development more productive and pleasant. Together with Kent Beck he developed the JUnit unit test framework. He was one of the key technical leads of the Eclipse project and he has lead the Eclipse Java Development tools.&amp;nbsp; Recently his focus was on making teams more effective. He was an initial member of the Jazz project and the technical lead of Rational Team Concert. Finally, Erich has worked to bring teams together across the application life cycle and he was the lead of Rational's Collaborative Lifecycle Management effort.&lt;/p&gt;
&lt;p&gt;Erich will continue to live and work out of Zurich, Switzerland where we will be opening a small Visual Studio development lab with Erich as the lead.&amp;nbsp; Erich will join the lab in early August.&amp;nbsp; For those who are interested in applying for positions with the new Zurich lab you can send mail to &lt;a href="mailto:CHDevDiv@Microsoft.com"&gt;CHDevDiv@Microsoft.com&lt;/a&gt; to get details.&lt;/p&gt;
&lt;p&gt;The Visual Studio team is passionate about inspiring developers to create great software.&amp;nbsp; We want to make developers successful and enable them to continuously deliver value.&amp;nbsp; We are constantly looking for better ways to accomplish these goals.&amp;nbsp; I&amp;rsquo;m very excited to have someone like Erich who shares our passion join the team.&amp;nbsp; Please join me in welcoming Erich to the Visual Studio team!&lt;/p&gt;
&lt;p&gt;Jason&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10171264" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/News/">News</category></item><item><title>May 27th What's Happening Around Visual Studio</title><link>http://blogs.msdn.com/b/jasonz/archive/2011/05/27/may-27-what-is-happening-around-visual-studio.aspx</link><pubDate>Fri, 27 May 2011 19:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10076150</guid><dc:creator>Jason Zander</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10076150</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2011/05/27/may-27-what-is-happening-around-visual-studio.aspx#comments</comments><description>&lt;p&gt;Last week was &lt;strong&gt;Teched North America&lt;/strong&gt;&amp;nbsp;in Atlanta, GA.&amp;nbsp;&amp;nbsp;It was a great event and continues to be one of my favorite conferences because we get the chance to engage with both developers and IT professionals. In addition to my announcement of&amp;nbsp;our &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2011/05/16/announcing-alm-roadmap-in-visual-studio-vnext-at-teched.aspx" title="ALM Roadmap in Visual Studio vNext"&gt;ALM Roadmap in Visual Studio vNext&lt;/a&gt;, there has&amp;nbsp;been quite a bit of videos and blogs posted that I want to make sure you've had a chance to check out. &lt;/p&gt;
&lt;p&gt;While Channel 9 has &lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011" title="all the TechEd sessions available "&gt;all the TechEd sessions available&lt;/a&gt;&amp;nbsp;- here are&amp;nbsp;a &lt;strong&gt;handful of sessions&amp;nbsp;to help&amp;nbsp;get you started:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/KEY01" title="Keynote Address"&gt;Keynote Address&lt;/a&gt; &lt;/strong&gt;(Robert Wahbe, Jason Zander) &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/FDN03" title="The Future of Microsoft Visual Studio Application Lifecycle Management "&gt;The Future of Microsoft Visual Studio Application Lifecycle Management&lt;/a&gt;&lt;/strong&gt; (Cameron Skinner) &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV211" title="Building Business Applications with Microsoft Visual Studio LightSwitch"&gt;Building Business Applications with Microsoft Visual Studio LightSwitch&lt;/a&gt; &lt;/strong&gt;(Robert Green)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV326" title="Visual Studio IDE Futures"&gt;Visual Studio IDE Futures&lt;/a&gt;&lt;/strong&gt; (Weston Hutchins)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV328" title="How we do Language Design at Microsoft"&gt;How We Do Language Design at Microsoft&lt;/a&gt; &lt;/strong&gt;(Alex Turner, Donald Syme, Lisa Feigenbaum, Lucian Wischik)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV202" title="Team Foundation Server for Everyone"&gt;Team Foundation Server for Everyone&lt;/a&gt;&lt;/strong&gt; (Martin Woodward)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV204" title="Manual Testing with Microsoft Test Manager 2010"&gt;Manual Testing with Microsoft Test Manager 2010&lt;/a&gt;&lt;/strong&gt; (Brian Keller)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV316" title="ALM for C++ in Microsoft Visual Studio 2010"&gt;ALM for C++ in Microsoft Visual Studio 2010&lt;/a&gt;&lt;/strong&gt; (Terry Leeper)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There have also been &lt;strong&gt;more details behind the announcements &lt;/strong&gt;in a few of our team blogs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/05/17/connecting-development-and-operations.aspx" title="Connecting Development and Operations"&gt;Connecting Development and Operations&lt;/a&gt;&lt;/strong&gt; - Learn more about the TFS-SCOM connector, our first step in the journey of connecting the development and operations team together.&amp;nbsp; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/b/briankel/archive/2011/05/23/3-easy-ways-to-learn-about-visual-studio-vnext-application-lifecycle-management.aspx" title="3 Easy Ways to Learn About Visual Studio nNext Application Lifecycle Management"&gt;3 Easy Ways to Learn About Visual Studio nNext Application Lifecycle Management&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;- Check out Brian Keller's post that is a great help for getting up to speed on what we announced at Teched NA.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/b/vcblog/archive/2011/05/18/10166142.aspx" title="ALM for C++ in Visual Studio vNext at TechEd NA 2011"&gt;ALM for C++ in Visual Studio vNext at TechEd NA 2011&lt;/a&gt;&lt;/strong&gt; - Learn about some of the new features that will be especially useful to C++ developer teams.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional&amp;nbsp;things happening around the Visual Studio team: &lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=77586864-ab15-40e1-bc38-713a95a56a05&amp;amp;displaylang=en" title="Windows Phone Developer Tools 7.1 Beta"&gt;Windows Phone Developer Tools 7.1 Beta&lt;/a&gt;&lt;/strong&gt; - Download these tools and start building apps and games. The beta includes Visual Basic support for XNA and Windows Phone. To learn more check out the &lt;a href="http://create.msdn.com/en-US/education/gamedevelopment/VBSupportForXNA" title="Visual Basic Support in XNA Game Studio 4 "&gt;Visual Basic Support in XNA Game Studio 4&lt;/a&gt; article and the team's post regarding &lt;a href="http://blogs.msdn.com/b/vbteam/archive/2011/05/25/vb-support-for-the-xna-platform.aspx" title="VB support for the XNA platform"&gt;VB support for the XNA platform&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Shows/Visual-Studio-Toolbox" title="Visual Studio Toolbox"&gt;Visual Studio Toolbox&lt;/a&gt;&lt;/strong&gt; - Check out Robert Green's new series on Channel 9 that focuses on our tooling with the goal of helping you become a more productive developer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/05/24/tfs-and-project-server-resources.aspx" title="TFS and Project Server Resources"&gt;TFS and Project Server Resources&lt;/a&gt;&lt;/strong&gt; - Take advantage of the recent resources (videos, virtual machine) the team has made available to help you manage enterprise development projects.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/b/lab_management/archive/2011/05/26/configuration-matrix-testing-using-visual-studio-lab-management.aspx" title="Configuration matrix testing using Visual Studio Lab Management"&gt;Configuration matrix testing using Visual Studio Lab Management&lt;/a&gt;&lt;/strong&gt; - Learn how to test your application in both IE and Firefox.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/b/rmattsampson/archive/2011/05/10/how-do-i-import-data-from-a-web-application.aspx" title="Import Data While Running a LightSwitch Web Application"&gt;Import Data While Running a LightSwitch Web Application&lt;/a&gt;&lt;/strong&gt; - Check out Matt Sampson's tips and tricks that makes this seemlingly tricky process pretty easy to understand.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/b/vbteam/archive/2011/05/20/happy-20th-birthday-visual-basic.aspx" title="Happy 20th Birthday Visual Basic!"&gt;Happy 20th Birthday Visual Basic!&lt;/a&gt;&lt;/strong&gt; - Check out all the stories and best wishes from the community - Happy Birthday VB!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Follow me at &lt;/em&gt;&lt;a href="http://twitter.com/jlzander" title="twitter.com/jlzander"&gt;&lt;em&gt;twitter.com/jlzander&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10076150" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/News/">News</category></item><item><title>Announcing ALM Roadmap in Visual Studio vNext at Teched</title><link>http://blogs.msdn.com/b/jasonz/archive/2011/05/16/announcing-alm-roadmap-in-visual-studio-vnext-at-teched.aspx</link><pubDate>Mon, 16 May 2011 14:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10076153</guid><dc:creator>Jason Zander</dc:creator><slash:comments>27</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10076153</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2011/05/16/announcing-alm-roadmap-in-visual-studio-vnext-at-teched.aspx#comments</comments><description>&lt;p&gt;I get a lot of questions about the future of Visual Studio; while I can't talk about everything we're doing I am excited because today at &lt;a href="http://northamerica.msteched.com/" title="Teched North America "&gt;Teched North America&lt;/a&gt;, I announced our vision for &lt;strong&gt;Application Lifecycle Management (ALM)&lt;/strong&gt; in the next version of Visual Studio. Our vision for ALM can be broken down into three main themes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Building on the momentum of Visual Studio 2010.&amp;nbsp; If you haven&amp;rsquo;t tried out Visual Studio 2010, you can&lt;strong&gt;&lt;a href="http://www.microsoft.com/visualstudio/en-us/try" title="take it out for a test drive."&gt; take it out for a test drive&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Accelerating agile adoption &amp;ndash; &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/vstudio/gg605177" title="you can find great existing support today with more to come."&gt;you can find great existing support today with more to come&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Linking development and operations &amp;ndash; &lt;strong&gt;&lt;a href="https://connect.microsoft.com/OpsMgr/InvitationUse.aspx?ProgramID=7044&amp;amp;InvitationID=OMVS-QVYH-9D3R" title="ensuring a tight interaction between dev and ops."&gt;ensuring a tight interaction between dev and ops&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When we asked people what the biggest problem they faced in successfully delivering software, they identified the need for better collaboration.&amp;nbsp;We know that building software takes a team of people including developers, testers, architects, project planners, and more. Out of this observation, we created the strategy for our ALM offering which focuses on helping people collaborate in very tightly integrated ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Collaboration&lt;/strong&gt; &amp;ndash; focus on the flow of value between team members no matter what role.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actionable Feedback&lt;/strong&gt; &amp;ndash; when feedback is required between team members, it should be in a form which is directly applicable to solving the problem at hand.&amp;nbsp; For example when a tester communicates a defect to development it should include videos, screen shots, configuration information, and even an IntelliTrace log making it easier to find and fix the root problem.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diverse Work Styles&lt;/strong&gt; &amp;ndash; provide the best possible tool for each team member whether that is the Visual Studio IDE, the web browser, SharePoint, Office, or dedicated tooling.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transparent Agile Processes&lt;/strong&gt; &amp;ndash; Enable all of the above to work on a &amp;ldquo;single source of truth&amp;rdquo; from engineering tasks through project status.&amp;nbsp; TFS provides this core that brings together all team members and their tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;VS2005, VS2008, and VS2010 have all delivered new value following this path.&amp;nbsp; For example VS2010 added deep Architect &amp;lt;-&amp;gt; Developer and Test &amp;lt;-&amp;gt; Developer interaction through solutions like architectural discovery, layering enforcement, automated testing, and IntelliTrace.&lt;/p&gt;
&lt;p&gt;In the keynote today, I talked about how we have continued on this path by incorporating two additional important roles: stakeholders and operations. Even though this diagram greatly simplifies the flows throughout the application lifecycle, it captures the essence of planning, building, and managing software:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/1805.Teched-NA-_2D00_-ALM.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/1805.Teched-NA-_2D00_-ALM.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/0044.Image-1a-Teched-NA.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are a number of scenarios that span the next version of Visual Studio for ALM. These scenarios improve the creation, maintenance and support of software solutions by focusing on improving the workflow across the entire team as well as across the entire lifecycle.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agile Planning Tools&lt;/strong&gt; &amp;ndash; create transparency across the planning process and full team participation through solutions like the new backlog and task board.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lightweight Requirements &lt;/strong&gt;&amp;ndash; a natural way to capture and receive feedback on requirements early in the process.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stakeholder Feedback&lt;/strong&gt; &amp;ndash; working code which matches the expectations of stakeholders.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continuous Testing&amp;nbsp;&lt;/strong&gt;&amp;ndash; unit test coverage ensures quality in the final product.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agile Quality Assurance&lt;/strong&gt; &amp;ndash; increased code quality with code review support, enhanced unit testing frameworks and new exploratory testing support.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enhanced User Experience&lt;/strong&gt; &amp;ndash; more time &amp;lsquo;in the zone&amp;rsquo;, through improved experiences for day-to-day tasks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aligning Development with Operations&lt;/strong&gt; &amp;ndash; increased connections and insight between the operations and development teams lowering the time it takes to fix a bug in production.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are just a few of the screenshots from the demos today &amp;ndash; a link to my keynote is below.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agile Planning &lt;/strong&gt;&lt;br /&gt;Planning a successful release requires making a lot of tradeoffs.&amp;nbsp; We need to decide what core customer problems we want to solve and in what priority (product backlog).&amp;nbsp; We only have so many resources available to us which must be factored in (capacity planning).&amp;nbsp; Once we&amp;rsquo;ve determined what comes next we actually have to plan out the work (sprint planning).&amp;nbsp; Finally we need to track our progress against the plan and make adjustments as we go (managing tasks).&amp;nbsp; With Visual Studio vNext we have introduced a new web based interface that implements the scrum model providing solutions for all of these issues.&amp;nbsp; Because the solution is built on TFS, the data is easily accessed in your favorite tool of choice.&amp;nbsp; You can see some examples here:&amp;nbsp;&lt;/p&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/4087.Teched-NA-_2D00_-Grooming-Product-Backlog.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/225x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/4087.Teched-NA-_2D00_-Grooming-Product-Backlog.png" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/4061.Teched-NA-_2D00_-Capacity-Planning.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/225x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/4061.Teched-NA-_2D00_-Capacity-Planning.png" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/3323.Teched-NA-TaskBoard-in-Web-Access.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/225x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/3323.Teched-NA-TaskBoard-in-Web-Access.png" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Lightweight Requirements&lt;/strong&gt;&lt;br /&gt;How often have you built exactly what the customer asked for but not what they wanted?&amp;nbsp; In general customers are working hard to provide their requests and the engineering team is working equally hard to make them happy.&amp;nbsp; At the same time there are a lot of steps involved and each point can introduce the potential to diverge between the stakedholder and the engineering team.&amp;nbsp; Visual Studio vNext provides a natural way to work through stakeholder feedback using something we are all familiar with, PowerPoint.&amp;nbsp; Using the Storyboarding plug-in for PowerPoint the product owner can quickly mock up the solution and get feedback directly from the customer before impelmentation begins.&amp;nbsp; Because the solution leverages PowerPoint, you can show linking between screens in your application, demonstrate user actions (like touch), and easily share your proposal.&amp;nbsp; The following screen shots demonstrate some of these concepts:&lt;/p&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/6560.Teched-NA-_2D00_-Phone-PPT.jpg"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/225x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/6560.Teched-NA-_2D00_-Phone-PPT.jpg" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/4152.Teched-NA-_2D00_-Sharepoint.jpg"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/225x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/4152.Teched-NA-_2D00_-Sharepoint.jpg" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/6064.Teched-NA-_2D00_-website.jpg"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/225x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/6064.Teched-NA-_2D00_-website.jpg" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/2235.Teched-NA-_2D00_-vs.jpg"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/225x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/2235.Teched-NA-_2D00_-vs.jpg" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Stakeholder Feedback&lt;br /&gt;&lt;/strong&gt;The longer the time between a user asking for a feature and the team delivering, the more likely we are to see disconnects.&amp;nbsp; Ideally we would get feedback on a regular basis to make sure what is being built is what was asked for.&amp;nbsp; To help with this, Visual Studio vNext introduces a new feedback tool (based on the Test Professional support VS2010) which allows a product owner to use the new features and provide actionable feedback.&amp;nbsp; The tool collects video and audio of the feedback session as well as the action logs (which can be turned into test cases).&amp;nbsp; This kind of rich feedback done in a timely way keeps everyone in sync.&lt;/p&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/7065.Teched-NA-_2D00_-Request.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/225x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/7065.Teched-NA-_2D00_-Request.png" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/2086.Teched-NA-_2D00_-FB.png"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/2438.Teched-NA-_2D00_-email.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/225x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/2438.Teched-NA-_2D00_-email.png" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/5282.Teched-NA-_2D00_-email.png"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/4075.Teched-NA-_2D00_-Giving-Feedback.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/225x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/4075.Teched-NA-_2D00_-Giving-Feedback.png" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Continuous Testing&lt;br /&gt;&lt;/strong&gt;Having great unit test coverage is one of the best ways to ensure quality in the final product.&amp;nbsp; With Visual Studio vNext we are enabling you to use your favorite unit testing framework integrated deeply into the IDE.&amp;nbsp; We will support MS Test, xunit, and nunit with vNext.&amp;nbsp; You will also be able to target both .NET and native C++ code.&amp;nbsp; Adding test frameworks is an extensibility point as well so if you don&amp;rsquo;t see your favorite one listed here, you can easily add it.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/7065.Teched-NA-UnitTestExplorer_2D00_Discovery.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/225x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/7065.Teched-NA-UnitTestExplorer_2D00_Discovery.png" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/2260.Teched-NA-_2D00_-UnitTestExplorer_2D00_TestResults.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/225x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/2260.Teched-NA-_2D00_-UnitTestExplorer_2D00_TestResults.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agile Quality Assurance&lt;br /&gt;&lt;/strong&gt;Once our new software has been finished by the development team we need to do our quality assurance passes.&amp;nbsp; This will include a set of functional tests that can utilize the manual and coded testing features of VS2010. For Visual Studio vNext we also wanted to provide a way for a QA professional to explore the product and look for additional issues. The new Exploratory Testing tool provides a great way to do this.&amp;nbsp; As you explore the product the tool records the entire session (audio and video), the action log of steps taken, etc. From the tool you can create a new test case, bug, take snapshots, and take detailed notes. The filtering tool also allows you to select the steps that led to finding a defect. All of these are examples of providing actionable feedback.&lt;/p&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/1423.Teched-NA-_2D00_-XT.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/1423.Teched-NA-_2D00_-XT.png" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/5706.Teched-NA-_2D00_-XT.png"&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-large;"&gt;&lt;strong&gt;System Center and Visual Studio Team Foundation Server 2010&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The relationship between the application development and the IT operations teams is critical.&amp;nbsp; We&amp;rsquo;ve just released a CTP of the new connector between System Center and Visual Studio Team Foundation Server (TFS) 2010 that facilitates the alignment between development and operations. The connector enables an operations team to&amp;nbsp;assign application performance monitoring and diagnostic information gathered by System Center to TFS for immediate attention and application incident triage by the engineering team. Using this support, the operations team can easily capture key data (like call stacks) and automatically deliver them to the engineering team (another example of actionable feedback). Microsoft will deliver a &lt;strong&gt;&lt;a href="https://connect.microsoft.com/OpsMgr/InvitationUse.aspx?ProgramID=7044&amp;amp;InvitationID=OMVS-QVYH-9D3R" title="&amp;lt;strong&amp;gt;CTP of the new connector &amp;lt;/strong&amp;gt;"&gt;CTP of the new connector &lt;/a&gt;&lt;/strong&gt;later today.&amp;nbsp; Be sure to check it out and let us know what you think!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/3122.Teched-NA-_2D00_-System-Center.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/3122.Teched-NA-_2D00_-System-Center.png" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-large;"&gt;&lt;strong&gt;Find Out More&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;&lt;strong&gt;&lt;a href="http://go.microsoft.com/?linkid=9772730" title="&amp;quot;Visual Studio vNext: Application Lifecycle Management&amp;quot; whitepaper"&gt;Visual Studio vNext: Application Lifecycle Management&amp;rdquo; whitepaper&lt;/a&gt;&lt;/strong&gt; is available today.&amp;nbsp; This is a comprehensive whitepaper that covers these topics in much more detail.&amp;nbsp; I recommend you check it out, along with the &lt;a href="http://www.microsoft.com/visualstudio/roadmap" title="Visual Studio Roadmap"&gt;Visual Studio Roadmap&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The best way to take advantage of the benefits of ALM&amp;nbsp;is to &lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/product-comparison" title="start using Visual Studio 2010 today and obtain an MSDN subscription"&gt;start using Visual Studio 2010 today and obtain an MSDN subscription&lt;/a&gt;.&amp;nbsp;&amp;nbsp; Additional helpful links to get you started can be found on our websites:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/visualstudio" title="Visual Studio website "&gt;Visual Studio website&lt;/a&gt; &amp;ndash; product information&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/vstudio" title="Visual Studio Dev Center"&gt;Visual Studio Dev Center&lt;/a&gt; &amp;ndash; technical and community information&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A video of my keynote will be available later on the Teched North America site:&lt;/p&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://northamerica.msteched.com/" title="Teched North America Keynote"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/225x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/5873.Teched-NA-_2D00_-Keynote.png" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Check out &lt;a href="http://blogs.msdn.com/b/camerons/" title="Cameron Skinner"&gt;Cameron Skinner&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/b/bharry/" title="Brian Harry"&gt;Brian Harry&lt;/a&gt;, and &lt;a href="http://blogs.msdn.com/b/amit_chatterjee/" title="Amit Chatterjee&amp;amp;rsquo;s "&gt;Amit Chatterjee&amp;rsquo;s &lt;/a&gt;blogs over the next couple of months for more details on ALM in Visual Studio vNext.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10076153" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/ALM/">ALM</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Announcement/">Announcement</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Visual+Studio+vNext/">Visual Studio vNext</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Visual+Studio+11/">Visual Studio 11</category></item><item><title>April 19th What's Happening Around Visual Studio</title><link>http://blogs.msdn.com/b/jasonz/archive/2011/04/19/april-19-what-is-happening-around-visual-studio.aspx</link><pubDate>Tue, 19 Apr 2011 21:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10076151</guid><dc:creator>Jason Zander</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10076151</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2011/04/19/april-19-what-is-happening-around-visual-studio.aspx#comments</comments><description>&lt;p&gt;&lt;o:p&gt;It's been a while since I've done a look back on what's been happening on the team. I thought this time around I'd surface up the latest posts regarding our March release of the &lt;strong&gt;&lt;a href="http://blogs.msdn.com/b/jasonz/archive/2011/03/08/announcing-visual-studio-2010-service-pack-1.aspx" title="Visual Studio 2010 Service Pack 1 (SP1)"&gt;Visual Studio 2010 Service Pack 1 (SP1)&lt;/a&gt;&lt;/strong&gt;.&amp;nbsp;&lt;/o:p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;o:p&gt;&lt;o:p&gt;&lt;a href="http://blogs.msdn.com/b/heaths/archive/2011/03/15/installing-visual-studio-2010-rtm-and-service-pack-1-together.aspx" title="Installing Visual Studio 2010 RTM and Service Pack 1 Together"&gt;&lt;strong&gt;Installing Visual Studio 2010 RTM and Service Pack 1 Together&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; -&lt;/strong&gt; Heath Stewart published a comprehensive guide for administrators and developers who may want to install both RTM and SP1 together seamlessly. &lt;/o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;o:p&gt;&lt;o:p&gt;&lt;a href="http://blogs.msdn.com/b/heaths/archive/2011/03/14/installing-visual-studio-2010-service-pack-1-may-prompt-for-source.aspx" title="Installing Visual Studio 2010 Service Pack 1 May Prompt for Source"&gt;&lt;strong&gt;Installing Visual Studio 2010 Service Pack 1 May Prompt for Source&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; -&lt;/strong&gt; Heath also posted a work around for users running into prompts for source during their install. &lt;/o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;o:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;a href="http://blogs.msdn.com/b/vstsue/archive/2011/03/15/vs-alm-march-2011-library-updates-and-new-vs-sp1-content.aspx" title="Visual Studio Library Updates"&gt;&lt;strong&gt;Visual Studio Library Updates&lt;/strong&gt;&lt;/a&gt; - Our Visual Studio ALM Developer Content Team published a collection of updated documentation for Service Pack 1.&amp;nbsp;&lt;/o:p&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;a href="http://thirdblogfromthesun.com/2011/03/new-local-help-viewer-available-in-visual-studio-2010-sp1/" title="New Local Help Viewer Available in Visual Studio 2010 SP1"&gt;&lt;strong&gt;New Local Help Viewer Available in Visual Studio 2010 SP1&lt;/strong&gt;&lt;/a&gt;- Jeff Braaten has a &lt;a href="http://thirdblogfromthesun.com/2010/10/the-story-of-help-in-visual-studio-2010-part-3/" title="series of posts "&gt;series of posts&lt;/a&gt;&amp;nbsp;related to our new Local Help Viewer.&lt;/o:p&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;a href="http://blogs.msdn.com/b/amit_chatterjee/archive/2011/03/24/test-and-lab-management-changes-in-visual-studio-service-pack-1-release.aspx" title="est and Lab Management Changes in Visual Studio Service Pack 1 Release"&gt;&lt;strong&gt;Test and Lab Management Changes in Visual Studio Service Pack 1 Release&lt;/strong&gt;&lt;/a&gt;- Check out Amit Chatterjee's posts regarding the changes made in SP1 for Test and Lab Management.&amp;nbsp; His &lt;a href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/12/10/visual-studio-2010-service-pack-1-beta-released-information-on-test-and-lab-management-changes.aspx" title="SP1 Beta 1 post "&gt;SP1 Beta 1 post &lt;/a&gt;has the majority of the changes listed that you can reference.&lt;/o:p&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/03/22/team-explorer-2010-sp1-bug-viewing-build-summary.aspx" title="Team Explorer 2010 SP1 Bug Viewing Build Summary"&gt;&lt;strong&gt;Team Explorer 2010 SP1 Bug Viewing Build Summary&lt;/strong&gt;&lt;/a&gt; - The team made a performance improvement for viewing build information from the build explorer as a late breaking change in SP1.&amp;nbsp; Unfortunately, this resulted in a bug when using Team Explorer 2010 SP1 against a TFS 2008 TFS server.&amp;nbsp; A &lt;a href="http://archive.msdn.microsoft.com/KB2522890" title="hotfix "&gt;hotfix &lt;/a&gt;was immediately released for the issue that you can download if you run into this issue.&lt;a&gt;&lt;/a&gt;&lt;a&gt;&lt;/a&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;a href="http://blogs.msdn.com/b/zainnab/archive/2011/03/22/visual-studio-2010-service-pack-1-setup-switches.aspx" title="Visual Studio 2010 Service Pack 1 Setup Switches"&gt;&lt;strong&gt;Visual Studio 2010 Service Pack 1 Setup Switches&lt;/strong&gt;&lt;/a&gt; - A quick tip on taking advantage of some of the setup switches that are available in SP1.&lt;/o:p&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;a href="http://blogs.msdn.com/b/brianhartman/archive/2011/03/31/visual-studio-2010-sp1.aspx" title="Visual Studio 2010 SP1 / Updated Report Viewer Redistributable"&gt;&lt;strong&gt;Visual Studio 2010 SP1 / Updated Report Viewer Redistributable&lt;/strong&gt;&lt;/a&gt; - Brian Hartman published a list of&amp;nbsp; fixes made&amp;nbsp;to the Report Viewer&amp;nbsp;that touched on the most common and&amp;nbsp;visible issues reported by our customers.&lt;/o:p&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;a href="http://blogs.msdn.com/b/visualstudio/archive/2011/04/13/async-ctp-refresh.aspx" title="Async CTP (SP1 Refresh)"&gt;&lt;strong&gt;Async CTP (SP1 Refresh)&lt;/strong&gt;&lt;/a&gt;- The team recently released an updated version of the Async CTP&amp;nbsp;that's compatible&amp;nbsp;with Visual Studio 2010 SP1 and Windows Phone 7.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;a href="http://blogs.msdn.com/b/lightswitch/archive/2011/03/15/visual-studio-lightswitch-beta-2-released-with-go-live-license.aspx" title="Visual Studio LightSwitch Beta 2"&gt;&lt;strong&gt;Visual Studio LightSwitch Beta 2&lt;/strong&gt;&lt;/a&gt; - The team recently released LightSwitch&amp;nbsp;Beta 2 that requires Visual Studio 2010 SP1.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="MsoNormal"&gt;If you haven't had the chance to download Service Pack&amp;nbsp;1, you can find a list of available downloads on our &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/vstudio/aa718359" title="Visual Studio Service Packs"&gt;Visual Studio Service Pack&lt;/a&gt;&lt;/strong&gt; web page.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Enjoy!&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;em&gt;Follow me at &lt;/em&gt;&lt;a href="http://twitter.com/jlzander" title="twitter.com/jlzander"&gt;&lt;span style="COLOR: #366df4"&gt;&lt;em&gt;twitter.com/jlzander&lt;/em&gt;&lt;/span&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10076151" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/News/">News</category></item><item><title>Announcing Microsoft® Visual Studio® LightSwitch™ Beta 2</title><link>http://blogs.msdn.com/b/jasonz/archive/2011/03/15/announcing-lightswitch-beta-2.aspx</link><pubDate>Tue, 15 Mar 2011 17:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10076154</guid><dc:creator>Jason Zander</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10076154</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2011/03/15/announcing-lightswitch-beta-2.aspx#comments</comments><description>&lt;p&gt;I&amp;rsquo;m happy to announce that as of 10:00 AM PDT today Microsoft&amp;reg; Visual Studio&amp;reg; LightSwitch&amp;trade; Beta 2 is available for download! MSDN subscribers using Visual Studio 2010 can download the beta immediately with general availability on Thursday, March 17. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=207267" title="Download LightSwitch Beta 2 (MSDN Subscribers with Visual Studio 2010)"&gt;Download LightSwitch Beta 2 (MSDN Subscribers with Visual Studio 2010)&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Thursday's 10:00 AM PDT general availability download will be &lt;a href="http://go.microsoft.com/fwlink/?LinkID=211226" title="here"&gt;here&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please see &amp;ldquo;&lt;a href="http://msdn.microsoft.com/en-us/lightswitch/gg699332" title="What's New in Beta 2"&gt;What&amp;rsquo;s New in Beta 2&lt;/a&gt;&amp;rdquo; for information on new capabilities, installation options, and compatibility notes for this release. Unfortunately, due to the many improvements in Beta 2, projects created in Beta 1 cannot be opened or upgraded. You can find instructions for moving your existing projects forward on the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=213808" title="LightSwitch team blog"&gt;LightSwitch team blog&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We are happy to announce that Beta 2 comes with a &amp;ldquo;Go Live&amp;rdquo; license which means you can now start using Visual Studio LightSwitch for production projects!&lt;/p&gt;
&lt;p&gt;Since the launch of &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/08/23/lightswitch-beta1-now-available-building-your-first-app.aspx" title="Beta 1"&gt;Beta 1&lt;/a&gt;, the team has been heads down in working through your feedback and has made some improvements that I think you&amp;rsquo;ll agree are pretty cool.&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Publish to Azure:&lt;/strong&gt; the Publish Wizard now provides the ability to publish a LightSwitch desktop or browser application to Windows Azure, including the application&amp;rsquo;s database to SQL Azure. The team is planning a detailed tutorial of this experience that will get posted on the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=213852" title="team blog"&gt;team blog&lt;/a&gt; later this week.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improved runtime and design-time performance:&lt;/strong&gt; Build times are 50% faster in Beta 2 and we have made the build management smarter to improve iterative F5 scenarios by up to 70%. LightSwitch Beta 2 applications will startup up to 30% faster than Beta 1. New features like static spans will include related data in a single query execution and improve the time to load data on a screen by reducing the total number of server round-trips. The middle tier data load/save pipeline has been optimized to improve throughput by up to 60%.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Runtime UI improvements:&lt;/strong&gt; Auto-complete box, better keyboard navigation, and improved end-user experience for long-running operations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Allow any authenticated Window user:&lt;/strong&gt; When Windows authorization was selected in a LightSwitch app, you previously needed to add the Windows users who are allowed to use the application into the User Administration screen of the running application. This is cumbersome in installations where there are a large number of Windows users and when you just wanted to open the app up to all Windows users. The project properties UI now allows you to authenticate any Windows user in a LightSwitch application while still using the LightSwitch authorization subsystem for determining user permissions for specific users. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/08/11/lightswitch-architectural-overviews.aspx" title="LightSwitch Architectural Overview"&gt;&lt;strong&gt;LightSwitch Architectural Overview&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Applications you build with LightSwitch follow n-tier best practices and use common .NET technologies that you are probably building upon yourself today. For an overview of LightSwitch architecture, please see "&lt;a href="http://blogs.msdn.com/b/lightswitch/archive/2010/08/06/the-anatomy-of-a-lightswitch-application-overview.aspx" title="&amp;quot;The Anatomy of a LightSwitch Application Series&amp;quot; "&gt;The Anatomy of a LightSwitch Application Series&lt;/a&gt;" on the team blog.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/5811.LSB2-Architecture.png" border="0" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I've included a detailed walk through below, to help you get your first LightSwitch application up and running using Beta 2. You may also find the following links useful as you explore LightSwitch:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn.com/lightswitch" title="LightSwitch Developer Center"&gt;LightSwitch Developer Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/lightswitch/" title="LightSwitch Team Blog"&gt;LightSwitch Team Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=213818" title="LightSwitch Feature Matrix"&gt;LightSwitch Feature Matrix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/vslightswitch" title="LightSwitch Forums"&gt;LightSwitch Forums&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://connect.microsoft.com/visualstudio" title="Feedback: Visual Studio Connect"&gt;Feedback: Visual Studio Connect&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now on to building your first application!&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;&lt;span style="font-size: x-large;"&gt;Tutorial&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;In this tutorial we are going to build a student-course registration application to be used at a local college.&amp;nbsp;There are&amp;nbsp;six parts to this tutorial. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#installation"&gt;Part 1 &amp;ndash; Installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#newproject"&gt;Part 2 &amp;ndash; Creating a New Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#data"&gt;Part 3 &amp;ndash; Starting with Data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#screens"&gt;Part 4 &amp;ndash; Creating Screens&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#relationships"&gt;Part 5 &amp;ndash; Adding Relationships&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#code"&gt;Part 6 &amp;ndash; Writing Some Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#summary"&gt;Summary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let&amp;rsquo;s get going!&amp;nbsp;&lt;/p&gt;
&lt;p id="installation"&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Part 1 &amp;ndash; Installation&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio 2010 Professional, Premium, Test Professional or Ultimate users must install &lt;a href="http://go.microsoft.com/fwlink/?LinkId=209902" title="Visual Studio 2010 SP1"&gt;Visual Studio 2010 SP1&lt;/a&gt; before installing Visual Studio LightSwitch Beta 2. Visual Studio LightSwitch Beta 1 users should uninstall Beta 1 before installing Beta 2. Also see the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=211075" title="Beta 2 readme "&gt;Beta 2 readme&lt;/a&gt; for late breaking issues. For information on known incompatible releases with Visual Studio LightSwitch Beta 2, please check out the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=213808" title="team post"&gt;team post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are two installation options available from the download link above, a web installer and a DVD ISO image:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Visual Studio LightSwitch, Beta 2 (x86) &amp;ndash; DVD (English).&lt;/strong&gt; This is an ISO image which can be burned to a disc and used by multiple users (or mounted using a utility).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Visual Studio LightSwitch, Web Install Beta 2 (x86) &amp;ndash; (English).&lt;/strong&gt; This is a web installer that will download all components incrementally and install them on a single machine.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Unless you plan to take the bits with you or hand around a DVD to co-workers, I recommend using the web installer which will lower your bandwidth requirements and eliminate the need to burn a DVD or mount an ISO. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/4718.LSB2-Image-1.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;A goal of LightSwitch is to remove the need for configuration, so all you&amp;nbsp;have to do is click &amp;ldquo;Install Now&amp;rdquo; to get going. After all components are installed, you can simply click the [Launch] button:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/1588.LSB2-Image-2.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Note:&amp;nbsp;if you had Visual Studio 2010 already installed,&amp;nbsp;you will find the new LightSwitch templates in your installation.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id="newproject"&gt;&lt;span style="font-size: large;"&gt;&lt;strong&gt;Part&amp;nbsp;2 &amp;ndash; Creating a New Project&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;In this example, I am building a simple course registration application for the staff at the Office of Registrar of a local college. This application will allow the staff to easily register courses for new or existing students. &lt;/p&gt;
&lt;p&gt;To get started, &lt;strong&gt;choose File, New Project&lt;/strong&gt;. If you installed Visual Studio 2010, you will need to select the LightSwitch templates:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/3247.LSB2-Image-3.png" border="0" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;You can choose from Visual Basic or C#. I&amp;rsquo;m going to pick Visual Basic and call the application &amp;ldquo;LightSwitchDemo.&amp;rdquo; Then&lt;strong&gt; hit [OK].&lt;/strong&gt; After a few moments your new project will come up and we can start adding data. &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id="data"&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Part 3 - Starting with Data&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;To get started we need to track students. Because working with data is such a basic operation, the initial designer gives you these options right away. We&amp;rsquo;ll get started by &lt;strong&gt;clicking on [Create new table]&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/0820.LSB2-Image-4.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;This will bring up the table designer. Start by &lt;strong&gt;changing the name of the table to &amp;ldquo;Student&amp;rdquo;&lt;/strong&gt;, which you can do by simply typing in the title bar. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/5226.LSB2-Image-5.png" border="0" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Next, &lt;strong&gt;edit the fields for the table&lt;/strong&gt; to store typical data about a student. Note the usage of domain types like Email Address and Phone Number, which provide built-in validation logic and customizable UI on the screens we create in later steps.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/8546.LSB2-Image-6.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;To ensure each student record will have a unique email address- click &lt;strong&gt;Select Email field&lt;/strong&gt; and&lt;strong&gt; check the &amp;ldquo;Include in Unique Index&amp;rdquo; in Properties&lt;/strong&gt;. This is a new Beta 2 feature.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/8865.LSB2-Image-7.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Next we will need a table for courses. To get started, &lt;strong&gt;click &amp;ldquo;New Table&amp;rdquo; button&lt;/strong&gt; in the command bar.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/2273.LSB2-Image-8.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;Edit the table name to &amp;ldquo;Course&amp;rdquo; and add new columns.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/4667.LSB2-Image-9.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;At this point we need to create some UI for our application to allow us to edit table data.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id="screens"&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Part 4 - Creating Screens &lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The most common activities for business applications are layout out your data and create screens to work with that data. In this step we will create a couple of screens to allow us to edit the table data. To start, &lt;strong&gt;right click the Screens folder in the Solution Explorer and choose "Add Screen".&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/4336.LSB2-Image-10.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;There are a very common set of screen patterns for working with data and LightSwitch includes those patterns by default. Screen templates are also an extensibility&amp;nbsp;option for LightSwitch, so you should expect Visual Studio partners to add new patterns in the future (or you can create your own with Visual Studio Professional).&lt;/p&gt;
&lt;p&gt;For our application let&amp;rsquo;s create a &amp;ldquo;New Data Screen&amp;rdquo; so we can edit our student list. On the Add New Screen dialog, &lt;strong&gt;select &amp;ldquo;New Data Screen&amp;rdquo;, then select "Student" from the Screen Data combo box&lt;/strong&gt;:&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/6305.LSB2-Image-11.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Notice that as you select the Student table, the default Screen Name updates itself to give you a reasonable unique screen name. You can always choose to update this name yourself, if you have your own naming pattern to follow. Once you have made the changes, &lt;strong&gt;click [OK]&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/6646.LSB2-Image-12.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;The Screen Designer now appears. For now, let&amp;rsquo;s just add another screen for the Course table. Again, &lt;strong&gt;right click the Screens folder in the Solution Explorer and choose "Add Screen"&lt;/strong&gt;. On the Add New Screen dialog, &lt;strong&gt;select &amp;ldquo;New Data Screen&amp;rdquo;, then select "Course" from the Screen Data combo box&lt;/strong&gt;: &lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/3187.LSB2-Image-13.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;Click [OK]&lt;/strong&gt;.&amp;nbsp;Then &lt;strong&gt;hit F5&lt;/strong&gt; (or Debug, Start Debugging from the menu). This will kick off a build of the application and start the running app:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/0066.LSB2-Image-14.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;By default your application will be a Windows desktop application. If you have&amp;nbsp;experimented with Beta 1, you will notice that Beta 2 has&amp;nbsp;improved the application start time and performance. The default Office-like theme is more refined and user-friendly. It also provides a better use of the screen real estate. You can now collapse both the task list and the ribbon. In Beta 2, we also set the display name of a field based on camel casing convention. For example, FirstName of the Student table will have &amp;ldquo;First Name&amp;rdquo; as its display name by default. &lt;/p&gt;
&lt;p&gt;The application shell is another extension&amp;nbsp;option for LightSwitch and we have Visual Studio partners working on creating new ones. This means in the future you&amp;rsquo;ll be able to select from a set of shells to build an application that looks cool (kind of like selecting PowerPoint slide deck templates). &lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll start by adding&amp;nbsp;my personal information&amp;nbsp;to the database. When done, just &lt;strong&gt;click the "Save" ribbon button&lt;/strong&gt;.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/1057.LSB2-Image-15.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Go ahead and add a few more student and course records.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/7331.LSB2-Image-16.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;The&amp;nbsp;two screens make it easy to create new data, but they&amp;rsquo;re not designed to browse and find existing records. Let&amp;rsquo;s add a screen to search for students.&lt;strong&gt; Close the running application&lt;/strong&gt; to exit debug mode and return to the Visual Studio IDE.&lt;strong&gt; Right click the Screens folder in Solution Explorer and choose "Add Screen".&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/7652.LSB2-Image-17.png" border="0" /&gt;&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;Select the &amp;ldquo;Search Data Screen&amp;rdquo; template&lt;/strong&gt; and then &lt;strong&gt;select the &amp;ldquo;Students&amp;rdquo; table&lt;/strong&gt; from Screen Data combo box, and&amp;nbsp;then &lt;strong&gt;hit [OK]&lt;/strong&gt;. Once again the screen designer will appear. Let&amp;rsquo;s just &lt;strong&gt;hit F5&lt;/strong&gt; again. &lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/3036.LSB2-Image-18.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;When you select &amp;ldquo;Search Student&amp;rdquo; from the task list, you will get the list of all the student data you have entered. Because we picked the Search template, we have searching, sorting, and paging capabilities built into the screen by default. &lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/6278.LSB2-Image-19.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Another default feature of the desktop application is Office integration. In this case, I can click on the Excel icon and get my data opened as an Excel spreadsheet.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/8357.LSB2-Image-20.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/8357.LSB2-Image-21.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Notice&amp;nbsp;that First Name is shown as a link, by default.&amp;nbsp;The link&amp;nbsp;takes you to an auto generated details screen for the student. We will show you how to customize the details screen in a bit. For now, I&amp;rsquo;d like to customize the search column order and make Last Name&amp;nbsp;appear as a link as well. To do this, click&lt;strong&gt; &amp;ldquo;Design Screen&amp;rdquo; button&lt;/strong&gt; in the upper right hand corner of the running app to enter the runtime screen designer. &lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/5141.LSB2-Image-22.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;One of the features of LightSwitch is that it allows you to make quick UI changes while the app is running in debug mode. As you change the UI tree, you get an instant preview of what your screen will look like.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/8787.LSB2-Image-23.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Select "Last Name" under Data Grid Row and check &amp;ldquo;Show as link&amp;rdquo; in Properties&lt;/strong&gt; (which is new in Beta 2).&lt;strong&gt; &lt;/strong&gt;You will see the links show up in the preview pane. &lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/5164.LSB2-Image-24.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Let&amp;rsquo;s also move the "Last Name" column before the "First Name" column by using the up arrow in the command bar. &lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/6253.LSB2-Image-25.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;Hit [Save]&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/6180.LSB2-Image-26.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;We have now exited the runtime designer and returned to the running screen. We can see our UI changes reflected in the running app.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/6180.LSB2-Image-27.png" border="0" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As a side note, if the app user resizes the grid columns,&amp;nbsp;LightSwitch will remember the user setting next time he/she runs the app again. This is also something we introduced in Beta 2. &lt;/p&gt;
&lt;p&gt;So far my application is looking pretty decent and LightSwitch is doing all the work for me. One&amp;nbsp;unfortunate behavior we&amp;nbsp;have&amp;nbsp;to deal with&amp;nbsp;is that by default our app opens the Create New Student screen every time we launch the application. The college staff won&amp;rsquo;t be creating a student that often so let&amp;rsquo;s customize that. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Close the running app and return to the Visual Studio IDE. Double-click the Properties node that&amp;rsquo;s just under the application node in the Solution Explorer.&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/7587.LSB2-Image-28.png" border="0" /&gt;&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;On the property designer page, &lt;strong&gt;select "Screen Navigation"&lt;/strong&gt; which will allow us to edit the menu structure for the application. &lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/5050.LSB2-Image-29.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;We want to make the Search Student the default start screen which will avoid trying to add a new record every time we execute the application. To do this, &lt;strong&gt;select the "Search Student" task then click [Set] button&lt;/strong&gt; to make it the startup screen. Let&amp;rsquo;s also move it up in the task list by &lt;strong&gt;clicking the up arrow&lt;/strong&gt;. When you are done, the designer should look like the following: &lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/3302.LSB2-Image-30.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Now when we&amp;nbsp;run the application, the student list comes up first and we do not get a new student screen unless we explicitly click on that task.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id="relationships"&gt;&amp;nbsp;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Part 5 - Adding Relationships&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;At this point, we have a Student and Course table but we have no way to connect them. Each student can register many courses; and each course can have many students in it. This is a classic many to many relationship which will require a new table to track instances of student-course pairs. Once again we will &lt;strong&gt;right click the "Data Sources" folder&lt;/strong&gt; and &lt;strong&gt;choose "Add Table"&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/1106.LSB2-Image-31.png" border="0" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Name the table &amp;ldquo;Enrollment&amp;rdquo; by editing the title.&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/1122.LSB2-Image-32.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Next we need to add a relationship to the Student table. &lt;strong&gt;Click the &amp;ldquo;+ Relationship&amp;hellip;&amp;rdquo; tool bar button&lt;/strong&gt;.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/3782.LSB2-Image-33.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Using the Add New Relationship dialog is one of those things that remind me why I like LightSwitch so much: it&amp;rsquo;s just easier to use than other complicated dialogue boxes. When the dialog comes up, simply &lt;strong&gt;change the To column of the Name row to our target table "Student"&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/7848.LSB2-Image-34.png" border="0" /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Notice that the dialog now shows you both the relational diagram of many to 1, as well as plain, old fashioned text to explain what you just did. Having worked on two databases and three database API sets I know how to edit this stuff by hand using SQL syntax, but this is just easier.&amp;nbsp;After your edits are complete, &lt;strong&gt;hit the [OK] button&lt;/strong&gt; to save the relationship. LightSwitch now automatically adds a new column for the relationship and updates the Student table for the foreign key: &lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/4237.LSB2-Image-35.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Let&amp;rsquo;s repeat the step again for the Course table by &lt;strong&gt;clicking the + Relationship&amp;hellip;&amp;nbsp; toolbar button&lt;/strong&gt;. Now &lt;strong&gt;change the target Name to Course&lt;/strong&gt; to establish the relationship:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/0028.LSB2-Image-36.png" border="0" /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Now &lt;strong&gt;click [OK]&lt;/strong&gt; and our many-to-many relationship has been set up through the Enrollment table.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/0044.LSB2-Image-37.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;If you double click the Student table item on the designer your focus will change to that table and you can see that the Enrollment column which has been added for you.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/0410.LSB2-Image-38.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Now let&amp;rsquo;s add a screen for the Enrollment table. As we did before,&lt;strong&gt; right click the Screens folder and add a new screen. Select the New Data Screen template and change the Screen Data to the table Enrollment.&amp;nbsp;&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/4431.LSB2-Image-39.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s &lt;strong&gt;name the screen RegisterCourse, then click [OK]&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;After the screen is created, &lt;strong&gt;hit F5 to run the application&lt;/strong&gt;. &lt;strong&gt;Click the Register Course&lt;/strong&gt; on the task list to open the screen. We will see an auto-complete box for Student and one for Course. &lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/2772.LSB2-Image-40.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Auto-complete box is another new Beta 2 feature that LightSwitch provides by default. It greatly improves the keyboard navigation experience for data entry tasks. &lt;/p&gt;
&lt;p&gt;We now have a functional application without writing a single line of code! We can create new students, search existing students, and register courses for students. To further optimize the workflow- imagine handling a phone call for an existing student. We&amp;rsquo;d want to enable a user to find the student via the Search Student screen. Wouldn&amp;rsquo;t it be nice if we could open the Register Course screen with the student auto complete box already filled out?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id="code"&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Part 6 - Writing Some Code&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To do this, we need to provide the Register Course screen with an optional screen parameter. If the parameter is set, we could use it to prefill the student information.&lt;/p&gt;
&lt;p&gt;Close the running application and go back to the Visual Studio IDE. &lt;strong&gt;Double click on the RegisterCourse screen on the Solution Explorer to open the screen designer.&lt;/strong&gt; To add a parameter to this screen, &lt;strong&gt;click &amp;ldquo;Add Data Item&amp;hellip; &amp;ldquo; button in the command bar&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/0576.LSB2-Image-41.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;In the Add Data Item dialog, &lt;strong&gt;select Local Property, Integer type, and uncheck &amp;ldquo;Is Required&amp;rdquo;&lt;/strong&gt; to make it an optional property.&amp;nbsp; &lt;strong&gt;Name the property StudentId and click [OK]&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/2235.LSB2-Image-42.png" border="0" /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;Then select the newly created StudentId in the Screen Designer.&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/0601.LSB2-Image-43.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;Check &amp;ldquo;Is Parameter&amp;rdquo; in the property pane&lt;/strong&gt; indicating this is a screen parameter.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/1106.LSB2-Image-44.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;We now have an optional screen parameter. Next, we need to write some code to check its value when the screen is being initialized. &lt;strong&gt;Use the &amp;ldquo;Write Code&amp;rdquo; dropdown button in the command bar and select RegisterCourse_InitializeDataWorkspace.&amp;nbsp;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/0640.LSB2-Image-45.png" border="0" /&gt;&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;LightSwitch now takes you to the code editor for the Register Course screen: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;Private&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt; RegisterCourse_InitializeDataWorkspace(saveChangesTo &lt;span style="color: blue;"&gt;As&lt;/span&gt; System.Collections.Generic.&lt;span style="color: #2b91af;"&gt;List&lt;/span&gt;(&lt;span style="color: blue;"&gt;Of&lt;/span&gt; Microsoft.LightSwitch.&lt;span style="color: #2b91af;"&gt;IDataService&lt;/span&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;' Write your code here.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;Me&lt;/span&gt;.EnrollmentProperty = &lt;span style="color: blue;"&gt;New&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Enrollment&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;InitializeDataWorkspace&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt; is called before the data on the screen is being loaded. We want to check for its value and find the corresponding student record. Let&amp;rsquo;s add the following code: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;Private&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt; RegisterCourse_InitializeDataWorkspace(saveChangesTo &lt;span style="color: blue;"&gt;As&lt;/span&gt; System.Collections.Generic.&lt;span style="color: #2b91af;"&gt;List&lt;/span&gt;(&lt;span style="color: blue;"&gt;Of&lt;/span&gt; Microsoft.LightSwitch.&lt;span style="color: #2b91af;"&gt;IDataService&lt;/span&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;' Write your code here.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;Me&lt;/span&gt;.EnrollmentProperty = &lt;span style="color: blue;"&gt;New&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Enrollment&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: green; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;' MY CODE: StudentId is an optional parameter. Check if it has a value. If so, run a query to fetch the student record and prefill the EnrollmentProperty&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;If&lt;/span&gt; (StudentId.HasValue) &lt;span style="color: blue;"&gt;Then&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;Me&lt;/span&gt;.EnrollmentProperty.Student = DataWorkspace.ApplicationData.Students_Single(StudentId)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;If&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s all we need to do for the Register Course screen. Next, we need to customize the student details screen to include a launch point that opens the Register Course screen with a parameter. &lt;/p&gt;
&lt;p&gt;To do this let&amp;rsquo;s create a details screen for the students. Once again &lt;strong&gt;right click the Screens folder and choose Add Screen.&lt;/strong&gt; &lt;strong&gt;Select the Details Screen template and then select the Student table from the Screen Data.&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;strong&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/2318.LSB2-Image-46.png" border="0" /&gt;&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;Make sure &amp;ldquo;Use as Default Details Screen&amp;rdquo; is checked and click [OK].&lt;/strong&gt; The screen designer for the details screen appears. &lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s add a new ribbon button to the student details screen. &lt;strong&gt;Right click on the Screen Command Bar in the content tree and select &amp;ldquo;Add Button&amp;hellip;&amp;rdquo;&amp;nbsp;&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/4762.LSB2-Image-47.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In the Add Button dialog, name the method RegisterCourse and click [OK].&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/2146.LSB2-Image-48.png" border="0" /&gt;&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;With the newly created button selected, go to Properties and click &amp;ldquo;Choose Image&amp;hellip;&amp;rdquo; link.&amp;nbsp;&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/7411.LSB2-Image-49.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/7041.LSB2-Image-50.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In the Select Image dialog, import an image from your computer for this ribbon button and click [OK].&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/0511.LSB2-Image-51.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Double clicking on the Register Course button will take us to the corresponding screen code. Add the following code:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;Private&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt; RegisterCourse_Execute()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: green; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;' MY CODE: open the Register Course screen with the student id as its screen parameter&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Application.ShowRegisterCourse(Student.Id)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Now hit F5&lt;/strong&gt; and see it in action. In the "Search Students" screen, click on one of the student links. &lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/0028.LSB2-Image-52.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;It will take us to the details screen we just created. As you can see, we&amp;rsquo;ve added a new ribbon button called &amp;ldquo;Register Course.&amp;rdquo;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-LightSwitch+Beta+2/4336.LSB2-Image-53.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Now click on the &amp;ldquo;Register Course&amp;rdquo; ribbon button.&lt;/strong&gt; It will take us to the Register Course screen with the student field already pre-set to Jason. To register a course, you only need to select a course from the auto-complete box and save the screen.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id="summary"&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Summary&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In this tutorial we&amp;rsquo;ve created our first working LightSwitch application completely from scratch.&amp;nbsp; We took advantage of some of Beta 2&amp;rsquo;s new features, along with adding some simple coding.&amp;nbsp; The team is publishing &lt;a href="http://blogs.msdn.com/b/lightswitch/" title="additional walkthroughs"&gt;additional walkthroughs&lt;/a&gt; that will go into more detail, as well as, providing guidance on publishing to Azure.&lt;/p&gt;
&lt;p&gt;With the addition of the Go Live license for Beta 2, you can see we are well on our way towards releasing the final version of LightSwitch. We are really looking forward to your feedback on Beta 2 which will help us get over the finish line.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10076154" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Tutorial/">Tutorial</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/LightSwitch/">LightSwitch</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Announcement/">Announcement</category></item><item><title>Announcing Visual Studio 2010 Service Pack 1</title><link>http://blogs.msdn.com/b/jasonz/archive/2011/03/08/announcing-visual-studio-2010-service-pack-1.aspx</link><pubDate>Tue, 08 Mar 2011 18:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10076155</guid><dc:creator>Jason Zander</dc:creator><slash:comments>53</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10076155</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2011/03/08/announcing-visual-studio-2010-service-pack-1.aspx#comments</comments><description>&lt;p&gt;I&amp;rsquo;m happy to announce that as of 10:00 AM PST the final version of the Visual Studio 2010 Service Pack 1 (SP1) is available for download! MSDN subscribers can download the bits immediately with general availability on Thursday, March 10.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=207267" title="Download Service Pack 1 (MSDN Subscribers only)"&gt;&lt;strong&gt;Download Service Pack 1 (MSDN Subscribers)&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Thursday's general availability download is &lt;/strong&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=209902" title="here"&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As described&amp;nbsp;with the &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/12/07/announcing-visual-studio-2010-service-pack-1-beta.aspx" title="SP1 Beta post"&gt;SP1 Beta post&lt;/a&gt;, in this release we have addressed some of the most requested features from customers of Visual Studio 2010 like &lt;a href="http://go.microsoft.com/fwlink/?LinkId=212876" title="better help support"&gt;better help support&lt;/a&gt;, IntelliTrace support for 64bit and SharePoint, and included Silverlight 4 Tools in the box. We also added unit testing support on .NET 3.5 and&amp;nbsp;a new&amp;nbsp;performance wizard for Silverlight, among other changes. &lt;/p&gt;
&lt;p&gt;We concentrated heavily on fixing issues you reported, including the top voted issues from Connect. The full list of changes can be found in the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=210191" title="Visual Studio"&gt;Visual Studio&lt;/a&gt; and &lt;a href="http://go.microsoft.com/fwlink/?LinkId=212641" title="Team Foundation Server"&gt;Team Foundation Server&lt;/a&gt; knowledge base articles. You can also find information about&amp;nbsp; &lt;a href="http://go.microsoft.com/fwlink/?LinkId=212875" title="SP1 compatibility"&gt;SP1 compatibility&lt;/a&gt;, &lt;a href="http://go.microsoft.com/fwlink/?LinkId=210711" title="SP1 Readme"&gt;SP1 Readme&lt;/a&gt;, and general information about SP1 in the &lt;a href="http://msdn.microsoft.com/en-us/vstudio/aa718359" title="Visual Studio Dev Center"&gt;Visual Studio Dev Center&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Today we also announced the immediate availability of&amp;nbsp;two new feature packs for MSDN Subscribers: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=212877" title="Team Foundation Server Project Server Integration Feature Pack "&gt;Team Foundation Server Project Server Integration Feature Pack&lt;/a&gt; &amp;ndash; Integration between Project Server and Team Foundation Server is a considerable advancement for organizations that want to bridge the collaboration gap between the Project Management Office and software development teams.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=212878" title="Visual Studio 2010 Load Test Feature Pack"&gt;Visual Studio 2010 Load Test Feature Pack&lt;/a&gt; &amp;ndash; Enables web performance and stress testing throughout the application lifecycle with unlimited virtual users. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since the launch of &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/04/12/ship-it-visual-studio-2010-net-framework-4-now-available.aspx" title="Visual Studio 2010 and the .NET Framework 4"&gt;Visual Studio 2010 and the .NET Framework 4&lt;/a&gt;, we have continued our momentum of focusing on improving the developer experience. Thanks to all of you who have provided feedback along the way. &lt;/p&gt;
&lt;p&gt;I hope you enjoy these releases!&lt;/p&gt;
&lt;p&gt;Jason&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10076155" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Announcement/">Announcement</category></item><item><title>Performance Troubleshooting Article and VS2010 SP1 Change</title><link>http://blogs.msdn.com/b/jasonz/archive/2011/03/03/performance-troubleshooting-article-and-vs2010-sp1-change.aspx</link><pubDate>Thu, 03 Mar 2011 16:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10136514</guid><dc:creator>Jason Zander</dc:creator><slash:comments>11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10136514</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2011/03/03/performance-troubleshooting-article-and-vs2010-sp1-change.aspx#comments</comments><description>&lt;p&gt;We are getting very near to the final release of VS2010 SP1 (if we were landing a plane the wheels would be down right now with the runway in front of us).&amp;nbsp; Thanks again for all your feedback and stay tuned for the imminent release of the product.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve concentrated heavily on fixing issues you have reported, including those related to performance and reliability.&amp;nbsp; The team has collected the most common scenarios we see that may cause issues and published it here:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a target="_blank" href="http://go.microsoft.com/fwlink/?LinkId=212538"&gt;Visual Studio Troubleshooting&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;One of the interesting patterns we have seen is that Windows XP users are twice as likely to hit hardware graphics related issues than those using Vista, Windows 7 or Windows Server.&amp;nbsp; In some cases users report slower performance of VS2010 along with the potential for crashing behavior.&amp;nbsp; Very frequently this turns out to be attributable to poor/old video drivers or other operating system components.&amp;nbsp; You can manually turn off hardware acceleration in Visual Studio if you think this is impacting you.&amp;nbsp; To do this, choose Tools, Options and turn off the automatic options:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/4667.SNAGHTML7733e9c_5F00_3D3130B3.png"&gt;&lt;img height="423" width="730" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/2273.SNAGHTML7733e9c_5F00_thumb_5F00_4A6793F9.png" alt="SNAGHTML7733e9c" border="0" title="SNAGHTML7733e9c" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Based on the number of machine reports we have found with video driver issues, we are taking the step of turning off hardware graphics acceleration in Visual Studio by default for Windows XP users when you install the final version of VS2010 SP1.&amp;nbsp; This change will only impact the Visual Studio IDE, not other applications or your version of Windows.&amp;nbsp; You can also easily turn hardware acceleration back on using the Tools, Options dialog above.&lt;/p&gt;
&lt;p&gt;I generally really hate making setting changes like this; as a developer I don&amp;rsquo;t like it when my environment changes defaults.&amp;nbsp; At the same time I&amp;rsquo;ve seen enough data about the issues people are hitting today and I want to ensure everyone has a good experience.&amp;nbsp; I&amp;rsquo;m blogging about this change now to provide the background on the decision as early as possible.&lt;/p&gt;
&lt;p&gt;Thanks again for your feedback on VS2010 SP1 and get ready for downloads!&lt;/p&gt;
&lt;p&gt;Jason&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10136514" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Feedback/">Feedback</category></item><item><title>Visual Studio Jobs</title><link>http://blogs.msdn.com/b/jasonz/archive/2011/02/15/visual-studio-jobs.aspx</link><pubDate>Tue, 15 Feb 2011 16:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10076148</guid><dc:creator>Jason Zander</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10076148</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2011/02/15/visual-studio-jobs.aspx#comments</comments><description>&lt;p&gt;Often times when I'm attending conferences I am asked if Visual Studio is hiring.&amp;nbsp; Here are a few links&amp;nbsp;regarding &lt;strong&gt;open positions within Visual Studio&lt;/strong&gt; and some&amp;nbsp;additional related links that I think are helpful for staying connected&amp;nbsp;with the&amp;nbsp;community.&amp;nbsp; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://bit.ly/dJbMGm" title="Visual Studio Jobs"&gt;&lt;span style="font-size: large;"&gt;Visual Studio Jobs&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.facebook.com/#!/visualstudio" title="Visual Studio (Facebook Page)"&gt;Visual Studio (Facebook Page)&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://twitter.com/VisualStudio" title="Visual Studio (Twitter)"&gt;Visual Studio (Twitter)&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;General Microsoft Career Links&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.facebook.com/MicrosoftCareers" title="Microsoft Careers (Facebook Page)"&gt;Microsoft Careers (Facebook Page)&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://twitter.com/Microsoft_jobs" title="Microsoft Jobs (Twitter)"&gt;Microsoft Jobs (Twitter)&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://twitter.com/MSGlobalCareers" title="Microsoft Global Careers (Twitter)"&gt;Microsoft Global Careers (Twitter)&amp;nbsp;&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you're interested in exploring a career with the Visual Studio engineering team, I recommend you check out our &lt;a href="http://bit.ly/dJbMGm" title="open positions"&gt;open positions&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10076148" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/News/">News</category></item><item><title>January 14th What's Happening Around Visual Studio</title><link>http://blogs.msdn.com/b/jasonz/archive/2011/01/14/january-14-what-is-happening-around-visual-studio.aspx</link><pubDate>Sat, 15 Jan 2011 00:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10076147</guid><dc:creator>Jason Zander</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10076147</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2011/01/14/january-14-what-is-happening-around-visual-studio.aspx#comments</comments><description>&lt;p&gt;Quick recap of what's been happening on the team.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/willy-peter_schaub/archive/2011/01/10/rangers-highlights-of-2010.aspx" title="Rangers Highlights of 2010"&gt;&lt;strong&gt;Rangers Highlights of 2010&lt;/strong&gt;&lt;/a&gt; - Learn more about the Visual Studio ALM Rangers and the&amp;nbsp;11 Rangers solutions they shipped in 2010. To keep up-to-date, I recommend following their new Twitter feed &lt;a href="http://twitter.com/#!/wpschaub" title="/wpschaub"&gt;twitter.com/wpschaub&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/vbteam/archive/2011/01/10/visual-basic-code-examples.aspx" title="Visual Basic Code Examples"&gt;&lt;strong&gt;Visual Basic Code Examples&lt;/strong&gt;&lt;/a&gt; - Check out all the code samples the VB Team has recently made available.&amp;nbsp; If you see anything missing, be sure to let them know via the &lt;a href="http://dotnet.uservoice.com/forums/87171-visual-basic-content" title="VB code wishlist"&gt;VB code wishlist&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/allclark/archive/2011/01/13/using-the-schemas-to-edit-work-item-types-and-process-tempalates-for-team-foundation-in-visual-studio.aspx" title="Using the Schemas to Edit Work Item Types and Process Templates"&gt;&lt;strong&gt;Using the Schemas to Edit Work Item Types and Process Templates&lt;/strong&gt;&lt;/a&gt; - Team Foundation schema files are available on Code Gallery. Check out Allen Clark's post to learn more.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/lightswitch/archive/2011/01/13/using-custom-controls-to-enhance-lightswitch-application-ui-part-1.aspx" title="Using Customer Controls to Enhance your LightSwitch Application UI - Part 1"&gt;&lt;strong&gt;Using Customer Controls to Enhance your LightSwitch Application UI - Part 1&lt;/strong&gt;&lt;/a&gt; - Karol Zadora-Przylecki&amp;nbsp;walks through how you can use custom Silverlight controls to enhance UI of LightSwitch applications.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/12/19/parallelism-in-the-cloud-cluster-and-client.aspx" title="Parallelism: In the Cloud, Cluster and Client"&gt;&lt;strong&gt;Parallelism: In the Cloud, Cluster and Client&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;- Check out Amit Chatterjee's post that talks about the trends in Parallelism with a bit of "testing" woven in.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/01/05/urban-turtle-for-scrum-and-tfs.aspx" title="Urban Turtle for Scrum and TFS"&gt;&lt;strong&gt;Urban Turtle for Scrum and TFS&lt;/strong&gt;&lt;/a&gt; - Brian Harry continues his series about "TFS as an open platform".&amp;nbsp; Learn more about these 3rd party enhancements in TFS.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/vbteam/archive/2011/01/10/vb-core-new-compilation-mode-in-visual-studio-2010-sp1.aspx" title="VB Core - New Compilation Mode in Visual Studio 2010 SP1"&gt;&lt;strong&gt;VB Core - New Compilation Mode in Visual Studio 2010 SP1&lt;/strong&gt;&lt;/a&gt; - Learn about this new compiler feature that enables VB to target new platforms that were not previously supported.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/01/05/japanese-team-explorer-everywhere-sp1-beta-available.aspx" title="Japanese Team Explorer Everywhere SP1 Beta Available"&gt;&lt;strong&gt;Japanese Team Explorer Everywhere SP1 Beta Available&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;Check out Brian Harry's post to learn more about this&amp;nbsp;recent Japanese&amp;nbsp;release.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/robertgreen/archive/2011/01/10/where-do-i-put-my-data-code-in-a-lightswitch-application.aspx" title="Where do I put my Data Code in a LightSwitch Application?"&gt;&lt;strong&gt;Where do I put my Data Code in a LightSwitch Application?&lt;/strong&gt;&lt;/a&gt; - Robert Green&amp;nbsp;walks thorugh an introduction to data-related tasks.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0735645248?ie=UTF8&amp;amp;tag=msdn-vs-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0735645248" title="Second Edition of the MSBuild and Team Foundation Build book released"&gt;&lt;strong&gt;Using MSBuild and Team Foundation Build&lt;/strong&gt;&lt;/a&gt; - The second edition of this popular book was just released.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/vcblog/archive/2011/01/07/rvalue-references-and-type-traits-video-introduction-to-the-stl-parts-9-and-10.aspx" title="Standard Template Library Video Lecture Series"&gt;&lt;strong&gt;Standard Template Library Video Lecture Series&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;- Stephan Lavavej produced a&amp;nbsp;ten part series on the general C++ library that has been very popular on Channel 9.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Follow me at &lt;a href="http://twitter.com/jlzander" title="twitter.com/jlzander"&gt;&lt;span style="color: #366df4;"&gt;twitter.com/jlzander&lt;/span&gt;&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10076147" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/News/">News</category></item><item><title>Tutorial: Dynamic Tile Push Notification for Windows Phone 7</title><link>http://blogs.msdn.com/b/jasonz/archive/2011/01/03/tutorial-dynamic-tile-push-notification-for-windows-phone-7.aspx</link><pubDate>Mon, 03 Jan 2011 19:24:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10111221</guid><dc:creator>Jason Zander</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10111221</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2011/01/03/tutorial-dynamic-tile-push-notification-for-windows-phone-7.aspx#comments</comments><description>&lt;p&gt;As I mentioned in my &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/12/23/windows-phone-7-useful-links-for-tile-push-notifications.aspx" target="_blank"&gt;last post&lt;/a&gt;, I wanted to update my Tip Express application with dynamic tile notifications.&amp;#160; The basic idea is very simple: push the user data from the application to the pinned tile on the home page using the background theme the user has chosen (this isn’t exactly a killer feature for this application, but it gives me a good excuse to play with channel notifications).&lt;/p&gt;  &lt;p&gt;There is plenty of overview information on the various &lt;a href="http://msdn.microsoft.com/en-us/library/ff941124(v=VS.92).aspx" target="_blank"&gt;types of notifications&lt;/a&gt; (Raw, Toast, and Tile) so I won’t repeat that here.&amp;#160; In my case I care about Tile notifications and will concentrate on that.&amp;#160; The concepts themselves are not that complicated but there are a lot of components to keep track of.&amp;#160; I found it was helpful to create a one page diagram of the flow:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/8741.image_5F00_6FCE87EB.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/2477.image_5F00_thumb_5F00_1E6490CE.png" width="920" height="487" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now let’s walk through the various components and look at some source code (note that I have borrowed code snippets from some of the links I posted above to create my sample code).&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h3&gt;&lt;u&gt;Step 1:&amp;#160; Establish a Channel on the Client Device&lt;/u&gt;&lt;/h3&gt;  &lt;p&gt;The first step happens in our application by establishing a channel with the Push Client running on the device using the HttpNotificationChannel class.&amp;#160; The most important piece of data from this process is the ChannelUri which will be used to identify the device on the network – all communication back to the phone will require this value.&amp;#160; I also found it handy to create a unique Guid for the device which could be used by my service to index each device uniquely (the URI is quite long).&amp;#160; &lt;/p&gt;  &lt;p&gt;Once the channel is created you will be able to Find it on subsequent execution of your application.&amp;#160; With a valid Channel, we’ll save off the ChannelUri and add some event handlers:&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; ChannelName = &lt;span style="color: #006080"&gt;&amp;quot;MyAppChannel&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Uri ChannelUri = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; HttpNotificationChannel Channel = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color: #008000"&gt;// Step 1:  Setup the channel with the push service.  We'll get a URI required for future communications.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; SetupChannel()&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     Channel = HttpNotificationChannel.Find(ChannelName);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Channel == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;         Channel = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; HttpNotificationChannel(ChannelName);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;         Channel.ChannelUriUpdated += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; EventHandler&amp;lt;NotificationChannelUriEventArgs&amp;gt;(Channel_ChannelUriUpdated);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;         Channel.ErrorOccurred += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; EventHandler&amp;lt;NotificationChannelErrorEventArgs&amp;gt;(Channel_ErrorOccurred);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;         Channel.Open();&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;         Channel.ChannelUriUpdated += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; EventHandler&amp;lt;NotificationChannelUriEventArgs&amp;gt;(Channel_ChannelUriUpdated);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;         Channel.ErrorOccurred += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; EventHandler&amp;lt;NotificationChannelErrorEventArgs&amp;gt;(Channel_ErrorOccurred);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;         ChannelUriSetup(Channel.ChannelUri);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ChannelUriSetup(Uri uri)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum25"&gt;  25:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum26"&gt;  26:&lt;/span&gt;     ChannelUri = uri;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum27"&gt;  27:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In my application I want to generate my own background tile (which I will host on my server) and have the Tile bound to that image.&amp;#160; We’ll use Channel.BindToShellTile() to accomplish this, passing in my domain name (“http://www.tipexpress.net/”) as the URI collection:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;// Step 1 (part 2):  Whenever the Channel Uri is updated, save the content and bind.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Channel_ChannelUriUpdated(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, NotificationChannelUriEventArgs e)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     var uris = GetTileNotificationUris();&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     Channel.BindToShellTile(uris);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     ChannelUriSetup(e.ChannelUri);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; System.Collections.ObjectModel.Collection&amp;lt;Uri&amp;gt; GetTileNotificationUris()&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#if&lt;/span&gt; PUBLIC_HOST&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; domainPath = &lt;span style="color: #006080"&gt;&amp;quot;http://www.tipexpress.net/&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#else&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; domainPath = &lt;span style="color: #006080"&gt;&amp;quot;http://localhost:51046/&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#endif&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;     var uris = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.Collections.ObjectModel.Collection&amp;lt;Uri&amp;gt; { &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Uri(domainPath) };&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; uris;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Channel_ErrorOccurred(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, NotificationChannelErrorEventArgs e)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt;     Debug.WriteLine(&lt;span style="color: #006080"&gt;&amp;quot;**** Failed channel registration:  &amp;quot;&lt;/span&gt; + e.ToString());&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;That’s all we need to do for this step.&amp;#160; From this point on as notifications are sent to the device, the Push Client will do the right work for us, including updating the Tile when the application is not running.&lt;/p&gt;

&lt;h3&gt;&lt;u&gt;Step 2:&amp;#160; Register With My Service&lt;/u&gt;&lt;/h3&gt;

&lt;p&gt;Now that our device is ready to go, we need to let our own service know it exists and is interested in updates.&amp;#160; This can be accomplished using ordinary web services (WCF, asmx, etc).&amp;#160; The key thing required to track and communicate with the device is the ChannelUri from Step 1.&amp;#160; Generating a unique Guid on the device can also be a handy way to quickly identify the device on the server (the ChannelUri, while unique, is quite long).&amp;#160; You can find sample code for creating a unique Guid and saving it in isolated storage on Jeff Fansler’s blog &lt;a href="http://www.thisisfanzoo.com/Blog/JeffF/archive/2010/08/02/a-really-long-post-about-the-windows-phone-7-push.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The goal for my application is to push the totals the user has entered in the application to the Tile pinned on the main page with a background that matches the Accent Theme currently in use.&amp;#160; I’ll solve all of this by having a service method as follows:&lt;/p&gt;

&lt;p&gt;&lt;font face="Courier New"&gt;public void RegisterClientDevice(Guid DeviceId, string ChannelUri, string AccentColor, 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string BillAmount, string TipTotal, string TotalAmount)&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;pre&gt;&lt;font face="Calibri"&gt;AccentColor can be found easily through the current application settings as follows:&lt;/font&gt;&lt;/pre&gt;

&lt;blockquote&gt;
  &lt;pre&gt;Color accent = (Color)Application.Current.Resources[&amp;quot;PhoneAccentColor&amp;quot;];&lt;/pre&gt;

  &lt;pre&gt;string AccentColor = accent.ToString();&lt;br /&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;font face="Calibri"&gt;&lt;/font&gt;

&lt;pre&gt;&lt;font face="Calibri"&gt;This string version of the color can easily be returned into a Color object using ColorTranslator:&lt;/font&gt;&lt;/pre&gt;

&lt;blockquote&gt;
  &lt;pre&gt;Color accent = ColorTranslator.FromHtml(AccentColor);&lt;br /&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;font face="Calibri"&gt;I now have everything I need to generate the tile.&amp;#160; The tile itself must be a PNG with dimensions of 173x173 pixels.&amp;#160; So for example if my background is currently set to Green, I would wind up with a tile like this:&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/2475.bb20e3e9_2D00_866a_2D00_4828_2D00_baa5_2D00_746ca0baedd1_5F00_43EE0E2F.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="bb20e3e9-866a-4828-baa5-746ca0baedd1" border="0" alt="bb20e3e9-866a-4828-baa5-746ca0baedd1" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/5773.bb20e3e9_2D00_866a_2D00_4828_2D00_baa5_2D00_746ca0baedd1_5F00_thumb_5F00_788E6A6A.png" width="138" height="138" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;font face="Calibri"&gt;The application Title is a field we will set when we do the push and provides us with another piece of customizable data (I’ve included the Tile generation code below if you are interested).&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font face="Calibri"&gt;There are various options for designing the server. For my test version I simply indexed the DeviceId Guid into a data structure and generated a local PNG for the tile to the file system.&amp;#160; This allowed me to easily return a full URL for the image in the packet.&amp;#160; Now that the test system is up and running my next project will be to introduce a SQL database to track everything.&amp;#160; My tiles are only 4KB in size and the database approach will make it easier to prune old data, handle locking, etc.&amp;#160; I won’t be covering that in this post; just follow standard web server design.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;With the tile generated we can move onto the next step, pushing the notification back to the client through the push service.&lt;/p&gt;

&lt;h3&gt;&lt;u&gt;Step 3:&amp;#160; Notify the Microsoft Push Service of Any Interesting Events&lt;/u&gt;&lt;/h3&gt;

&lt;p&gt;Our service is now tracking clients through their ChannelUri and preferences that have been sent directly to us.&amp;#160; The job of the service now is to figure out interesting data on some interval and update the client(s).&amp;#160; As an example if I were writing an email client, I would want to check for new messages every so often and send out a count of un-fetched mail (as the built-in application does).&amp;#160; Weather applications push the current temperature and conditions.&amp;#160; Etc.&amp;#160; My sample does not really monitor remote data; the goal is to allow the user to have their data on the tile.&amp;#160; Given this I want to push the new tile information back immediately after I generate the tile.&lt;/p&gt;

&lt;p&gt;I played with many examples while doing this but found the sample code from &lt;a href="http://blogs.msdn.com/b/benwilli/archive/2010/09/03/wp7-notifications.aspx" target="_blank"&gt;benwilli&lt;/a&gt; to be the easiest to adopt.&amp;#160; The code itself is a simple HTTP POST operation with an XML payload describing the tile update.&amp;#160; The POST is sent to the ChannelUri created back in Step 1:&lt;/p&gt;

&lt;pre&gt;HttpWebRequest sendNotificationRequest = (HttpWebRequest)WebRequest.Create(ChannelUri);&lt;br /&gt;&lt;/pre&gt;

&lt;p&gt;For my application I will specify the URL to the background tile and send along the application title (I do not have a count):&lt;/p&gt;

&lt;pre&gt;notify.SendTileNotification(null, device.UriTilePath, 0, TileTitle);&lt;br /&gt;&lt;/pre&gt;

&lt;p&gt;Ultimately this causes the following (example, formatted by hand for readability) payload to be sent to the Microsoft Push Service:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;quot;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #800000"&gt;xml&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;=\&lt;span style="color: #0000ff"&gt;&amp;quot;1.0\&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;encoding&lt;/span&gt;=\&lt;span style="color: #0000ff"&gt;&amp;quot;utf-8\&amp;quot;&lt;/span&gt;?&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;wp:Notification&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns:wp&lt;/span&gt;=\&lt;span style="color: #0000ff"&gt;&amp;quot;WPNotification\&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;wp:Tile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;wp:BackgroundImage&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;http://localhost:51046/UserTiles/005fdf37-d5e4-4497-a4a8-a0252ec8e685.png&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;wp:BackgroundImage&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;wp:Count&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;wp:Count&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;wp:Title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Tip Express&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;wp:Title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;wp:Tile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;wp:Notification&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&amp;quot;&lt;/pre&gt;
&lt;!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The send code will add X-NotificationClass with the value “1” to the header which means the tile update should be sent immediately.&amp;#160; My usage case is for people to be able to see the tile update immediately when they start their phone.&amp;#160; If my updates were less critical I could use one of the other options which gives the push service the option to do better scheduling.&lt;/p&gt;

&lt;p&gt;That’s all for the service code.&amp;#160; At this point it will simply register new clients, accept updates, publish new tiles for each user, and push them back. &lt;/p&gt;

&lt;h3&gt;&lt;u&gt;Step 4:&amp;#160; Microsoft Push Service Communicates with Device&lt;/u&gt;&lt;/h3&gt;

&lt;p&gt;The great news about this step is there is nothing for us to do :)&amp;#160; The Push Service is provided by Microsoft for free and solves solves two key problems:&amp;#160; (1) the service runs at scale world wide making updates more efficient, and (2) your application doesn’t need to be active for the device to receive updates.&amp;#160; As updates come into the system, the Push Service will distribute them to the appropriate device which brings us to the last step.&lt;/p&gt;

&lt;h3&gt;&lt;u&gt;Step 5:&amp;#160; Push Client Updates Tiles / Application&lt;/u&gt;&lt;/h3&gt;

&lt;p&gt;There is nothing for us to do on this step either.&amp;#160; The Push Client will receive updates and handle them on the device.&amp;#160; In my case I bound the tile to the URL which was sent so the Push Client will update the pinned tile to contain that image.&amp;#160; If I had registered to receive any notifications directly into my application (and it was running), then the Push Client would also dispatch those updates to my code.&amp;#160; This would allow me to funnel data right into my executing application UI.&lt;/p&gt;

&lt;p&gt;The final results can be seen by running the application.&amp;#160; In the first step I have my application pinned to the home screen with my default (transparent) application icon:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/5518.image1_5F00_6A4FF17A.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/0334.image1_5F00_thumb_5F00_69E3BE85.png" width="199" height="332" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The user then runs the application and enters some data:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/4628.image_5F00_507BBB4B.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/5125.image_5F00_thumb_5F00_3AB1D2EE.png" width="201" height="335" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In a new “tiles” pivot item I have added, I give the user the ability to save their current data as a tile (I’m not showing all of the permissions related code):&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/5706.image_5F00_4817E5F4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/1401.image_5F00_thumb_5F00_07759985.png" width="200" height="333" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now after the application exits and the tile updates, you can see the generated tile on the home screen:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/3554.image9_5F00_0DBC7013.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/1004.image9_5F00_thumb_5F00_0D503D1E.png" width="200" height="333" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since we give the accent color to the service to generate the tile, it will handle any color currently selected (both the Microsoft built-in themes and any future OEM themes that may be enabled).&amp;#160; In this case the phone must communicate with our service so we know the accent color has been updated which means executing the application.&amp;#160; If the user changes the color to red then runs the application again with a &amp;quot;Save to Tile” operation, you would get the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/7268.image_5F00_45FAE72B.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/8345.image_5F00_thumb_5F00_5360FA31.png" width="203" height="338" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s it!&lt;/p&gt;

&lt;h3&gt;&lt;u&gt;Errata&lt;/u&gt;&lt;/h3&gt;

&lt;p&gt;I found a few interesting things while working on this code:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Counts&lt;/strong&gt; – &lt;/em&gt;Pushing a Tile notification with &amp;lt;count&amp;gt; specified gives you the small black bubble.&amp;#160; Most of the built-in applications such as Messaging and Email have their own custom drawn backgrounds with the count incorporated into them.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/2313.SNAGHTML37412a0e_5F00_56FF150E.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML37412a0e" border="0" alt="SNAGHTML37412a0e" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/6204.SNAGHTML37412a0e_5F00_thumb_5F00_3677D55C.png" width="277" height="149" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also found that once I pushed a &amp;lt;count&amp;gt; value to the Tile, it would stay resident on the device.&amp;#160; The only way I found to remove it was to send the value 0 for the count:&amp;#160;&amp;#160; “&amp;lt;wp:Count&amp;gt;0&amp;lt;/wp:Count&amp;gt;”&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Background Tile Restrictions&lt;/strong&gt; – &lt;/em&gt;If you post a background tile, it must be less than 80KB and needs to load in less than 15 seconds (see MSDN &lt;a href="http://msdn.microsoft.com/en-us/library/ff402545(VS.92).aspx" target="_blank"&gt;reference&lt;/a&gt;).&amp;#160; The background tile points to a PNG.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Emulator and Channel URI&lt;/strong&gt; – &lt;/em&gt;At least a couple of times I found that my updates to the Push Service would fail with various exceptions (“412 Precondition Failed” for example).&amp;#160; I did find that shutting down and restarting the emulator from scratch would fix some of these transient issues (this one deserves more investigation to determine if there is more code required in the client to reset state on the fly).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Tile Generation Code&lt;/strong&gt; –&lt;/em&gt; The actual PNG generation is old school at this point (many web sites use these techniques to generate images on the fly).&amp;#160; The trickier part of this sample was getting all of the right data plumbed through the system.&amp;#160; Nonetheless, I wanted to provide my sample code in case you are interested in doing something similar:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; TileBackground&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; MarginSpacing = 15;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; LineMargin = 5;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; TileDimension = 173;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; Single FontSize = 28;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; PenWidth = 2;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; Color FontColor = Color.White;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; Spacing = 15;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; MaxWidth = 0;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;     Bitmap objBmpImage = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;     Font objFont = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;     SolidBrush brushFont = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;     Graphics objGraphics = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;     Pen objPen = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;     ~TileBackground()&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (objGraphics != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt;             {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt;                 objGraphics.Dispose();&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum25"&gt;  25:&lt;/span&gt;                 objPen.Dispose();&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum26"&gt;  26:&lt;/span&gt;                 brushFont.Dispose();&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum27"&gt;  27:&lt;/span&gt;                 objFont.Dispose();&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum28"&gt;  28:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum29"&gt;  29:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum30"&gt;  30:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception e)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum31"&gt;  31:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum32"&gt;  32:&lt;/span&gt;             Debug.WriteLine(&lt;span style="color: #006080"&gt;&amp;quot;Failure in ~TileBackground on clenaup: &amp;quot;&lt;/span&gt; + e.ToString());&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum33"&gt;  33:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum34"&gt;  34:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum35"&gt;  35:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum36"&gt;  36:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum37"&gt;  37:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// Generates a tile of the correct dimensions and color with all data included,&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum38"&gt;  38:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// then persists the content to a file.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum39"&gt;  39:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum40"&gt;  40:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;param name=&amp;quot;stream&amp;quot;&amp;gt;File to save the tile to&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum41"&gt;  41:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;param name=&amp;quot;AccentColor&amp;quot;&amp;gt;Background color for the tile&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum42"&gt;  42:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;param name=&amp;quot;Values&amp;quot;&amp;gt;Strings to include in tile&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum43"&gt;  43:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; GenerateToFile(System.IO.Stream stream, &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; AccentColor, &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] Values)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum44"&gt;  44:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum45"&gt;  45:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum46"&gt;  46:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum47"&gt;  47:&lt;/span&gt;             Bitmap bmp = GenerateBaseLayout(AccentColor, Values);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum48"&gt;  48:&lt;/span&gt;             SaveToPNG(bmp, stream);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum49"&gt;  49:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum50"&gt;  50:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception e)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum51"&gt;  51:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum52"&gt;  52:&lt;/span&gt;             System.Diagnostics.Debug.WriteLine(&lt;span style="color: #006080"&gt;&amp;quot;Tile generation failed: &amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum53"&gt;  53:&lt;/span&gt;             System.Diagnostics.Debug.WriteLine(String.Format(&lt;span style="color: #006080"&gt;&amp;quot;  Path='{0}', AccentColor='{1}', Values='{2}','{3}','{4}'&amp;quot;&lt;/span&gt;,&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum54"&gt;  54:&lt;/span&gt;                 stream, AccentColor, Values[0], Values[1], Values[2]));&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum55"&gt;  55:&lt;/span&gt;             System.Diagnostics.Debug.WriteLine(e.ToString());&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum56"&gt;  56:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum57"&gt;  57:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum58"&gt;  58:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum59"&gt;  59:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum60"&gt;  60:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// Saves the given bitmap to a stream with high quality encoding.  Sample code&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum61"&gt;  61:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// referenced from:  http://stackoverflow.com/questions/41665/bmp-to-jpg-png-in-c&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum62"&gt;  62:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum63"&gt;  63:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;param name=&amp;quot;bmp&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum64"&gt;  64:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;param name=&amp;quot;path&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum65"&gt;  65:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; SaveToPNG(Bitmap bmp, System.IO.Stream stream)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum66"&gt;  66:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum67"&gt;  67:&lt;/span&gt;         EncoderParameters encoderParameters = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; EncoderParameters(1);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum68"&gt;  68:&lt;/span&gt;         encoderParameters.Param[0] = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum69"&gt;  69:&lt;/span&gt;         bmp.Save(stream, GetEncoder(ImageFormat.Png), encoderParameters);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum70"&gt;  70:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum71"&gt;  71:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum72"&gt;  72:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; ImageCodecInfo GetEncoder(ImageFormat format)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum73"&gt;  73:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum74"&gt;  74:&lt;/span&gt;         ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum75"&gt;  75:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (ImageCodecInfo codec &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; codecs)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum76"&gt;  76:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum77"&gt;  77:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (codec.FormatID == format.Guid)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum78"&gt;  78:&lt;/span&gt;             {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum79"&gt;  79:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; codec;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum80"&gt;  80:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum81"&gt;  81:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum82"&gt;  82:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum83"&gt;  83:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum84"&gt;  84:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum85"&gt;  85:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum86"&gt;  86:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum87"&gt;  87:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// Generate a tile of the correct dimensions and color and then add each line of text&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum88"&gt;  88:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// to the tile itself.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum89"&gt;  89:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum90"&gt;  90:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;param name=&amp;quot;AccentColor&amp;quot;&amp;gt;Background color for the tile&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum91"&gt;  91:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;param name=&amp;quot;Values&amp;quot;&amp;gt;Strings to display&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum92"&gt;  92:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;returns&amp;gt;Bitmap image of correct color and data&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum93"&gt;  93:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Bitmap GenerateBaseLayout(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; AccentColor, &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] Values)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum94"&gt;  94:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum95"&gt;  95:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Values.Length &amp;lt;= 0)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum96"&gt;  96:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum97"&gt;  97:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum98"&gt;  98:&lt;/span&gt;         &lt;span style="color: #008000"&gt;// Create the key resources used to render the tile.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum99"&gt;  99:&lt;/span&gt;         objBmpImage = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Bitmap(TileDimension, TileDimension);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum100"&gt; 100:&lt;/span&gt;         objFont = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Font(&lt;span style="color: #006080"&gt;&amp;quot;Arial&amp;quot;&lt;/span&gt;, FontSize, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum101"&gt; 101:&lt;/span&gt;         brushFont = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SolidBrush(FontColor);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum102"&gt; 102:&lt;/span&gt;         objPen = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Pen(FontColor, PenWidth);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum103"&gt; 103:&lt;/span&gt;         objGraphics = Graphics.FromImage(objBmpImage);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum104"&gt; 104:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum105"&gt; 105:&lt;/span&gt;         &lt;span style="color: #008000"&gt;// Figure out the height of the font and sizing information.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum106"&gt; 106:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; FontHeight = (&lt;span style="color: #0000ff"&gt;float&lt;/span&gt;)objGraphics.MeasureString(Values[0], objFont).Height;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum107"&gt; 107:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum108"&gt; 108:&lt;/span&gt;         Spacing = FontHeight * 0.8F;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum109"&gt; 109:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; yLocation = MarginSpacing;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum110"&gt; 110:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum111"&gt; 111:&lt;/span&gt;         &lt;span style="color: #008000"&gt;// Fill the rectangle to the accent color from the user.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum112"&gt; 112:&lt;/span&gt;         Color accent = ColorTranslator.FromHtml(AccentColor);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum113"&gt; 113:&lt;/span&gt;         objGraphics.Clear(accent);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum114"&gt; 114:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum115"&gt; 115:&lt;/span&gt;         objGraphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum116"&gt; 116:&lt;/span&gt;         objGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum117"&gt; 117:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum118"&gt; 118:&lt;/span&gt;         &lt;span style="color: #008000"&gt;// Figure out the length of the longest string for the summary lines and add some extra pixels.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum119"&gt; 119:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; [] LineWidth = GetLineWidths(Values);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum120"&gt; 120:&lt;/span&gt;         MaxWidth = LineWidth.Max() + LineMargin;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum121"&gt; 121:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum122"&gt; 122:&lt;/span&gt;         &lt;span style="color: #008000"&gt;// Add each string to the tile placing a single line after the first two and a double&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum123"&gt; 123:&lt;/span&gt;         &lt;span style="color: #008000"&gt;// line after all the numbers.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum124"&gt; 124:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; strNum = 0;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum125"&gt; 125:&lt;/span&gt;         AddString(&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; yLocation, Values[strNum], LineWidth[strNum]);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum126"&gt; 126:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum127"&gt; 127:&lt;/span&gt;         ++strNum;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum128"&gt; 128:&lt;/span&gt;         AddString(&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; yLocation, Values[strNum], LineWidth[strNum]);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum129"&gt; 129:&lt;/span&gt;         DrawLine(&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; yLocation, MaxWidth);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum130"&gt; 130:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum131"&gt; 131:&lt;/span&gt;         ++strNum;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum132"&gt; 132:&lt;/span&gt;         AddString(&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; yLocation, Values[strNum], LineWidth[strNum]);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum133"&gt; 133:&lt;/span&gt;         DrawLine(&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; yLocation, MaxWidth);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum134"&gt; 134:&lt;/span&gt;         DrawLine(&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; yLocation, MaxWidth);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum135"&gt; 135:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum136"&gt; 136:&lt;/span&gt;         &lt;span style="color: #008000"&gt;// Finalize the image and return.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum137"&gt; 137:&lt;/span&gt;         objGraphics.Flush();&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum138"&gt; 138:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; (objBmpImage);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum139"&gt; 139:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum140"&gt; 140:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum141"&gt; 141:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum142"&gt; 142:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// Get the width of the given strings.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum143"&gt; 143:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum144"&gt; 144:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;float&lt;/span&gt;[] GetLineWidths(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] Values)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum145"&gt; 145:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum146"&gt; 146:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; [] rtn = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;float&lt;/span&gt;[Values.Length];&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum147"&gt; 147:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i=0; i &amp;lt; Values.Length; i++)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum148"&gt; 148:&lt;/span&gt;             rtn[i] = (&lt;span style="color: #0000ff"&gt;float&lt;/span&gt;)objGraphics.MeasureString(Values[i], objFont).Width;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum149"&gt; 149:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; (rtn);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum150"&gt; 150:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum151"&gt; 151:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum152"&gt; 152:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum153"&gt; 153:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// Adds a line of text to the given image and calculates the location for the next line of text.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum154"&gt; 154:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum155"&gt; 155:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; AddString(&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; yLocation, &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; Width)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum156"&gt; 156:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum157"&gt; 157:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; x = (&lt;span style="color: #0000ff"&gt;float&lt;/span&gt;)TileDimension - Width - MarginSpacing;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum158"&gt; 158:&lt;/span&gt;         objGraphics.DrawString(&lt;span style="color: #0000ff"&gt;value&lt;/span&gt;, objFont, brushFont, x, yLocation);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum159"&gt; 159:&lt;/span&gt;         yLocation += Spacing;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum160"&gt; 160:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum161"&gt; 161:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum162"&gt; 162:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum163"&gt; 163:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// Draws a line at the location then adjusts the next location accordingly.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum164"&gt; 164:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum165"&gt; 165:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;param name=&amp;quot;yLocation&amp;quot;&amp;gt;Location on y-axis to display line&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum166"&gt; 166:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;param name=&amp;quot;Width&amp;quot;&amp;gt;Width of the line&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum167"&gt; 167:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; DrawLine(&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; yLocation, &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; Width)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum168"&gt; 168:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum169"&gt; 169:&lt;/span&gt;         yLocation += LineMargin;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum170"&gt; 170:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; x2 = (&lt;span style="color: #0000ff"&gt;float&lt;/span&gt;)TileDimension - MarginSpacing;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum171"&gt; 171:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;float&lt;/span&gt; x = x2 - Width;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum172"&gt; 172:&lt;/span&gt;         objGraphics.DrawLine(objPen, x, yLocation, x2, yLocation);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum173"&gt; 173:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum174"&gt; 174:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum175"&gt; 175:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;More Links&lt;/strong&gt; – &lt;/em&gt;In addition to my last post, here are some additional links that I found helpful while working on my code:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;MSDN Instructions for &lt;a href="http://msdn.microsoft.com/en-us/library/ff402545(VS.92).aspx" target="_blank"&gt;sending a push notification&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;Wrapper class for notification API’s on the server from &lt;a href="http://blogs.msdn.com/b/benwilli/archive/2010/09/03/wp7-notifications.aspx" target="_blank"&gt;benwilli&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;MSDN &lt;a href="http://msdn.microsoft.com/en-us/library/ff967566(v=VS.92).aspx" target="_blank"&gt;Troubleshooting Push Notification Exceptions for Windows Phone&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h3&gt;

&lt;p&gt;In summary, the Tile / Notification support in Windows Phone is one of the cool differentiators for the OS from other smart phones so taking advantage of it (and the rest of the “Metro” UI like Panorama and Pivot) are great ways to make your applications more interesting.&amp;#160; As I mentioned above, I don’t consider this a “killer feature” for a tip application, it was more for educational purposes.&amp;#160; But hopefully you’ve found something helpful in this post if you are working on adding your own tile support.&amp;#160; I’m in the process of polishing my own application code now (including making the server more responsive and durable) and will post an updated version of Tip Express to the marketplace soon with the new features outlined here.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10111221" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Tutorial/">Tutorial</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Phone/">Phone</category></item><item><title>Windows Phone 7 Useful Links for Tile Push Notifications</title><link>http://blogs.msdn.com/b/jasonz/archive/2010/12/23/windows-phone-7-useful-links-for-tile-push-notifications.aspx</link><pubDate>Fri, 24 Dec 2010 00:04:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10108747</guid><dc:creator>Jason Zander</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10108747</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2010/12/23/windows-phone-7-useful-links-for-tile-push-notifications.aspx#comments</comments><description>&lt;p&gt;I’m on holiday break right now which means it’s time to write some code; I tend to go into withdrawal if I go too long without coding.&amp;#160; I’m starting with Windows Phone and moving on to Azure for New Year’s.&lt;/p&gt;  &lt;p&gt;I had posted my &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/05/25/sample-windows-phone-7-example-application-with-landscape-layout.aspx" target="_blank"&gt;Tip Calculator&lt;/a&gt; application to the marketplace for internal beta purposes, but all the applications were wiped before the phone officially launched.&amp;#160; I’ve now posted the final version which you can download to your Windows Phone device, the formal title is “&lt;font color="#0000ff"&gt;&lt;strong&gt;Tip Express&lt;/strong&gt;&lt;/font&gt;” to avoid name collisions.&amp;#160; This version uses the pivot control to enable a split check feature (so you can split up the check with other people):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/3162.image_5F00_74C5DF68.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/4152.image_5F00_thumb_5F00_4A29FE8B.png" width="250" height="416" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/5238.image_5F00_1B6445E9.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-metablogapi/0116.image_5F00_thumb_5F00_7ADD0636.png" width="249" height="415" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This version also has persistence of the amounts so that when you re-start the application your data is restored automatically.&lt;/p&gt;  &lt;p&gt;I’m currently updating the project to allow dynamic Tile support so I can push the data right to the pinned tile of the application.&amp;#160; This makes it even easier to use as you can simply enter the data once and if the phone times out, your data will be right on the home screen when the server comes back with your credit card.&amp;#160; I think this will be especially handy in Europe where the server brings the remote credit card reader with them to the table and stands over your shoulder as you enter your amount &amp;lt;g&amp;gt;&lt;/p&gt;  &lt;p&gt;I’ve come across several decent blog entries and documentation that I thought I’d link to for anyone else looking to do something similar:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Main MSDN overview on &lt;a href="http://msdn.microsoft.com/en-us/library/ff402537(v=VS.92).aspx" target="_blank"&gt;Push Notifications&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Creating a transparent tile design which matches the theme color from &lt;a href="http://blogs.msdn.com/b/katriend/archive/2010/11/01/creating-a-tile-using-theme-s-color-as-background-windows-phone-7.aspx" target="_blank"&gt;Katrien’s MSDN Blog&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Push Notification flow control on &lt;a href="http://www.codeproject.com/KB/windows-phone-7/PushNotification.aspx" target="_blank"&gt;codeproject&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.thisisfanzoo.com/Blog/JeffF/archive/2010/08/02/a-really-long-post-about-the-windows-phone-7-push.aspx" target="_blank"&gt;Jeff Fansler’s&lt;/a&gt; “Really Long Post” with sample code &lt;/li&gt;    &lt;li&gt;XNA Push Notification &lt;a href="http://create.msdn.com/en-US/education/catalog/sample/push_notifications" target="_blank"&gt;sample&lt;/a&gt; from MSDN &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If anyone has some really great tutorials or samples on the subject, please do post the link.&amp;#160; I’m writing up my version for a future post.&lt;/p&gt;  &lt;p&gt;Happy Holidays!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10108747" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Phone/">Phone</category></item><item><title>Visual Studio 2010 SP1 Interim Fix List</title><link>http://blogs.msdn.com/b/jasonz/archive/2010/12/20/visual-studio-2010-service-pack-1-beta-feedback.aspx</link><pubDate>Mon, 20 Dec 2010 16:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10076145</guid><dc:creator>Jason Zander</dc:creator><slash:comments>17</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10076145</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2010/12/20/visual-studio-2010-service-pack-1-beta-feedback.aspx#comments</comments><description>&lt;p&gt;One of the most common requests from the &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/12/07/announcing-visual-studio-2010-service-pack-1-beta.aspx" target="_blank"&gt;announcement of VS2010 SP1&lt;/a&gt; was for the list of fixed issues in the release.&amp;#160; This is something we typically publish at the final RTM of the release and will do so again for this release.&amp;#160; But due to popular demand the team has pulled together a preview of the issues linked from the Connect site that have been fixed so far in the release.&amp;#160; One important thing to note is this list is not exhaustive; there are more issues resolved in the release than just those reported through Connect.&amp;#160; We’ll have the final list by RTM.&lt;/p&gt;  &lt;p&gt;Note that some teams have also published their own more exhaustive list for their areas.&amp;#160; Check out &lt;a href="http://blogs.msdn.com/b/bharry/archive/2010/12/07/vs-tfs-2010-sp1-beta-has-released.aspx" target="_blank"&gt;Brian Harry’s list for TFS&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/12/10/visual-studio-2010-service-pack-1-beta-released-information-on-test-and-lab-management-changes.aspx" target="_blank"&gt;Amit Chatterjee’s list for the Test products&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;C++ runtime&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/565959"&gt;SSE2 instructions generated when /arch:SSE is specified&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/336316"&gt;Missing destructor calls when optimization is enabled&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/525943"&gt;Code generation bug in x64 C++ compiler (optimizer)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/548432"&gt;C++ compiler generates incorrect movups instructions iso movss&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/512552"&gt;Optimizer bug (/Og) with the 64-bit 2010 Beta 2 compiler.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/560544"&gt;Visual Studio 2010 VC++ Concurrent Runtime libraries leak memory&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/609049"&gt;concurrent_queue causes crash&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/575506"&gt;Memory leaks reported when using simple parallel_for code&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/591030"&gt;ftell returns negative value for UTF-8 files opened with textmode and ccs&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/545013"&gt;vector::erase returns incompatible iterator in debug build&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/558339"&gt;tr1:regex has different behavior between vs2008 and vs2010 on some regular expression&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/564917"&gt;inserting in a std::vector of std::string causes memory leak&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/574974"&gt;CRecordset/DoFieldExchange not working properly in Visual Studio 2010&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Database&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/536021"&gt;Table creation blocked because of False Positive error on FileStream Guid Column&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/573563"&gt;Schema Compare - some database objects not imported into project&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/560437"&gt;VS2010 crash when adding Database Unit Test during Database build&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/551711"&gt;Schema Compare Options are not remembered for comparison between Project and Database&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/606656"&gt;Datadude attempts to deploy a default constraint before deploying the function referenced by that constraint&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Debugger&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/554772"&gt;Native frames missing from some mixed call stacks - C++&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/613569"&gt;Cannot inspect local variables while debugging in VS2010. CXX0017 &amp;quot;Symbol not found&amp;quot; error&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/487949"&gt;Debugging external application, breakpoint not hit&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/541676"&gt;Visual Studio crashes when importing the same Data Tip exported before&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/556756"&gt;Debugger randomly treats &amp;quot;step-into&amp;quot; and &amp;quot;step-over&amp;quot; as &amp;quot;run to completion&amp;quot;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/534263"&gt;Pinned DataTips result in being unable to click into editor under invisible tip in design mode&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/541676"&gt;Visual Studio crashes when importing the same Data Tip exported before&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/521390"&gt;Error: The breakpoint will not currently be hit. This location could not be mapped to client side script. when client side debugging&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/599221"&gt;Visual Studio 2010 hangs after several debugging sessions with blank IE window&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Editor&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/553339"&gt;Viewing a List&amp;lt;T&amp;gt; in debug-time no longer allows you to see the Items property&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/542271"&gt;Don't display mandatory ByVal in signatures for VB .NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/533093"&gt;Ctrl+Backspace deletes too much text&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/533668"&gt;Find and Replace window after replacing text moved off screen&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/550886"&gt;Visual Studio 2010 crash when the source file contains non-Unicode characters&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/542247"&gt;Navigation of selection not working as expected&lt;/a&gt; &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/533342"&gt;Incorrect project context menu height&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/574681"&gt;Visual Studo crash when click some menu separator&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Editor - ASP.NET&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/533068"&gt;DataContext not visible when &amp;quot;Show only DataContext objects&amp;quot; is checked&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/536777"&gt;Style sheets external to web application are not applied in VS.NET 2010 IDE design view&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/550052"&gt;HTML designer layout doesn't render correctly&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/542590"&gt;JScript IntelliSense broken when augmenting an object defined by the reference-tab&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/557323"&gt;Format Document command in JScript code editor has glitch&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/557326"&gt;JScript object member won't be listed in IntelliSense&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/557534"&gt;Inner function will not be parsed correctly when JScript file is referenced&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/558465"&gt;Javascript formatting bug&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/567055"&gt;Backspace and Arrow key not working&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/569707"&gt;Devenv.exe crash (AccessViolation) during *.js auto-formatting&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/552690"&gt;Visual Studio 2010 crash on aspx ScriptManager in non-web project&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/544948"&gt;.designer.cs doesn't work properly with nested web application projects&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/554957"&gt;ASP.NET App_Themes folder does not allow adding a new CSS Stylesheet&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Editor - C++&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/537956"&gt;Crash while declairing C++ enum&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/561259"&gt;VS2010 hangs when on Go to Definition or Go to Declaration&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/573230"&gt;Reproducible crash when commenting&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/555842"&gt;VC++ 2010: Editing resource.h causes recompile of all dependent source files&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/557948"&gt;Crash of visual studio 2010 with a C/C++ project, when hiding/showing all files of solution&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/548891"&gt;Class member autocompletion forces wrong member&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Editor - XAML&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/558722"&gt;StyleTypedProperty is not supported by style chooser&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/573514"&gt;AppDomainUnloaded exception wiuth VS2010 XAML editor&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/575719"&gt;VS2010 XAML Intellisense Failure&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/473449"&gt;XAML designer Binding feature doesn't work as expected&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/521457"&gt;At design time in Design Pane cannot see applyed custom Styles for controls, but at runtime everything looks fine&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/538282"&gt;&amp;quot;Choose Toolbox Items&amp;quot; dialogue forces manual process kill and data loss, unresponsive and GUI corruption&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/550521"&gt;VS 2010 - IDE locks completely when adding Silverlight items to the toolbox&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/551488"&gt;XAML StringFormat editor doesn't support doubley escaped characters&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/561084"&gt;Editing XAML crashes when choosing an Intellisense item&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/567025"&gt;An &amp;quot;inheirt and overwrite&amp;quot; pattern in XAML will be reported as &amp;quot;detected loop&amp;quot;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/610734"&gt;VS10 crashes when writing XAML code at design time&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Testing&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/575870"&gt;VS2010 Lab Manager - Test Run - results in Tests Not Executed state - Test Controller Crashing&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/580348"&gt;Lab Management: can't change SCVMM Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/584634"&gt;Crash bug in devenv.exe - WebTest Results Viewer using AddCommentToResult() &lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/534055"&gt;Can't bind parameter to password field when creating Action Recording&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/523031"&gt;Creating coded UI test from exisint action recording does not show up alternate credentials dialog&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/576461"&gt;Create Unit Test wizard crashes/restarts VS2010&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;TFS&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/585075"&gt;Unhandled StackOverflowException when invoking TFS Client.Workspace.GetLocalItemForServerItem(...)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/532674"&gt;Manually queueing a gated check-in build intermittedly disables the dropdown &amp;quot;what do you want to build?&amp;quot;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/529729"&gt;Error on Work Item form in TFS - object reference not set to an instance of an object&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Miscellaneous&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/538887"&gt;VS Crash when viewing Code Analysis Settings for Solution which has an IIS site&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/591793"&gt;Frequent crashes when changing Code Analysis settings&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/526547"&gt;Sequence Diagram / Rearrange Layout / Lifeline(s) not resized as expected (in height)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/533921"&gt;Sequence diagram: item with same key already added&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/466157"&gt;Registry Capture Utility - Win 7 RC1&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/550645"&gt;VS crash while configure prequisites&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/534797"&gt;VSIX packages with project templates may fail to install correctly&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Several posters wondered why we did not have the list already.&amp;#160; The main reason is we generally target the final RTM release to do this exercise to ensure we have everything documented (it then shows up as a KB article).&amp;#160; We track everything in TFS (as you would expect) so simply running a query is not an issue.&amp;#160; As a normal part of a release we track *everything* you could imagine from internal system issues, readme updates, EULA updates, even builds that failed due to the power outage we had 2 weeks ago in Redmond.&amp;#160; Clearly these aren’t interesting to publish so the list needs to be scrubbed.&amp;#160; Another issue is externally reported bugs often have generic titles like “{Foo} is busted” which is not very descriptive.&amp;#160; So we wind up going through the list to try and make it more descriptive and get it down to just the core issues you care about.&lt;/p&gt;  &lt;p&gt;I want to say a big THANKS to everyone who has submitted feedback so far on the SP.&amp;#160; Your feedback is invaluable to us as we work on finalizing the release and ensuring we have a high quality release.&amp;#160; I continue to see a lot of feedback on performance in particular which we would like to correlate with machine configs and project types.&amp;#160; If you can send your performance related issues to &lt;a href="mailto:devperf@microsoft.com"&gt;devperf@microsoft.com&lt;/a&gt; we want to do more investigation of the issues.&amp;#160; I suspect some OS/machine configs may be the root of the widely varied feedback we’ve received to date.&amp;#160; Thanks in advance for your help on this.&lt;/p&gt;  &lt;p&gt;Jason&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10076145" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Visual+Studio/">Visual Studio</category></item><item><title>December 16th What's Happening Around Visual Studio</title><link>http://blogs.msdn.com/b/jasonz/archive/2010/12/16/december-16-what-is-happening-around-visual-studio.aspx</link><pubDate>Fri, 17 Dec 2010 01:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10071447</guid><dc:creator>Jason Zander</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10071447</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2010/12/16/december-16-what-is-happening-around-visual-studio.aspx#comments</comments><description>&lt;p&gt;Quick recap on what's been happening on the team.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2010/12/07/portfolio-management-tfs-lt-gt-project-server-integration-in-beta.aspx" title="Team Foundation Server and Project Server Integration"&gt;&lt;strong&gt;Team Foundation Server and Project Server Integration&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;- Learn more about this feature pack released to MSDN subscribers. This integration is a leap forward for organizations that have both Project Management Offices managing many projects and development teams using TFS.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/amit_chatterjee/archive/2010/12/11/eurostar-2010-at-copenhagen-cool-show-beautiful-city-freezing-weather.aspx" title="Eurostar 2010 at Copenhagen"&gt;&lt;strong&gt;Eurostar 2010 at Copenhagen&lt;/strong&gt;&lt;/a&gt; -&lt;strong&gt; &lt;/strong&gt;Amit Chatterjee recently attended Europe's largest conference for testers.&amp;nbsp; I recommend checking out his post to get an inside look at the conference and how the awareness of our testing tools has increased&amp;nbsp;in the testing industry.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/briankel/archive/2010/06/25/now-available-visual-studio-2010-rtm-virtual-machine-with-sample-data-and-hands-on-labs.aspx" title="Visual Studio 2010 RTM Virtual Machine"&gt;&lt;strong&gt;Visual Studio 2010 RTM Virtual Machine&lt;/strong&gt;&lt;/a&gt; - Check out Brian Keller's recent update to&amp;nbsp;the virtual machine that contains the latest feature packs, power tools, and Windows Updates.&amp;nbsp; This VM is a simple way to try out Visual Studio 2010&amp;nbsp;and Team Foundation Server 2010.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/camerons/archive/2010/12/15/force-vs-to-garbage-collect.aspx" title="Force VS to Garbage Collect"&gt;&lt;strong&gt;Force VS to Garbage Collect&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;- Cameron Skinner's recent post shows how to force the runtime inside Visual Studio&amp;rsquo;s address space to collect garbage via a simple keystroke.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/lightswitch/archive/2010/12/16/how-to-create-a-many-to-many-relationship-andy-kung.aspx" title="How to Create a Many-to-Many Relationship"&gt;&lt;strong&gt;How to Create a Many-to-Many Relationship&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;- Check out Andy Kung's walk through of creating a movie database application using Visual Studio LightSwitch.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/vstsue/archive/2010/12/13/vs-alm-library-updates-on-msdn-for-december-2010.aspx" title="Visual Studio ALM Library Documentation Updates"&gt;&lt;strong&gt;Visual Studio Library Documentation Updates&lt;/strong&gt;&lt;/a&gt; - Our documentation team recently published additional content for Feature Pack 2 and ALM in&amp;nbsp;the VS Library.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg265783.aspx" title="Team Foundation Build Activity Reference"&gt;&lt;strong&gt;Team Foundation Build Activity Reference&lt;/strong&gt;&lt;/a&gt; - Andy Lewis just released an article that describes in detail the fundamental components of the build process. To learn more, check out Andy's &lt;a href="http://blogs.msdn.com/b/andy-lewis/archive/2010/12/10/team-foundation-build-activity-reference.aspx" title="post"&gt;post&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=615" title="Martin Woodward Brings Team Foundation Server to Everyone"&gt;&lt;strong&gt;Martin Woodward Brings Team Foundation Server to Everyone&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;- Listen in to&amp;nbsp;.NET Rocks! latest Internet audio talk show with Martin and learn about Team Explorer Everywhere and TFS in general.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/00ec88c2-1553-47d2-8170-3c5baa0c6e44" title="Print Your Code in Color "&gt;&lt;strong&gt;Print Your Code in Color&lt;/strong&gt;&lt;/a&gt; -&amp;nbsp;&amp;nbsp;Download this free extension that restores support for printing code in color.&amp;nbsp; To learn more, check out the team's &lt;a href="http://blogs.msdn.com/b/visualstudio/archive/2010/11/30/color-printing-extension-now-available.aspx" title="post"&gt;post&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wcfloadtest.codeplex.com/" title="WCF Load Test Tool"&gt;&lt;strong&gt;WCF Load Test Tool&lt;/strong&gt;&lt;/a&gt; - The Visual Studio ALM Rangers recently released an update to their WCF Load Test tool.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2010/11/22/tfs-is-an-open-platform.aspx" title="TFS is an Open Platform"&gt;&lt;strong&gt;TFS Ecosystem&lt;/strong&gt;&lt;/a&gt; - Brian Harry recently started a series on TFS and VS ALM as an open platform.&amp;nbsp; If you haven't gotten a chance to check this out,&amp;nbsp;here are the latest&amp;nbsp;posts &amp;gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2010/11/22/tasktop-announces-tfs-and-vs-support-for-mylyn.aspx" title="Tasktop Announces TFS and VS Support for Mylyn"&gt;Tasktop Announces TFS and VS&amp;nbsp;Support for Mylyn&lt;/a&gt;&amp;nbsp;and &lt;a href="http://blogs.msdn.com/b/bharry/archive/2010/11/29/teamcompanion-and-tfs.aspx" title="TeamCompanion and TFS"&gt;TeamCompanion and TFS&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://alm-summit.com/home.aspx" title="ALM Summit 2010"&gt;&lt;strong&gt;ALM Summit 2010&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;- If you didn't get the chance to attend this year's ALM Summit, I recommend you check the presentations and video recordings. If you're on Facebook, you can also get a good behind-the-scenes look on the &lt;a href="http://www.facebook.com/album.php?profile=1&amp;amp;id=102536919797944#!/pages/ALM-Summit/102536919797944?v=wall" title="ALM Summit page"&gt;ALM Summit page&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/lightswitch/archive/2010/08/06/the-anatomy-of-a-lightswitch-application-overview.aspx" title="The Anatomy of a LightSwitch Application"&gt;&lt;strong&gt;The Anatomy of a LightSwitch Application&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;- The LightSwitch team started a series of posts that shed light on "what is LightSwitch really building under the covers?".&amp;nbsp; I recommend you check out this series.&amp;nbsp;Their latest post goes into detail about &lt;a href="http://blogs.msdn.com/b/lightswitch/archive/2010/11/30/anatomy-of-a-lightswitch-application-part-4-data-access-and-storage-2.aspx" title="data access and storage"&gt;data access and storage&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Follow me at &lt;a href="http://twitter.com/jlzander" title="twitter.com/jlzander"&gt;twitter.com/jlzander&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10071447" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/News/">News</category></item><item><title>Announcing Visual Studio 2010 Service Pack 1 Beta</title><link>http://blogs.msdn.com/b/jasonz/archive/2010/12/07/announcing-visual-studio-2010-service-pack-1-beta.aspx</link><pubDate>Tue, 07 Dec 2010 18:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10071448</guid><dc:creator>Jason Zander</dc:creator><slash:comments>109</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10071448</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2010/12/07/announcing-visual-studio-2010-service-pack-1-beta.aspx#comments</comments><description>&lt;p&gt;I'm happy to announce that the Visual Studio 2010 Service Pack 1 Beta is now ready for download! MSDN subscribers may download the beta immediately with general availability on Thursday. Service Pack 1 Beta comes with a &amp;ldquo;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=207552" title="go live"&gt;go live&lt;/a&gt;&amp;rdquo; license which means you can start using the product for production related work (see the license agreement with the product for more details).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=207267" title="Download Service Pack 1 Beta (MSDN Subscribers only)"&gt;&lt;b&gt;Download Service Pack 1 Beta (MSDN Subscribers only)&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;The link for Thursday's general availability download is&lt;/b&gt; &lt;a href="http://go.microsoft.com/fwlink/?LinkId=207130" title="here"&gt;&lt;b&gt;here&lt;/b&gt;&lt;/a&gt;.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since the launch of &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/04/12/ship-it-visual-studio-2010-net-framework-4-now-available.aspx" title="Visual Studio 2010 and the .NET Framework 4"&gt;Visual Studio 2010&amp;nbsp;and the .NET Framework 4&lt;/a&gt; earlier this year and&amp;nbsp;our subsequent &lt;a href="http://msdn.microsoft.com/vstudio/ff655021.aspx" title="Feature Packs "&gt;Feature Packs&lt;/a&gt;, we have been concentrating on&amp;nbsp;your feedback and worked hard on&amp;nbsp;the issues you&amp;nbsp;reported through&amp;nbsp;Connect and our survey. I just recently blogged&amp;nbsp;about the &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/12/05/visual-studio-2010-survey-results.aspx" title="results from our recent survey "&gt;results from our recent survey&lt;/a&gt; and called out&amp;nbsp;some of the latest improvements the team has delivered.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Service Pack 1 (SP1) continues&amp;nbsp;that momentum of focusing on improving the developer experience by addressing some of the most&amp;nbsp;requested features like better help support,&amp;nbsp;IntelliTrace support for 64bit and SharePoint, and including Silverlight 4 Tools in the box. Some of the additional highlights are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Help Viewer -&amp;nbsp; &lt;/b&gt;The new local Help Viewer is a simple client application that re-introduces key productivity features including a fully-expandable table of contents and a keyword index.&amp;nbsp; For additional information about these improvements, check out Jeff Braaten&amp;rsquo;s post &lt;a href="http://thirdblogfromthesun.com/2010/10/the-story-of-help-in-visual-studio-2010-part-3/" title="here"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="padding-left: 60px;"&gt;&amp;nbsp;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-VS2010+SP1+Beta/1512.Help-Viewer-Keyword-Index.jpg" width="451" border="0" height="295" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Better platform support -&lt;/b&gt; Looking at support of platforms newly-available around Visual Studio 2010 release, we wanted to make small investments to upgrade our support for them. &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=b3deb194-ca86-4fb6-a716-b67c2604a139" title="Silverlight 4 Tools for Visual Studio 2010"&gt;Silverlight 4 Tools for Visual Studio 2010&lt;/a&gt; (with a few updates to RIA Services) is now included in the box along with Silverlight 3 support, underscoring our commitment to that quickly-evolving platform. We&amp;rsquo;ve also made a number of other targeted changes, including some additional Win7-specific MFC APIs to support use of Direct2D, DirectWrite, and Windows Animation Technologies. There were also a number of areas where you told us we could do better, so we went in and filled some holes: 
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Unit Testing on .NET 3.5&lt;/b&gt; &amp;ndash; today all unit tests are run under .NET 4. While acceptable for most users because of the compatibility work we did in .NET 4, this caused problems for some of you with .NET 3.5-specific dependencies.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;IntelliTrace F5 for 64 bit and SharePoint projects&lt;/b&gt; &amp;ndash; you&amp;rsquo;ve told us that IntelliTrace is great, but you want to use it on all the projects you&amp;rsquo;re working on.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Performance Wizard for Silverlight&lt;/b&gt; &amp;ndash; Similarly, our performance profiling tools are very useful, but you want to use them for your Silverlight development as well. Silverlight projects are included in the Wizard just like your client projects today.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;VB Compiler runtime switch&lt;/b&gt; &amp;ndash; This switch will enable Visual Basic developers to target their apps and libraries at platforms where the full Visual Basic Runtime hasn&amp;rsquo;t traditionally been available.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As an engineering team, the goal for this&amp;nbsp;Service Pack&amp;nbsp;was to work&amp;nbsp;hard on releasing a high quality beta with a focus on only fixing&amp;nbsp;the top-set of important issues we heard about from our customers. Please download the beta and send us your feedback&amp;nbsp;through&amp;nbsp;our &lt;a href="http://go.microsoft.com/fwlink/?LinkId=207109" title="Visual Studio Connect site"&gt;Visual Studio Connect site&lt;/a&gt; and/or submit your feedback&amp;nbsp;via our &lt;a href="http://go.microsoft.com/fwlink/?LinkId=207266" title="Service Pack 1 Beta Survey"&gt;Service Pack 1 Beta Survey&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #ff6600;"&gt;UPDATE&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;If you have &amp;ldquo;ASP.NET MVC 3 RC&amp;rdquo; installed, please be aware that installing Visual Studio 2010 SP1 Beta will break Razor IntelliSense.&amp;nbsp; There will be a new &amp;ldquo;ASP.NET MVC 3 RC2&amp;rdquo; installer released next Monday that you can upgrade to in-place. If you&amp;rsquo;ve already installed Visual Studio 2010 SP1 Beta, don&amp;rsquo;t uninstall the Beta Service Pack, just wait until Monday and upgrade your MVC installation.&lt;br /&gt;&lt;br /&gt;If you have &amp;ldquo;Visual Studio Async CTP&amp;rdquo; installed, please be aware that installing Visual Studio 2010 SP1 Beta will break Visual Studio Async CTP. We are looking at options for an updated release that will make the Visual Studio Async CTP compatible with Visual Studio 2010 SP1. In the meanwhile if you need to work with the CTP you should stick with VS2010 RTM.&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10071448" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Announcement/">Announcement</category></item><item><title>Visual Studio 2010 Survey Results</title><link>http://blogs.msdn.com/b/jasonz/archive/2010/12/05/visual-studio-2010-survey-results.aspx</link><pubDate>Sun, 05 Dec 2010 16:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10071446</guid><dc:creator>Jason Zander</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10071446</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2010/12/05/visual-studio-2010-survey-results.aspx#comments</comments><description>&lt;p&gt;An important part of&amp;nbsp;our development process for Visual Studio is integrating your feedback. To that end, in October&amp;nbsp;we released a survey collecting your feedback on Visual Studio 2010. We received constructive feedback from over 1,800 respondents.&amp;nbsp;Thanks for taking the time to&amp;nbsp;share with us your comments and improvement suggestions.&lt;/p&gt;
&lt;p&gt;The overall results were positive and touched across many areas of the product. We heard from some of you that it is the best IDE out there and that some of the new features such as Call Hierarchy and IntelliTrace are "really awesome"! We also heard from you about areas for improvement including performance. As we have in the past, we will continue to make improvements to Visual Studio based on your feedback.&lt;/p&gt;
&lt;p&gt;The team has already delivered on areas in which you have had some concerns.&amp;nbsp;I want to walk you through some of the&amp;nbsp;latest improvements that are&amp;nbsp;currently available for you to download.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/60a86afe-159b-4940-a22f-4fef055cbd63" title="Help Viewer Power Tool"&gt;&lt;strong&gt;Help Viewer Power Tool (Beta)&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;- Since the release of Help Viewer 1.0, the team has been talking with developers and observing the use of Visual Studio help in our usability labs.&amp;nbsp;You can download the Help Viewer Power Tool (Beta) from the VS Gallery.&amp;nbsp; I recommend you check out Jeff Braaten's &lt;a href="http://thirdblogfromthesun.com/2010/10/the-story-of-help-in-visual-studio-2010-part-3/" title="series of posts"&gt;series of posts&lt;/a&gt; that includes a preview of the next set of improvements we're planning to deliver soon.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=29729" title="Insufficient Memory Patch"&gt;&lt;strong&gt;Insufficient Memory&lt;/strong&gt;&lt;/a&gt; - We heard from customers they were running into issues while attempting to cut or copy small to moderate amounts of text. Downloading this patch will resolve these&amp;nbsp;&amp;ldquo;insufficient memory&amp;rdquo; errors. The team also posted &lt;a href="http://blogs.msdn.com/b/visualstudio/archive/2010/06/25/patch-available-for-cut-or-copy-displaying-insufficient-memory-error-in-vs-2010.aspx" title="additional information"&gt;additional information&lt;/a&gt; about this patch if you'd like to learn more. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/visualstudio/archive/2010/10/14/hotfixes-available-for-scrolling-context-menu-problem.aspx" title="Scrolling Context Menu"&gt;&lt;strong&gt;Scrolling Context Menu&lt;/strong&gt;&lt;/a&gt; - The team published a couple patches to this widely-reported problem where context menus contain scrollbars even when there is sufficient screen real estate.&amp;nbsp; Information and links to the patches for Visual Studio and Windows Presentation Foundation can be found on the team's blog&amp;nbsp;&lt;a href="http://blogs.msdn.com/b/visualstudio/archive/2010/10/14/hotfixes-available-for-scrolling-context-menu-problem.aspx" title="here"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=30518&amp;amp;wa=wsignin1.0" title="Find and Replace Dialog"&gt;&lt;strong&gt;Find and Replace Dialog&lt;/strong&gt;&lt;/a&gt; - The team released a patch for this top reported bug that fixes the issue with Find and Replace dialog growing 16px on each use.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/00ec88c2-1553-47d2-8170-3c5baa0c6e44" title="Color Printing"&gt;&lt;strong&gt;Color Printing&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;- This extension was created largely in response to your feedback that omitting color printing was causing significant pain on a daily basis. You can download the&amp;nbsp;Color Printing extension from the VS Gallery that addresses that issue. To learn more about the extension, check out the team's&amp;nbsp;blog &lt;a href="http://blogs.msdn.com/b/visualstudio/archive/2010/11/30/color-printing-extension-now-available.aspx" title="here"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I encourage you to keep letting us know what you think as you&amp;nbsp;continue to work with&amp;nbsp;Visual Studio 2010.&amp;nbsp; You can engage with us through&amp;nbsp;our &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/visualstudio,vsarch,vsdbg,vstest,vstfs,vsdata,vsappdev,visualbasic,visualcsharp,visualc" title="Visual Studio forums"&gt;Visual&amp;nbsp;Studio forums&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/vstudio/dd314520.aspx" title="team blogs"&gt;team blogs&lt;/a&gt; and our&amp;nbsp;&lt;a href="https://connect.microsoft.com/VisualStudio" title="Visual Studio Connect site"&gt;Visual Studio Connect site&lt;/a&gt;.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Expect to see the next set of improvements coming soon in a future release.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10071446" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Feedback/">Feedback</category></item><item><title>Announcing:  Visual Basic Windows Phone 7 Support RTW</title><link>http://blogs.msdn.com/b/jasonz/archive/2010/11/29/announcing-visual-basic-windows-phone-7-support-rtw.aspx</link><pubDate>Mon, 29 Nov 2010 14:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10071444</guid><dc:creator>Jason Zander</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10071444</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2010/11/29/announcing-visual-basic-windows-phone-7-support-rtw.aspx#comments</comments><description>&lt;p&gt;I&amp;rsquo;ve personally been enjoying using my Windows Phone 7 device, and it&amp;rsquo;s been a lot of fun seeing the phones come to market across the world. As a developer, it&amp;rsquo;s an intriguing opportunity to see so many people buying Windows Phone 7 devices and starting to purchase applications on the Marketplace. With all this excitement around Windows Phone 7, I&amp;rsquo;m often asked by Visual Basic developers when they&amp;rsquo;ll be able to submit their applications to the Marketplace. I&amp;rsquo;m excited to announce that day is here!&lt;/p&gt;
&lt;p&gt;Today we&amp;rsquo;re releasing &amp;ldquo;Visual Basic for Windows Phone Developer Tools &amp;ndash; RTW&amp;rdquo;. This release is available in the same five languages as the Windows Phone Developer Tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;English&lt;/strong&gt;: &lt;a href="http://go.microsoft.com/fwlink/?LinkId=206790&amp;amp;clcid=0x409"&gt;http://go.microsoft.com/fwlink/?LinkId=206790&amp;amp;clcid=0x409&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;French&lt;/strong&gt;: &lt;a href="http://go.microsoft.com/fwlink/?LinkID=206790&amp;amp;clcid=0x40c"&gt;http://go.microsoft.com/fwlink/?LinkID=206790&amp;amp;clcid=0x40c&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;German&lt;/strong&gt;: &lt;a href="http://go.microsoft.com/fwlink/?LinkID=206790&amp;amp;clcid=0x407"&gt;http://go.microsoft.com/fwlink/?LinkID=206790&amp;amp;clcid=0x407&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Italian&lt;/strong&gt;: &lt;a href="http://go.microsoft.com/fwlink/?LinkID=206790&amp;amp;clcid=0x410"&gt;http://go.microsoft.com/fwlink/?LinkID=206790&amp;amp;clcid=0x410&lt;strong&gt;&lt;/strong&gt;&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spanish&lt;/strong&gt;: &lt;a href="http://go.microsoft.com/fwlink/?LinkID=206790&amp;amp;clcid=0x40a"&gt;http://go.microsoft.com/fwlink/?LinkID=206790&amp;amp;clcid=0x40a&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please refer to the download pages for a list of System Requirements and Support Statements associated with the release.&lt;/p&gt;
&lt;p&gt;To get started with the release, be sure to check out the Visual Basic Code Samples for Windows Phone: &lt;a href="http://msdn.microsoft.com/en-us/library/ff431744(VS.92).aspx"&gt;http://msdn.microsoft.com/en-us/library/ff431744(VS.92).aspx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are also forums available where you can post your questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Silverlight for Windows Phone Forum: &lt;a href="http://forums.silverlight.net/forums/63.aspx"&gt;http://forums.silverlight.net/forums/63.aspx&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Windows Phone 7 Development Forum on App Hub: &lt;a href="http://forums.create.msdn.com/forums/98.aspx"&gt;http://forums.create.msdn.com/forums/98.aspx&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: large"&gt;Walkthrough&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To show the experience of building a Silverlight application with Visual Basic for Windows Phone Developer Tools - RTW, lets review a walkthrough highlighting the steps to build my &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/05/25/sample-windows-phone-7-example-application-with-landscape-layout.aspx" title="Tip Calculator"&gt;Tip Calculator&lt;/a&gt; application in VB. (You can find the complete VB solution posted &lt;a href="http://code.msdn.microsoft.com/winphone7tipcalcsamp/Release/ProjectReleases.aspx?ReleaseId=5226" title="here"&gt;here&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;First start by installing the System Requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows 7 or Windows Vista &lt;/li&gt;
&lt;li&gt;Visual Studio 2010 Professional, Premium or Ultimate. If you don&amp;rsquo;t have one of these releases, you can also install a trial version: &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e2a1a098-995e-4468-816d-7fdbe0a64f38&amp;amp;displaylang=en" title="Ultimate"&gt;Ultimate&lt;/a&gt; | &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7038e207-329c-4006-b620-16d1af1c42c1&amp;amp;displaylang=en" title="Premium"&gt;Premium&lt;/a&gt; | &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=26bae65f-b0df-4081-ae6e-1d828993d4d0&amp;amp;displaylang=en" title="Professional"&gt;Professional&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=04704acf-a63a-4f97-952c-8b51b34b00ce&amp;amp;displaylang=en" title="Windows Phone Developer Tools RTW"&gt;Windows Phone Developer Tools RTW&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=206790&amp;amp;clcid=0x409" title="Visual Basic for Windows Phone Developer Tools - RTW"&gt;Visual Basic for Windows Phone Developer Tools - RTW&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you go to create a New Project, you will see a new Visual Basic project template node under Visual Basic -&amp;gt; Silverlight for Windows Phone. There are 5 Visual Basic Windows Phone project types available, in addition to 16 item templates. &lt;/p&gt;
&lt;p&gt;&lt;img height="387" width="560" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-VB+Windows+Phone+App/5706.VB-phone-1.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;In this case, we select the &amp;lsquo;Windows Phone Application&amp;rsquo; template.&lt;/p&gt;
&lt;p&gt;(Please note that there are no Visual Basic XNA templates available at this time, since XNA is not currently supported in Visual Basic. This is consistent with the experience in the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=201859" title="Visual Basic CTP for Windows Phone Developer Tools"&gt;Visual Basic CTP for Windows Phone Developer Tools&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: large"&gt;Layout&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;My earlier &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/05/25/sample-windows-phone-7-example-application-with-landscape-layout.aspx" title="Tip Calculator"&gt;Tip Calculator&lt;/a&gt; post described the process for laying out the application shown below. Please refer to that post for details. The same designer experience is now available for Visual Basic Windows Phone applications.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-VB+Windows+Phone+App/1817.VB-phone-2.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;The application has a built-in numeric key pad for entering the bill amount and controls which allow for adjustment of both the tip percentage, as well as, rounding the total bill to an even number.&lt;/p&gt;
&lt;p&gt;In this post, I&amp;rsquo;ve included Visual Basic versions of the code snippets from my &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/05/25/sample-windows-phone-7-example-application-with-landscape-layout.aspx" title="previous post"&gt;previous post&lt;/a&gt;. These code snippets describe how to implement different aspects of the application. For example, below is the code to implement Landscape and Portrait Mode, so that the application layout changes when the user rotates the phone. In order to do this, the application must indicate that it supports the setting and it must handle the change in orientation event as follows:&lt;/p&gt;
&lt;p&gt;In MainPage.xaml.vb, add the following line in Sub New():&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 56.9%; font-family: 'Courier New', courier, monospace; direction: ltr; height: 36px; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; height: 22px; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum1" style="color: #606060"&gt;   1:&lt;/span&gt; SupportedOrientations = SupportedPageOrientation.Portrait &lt;span style="color: #0000ff"&gt;Or&lt;/span&gt; SupportedPageOrientation.Landscape&lt;/pre&gt;
&lt;!--crlf--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In MainPage.xaml.vb, update the MainPage_OrientationChanged method to handle the Me.OrientationChanged event:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 74%; font-family: 'Courier New', courier, monospace; direction: ltr; height: 100px; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum1" style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; MainPage_OrientationChanged(&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Object&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; e &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; OrientationChangedEventArgs) &lt;span style="color: #0000ff"&gt;Handles&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Me&lt;/span&gt;.OrientationChanged&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum2" style="color: #606060"&gt;   2:&lt;/span&gt; ...&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum3" style="color: #606060"&gt;   3:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum4" style="color: #606060"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When the orientation changes we&amp;rsquo;ll first move the TotalsGrid into the second column adjacent to the NumbersGrid, then change the column width attributes accordingly:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 59.8%; font-family: 'Courier New', courier, monospace; direction: ltr; height: 256px; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum1" style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; MainPage_OrientationChanged(&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Object&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; e &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; OrientationChangedEventArgs)&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum2" style="color: #606060"&gt;   2:&lt;/span&gt;     &lt;span style="color: #008000"&gt;' In landscape mode, the totals grid is moved to the right on the screen&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum3" style="color: #606060"&gt;   3:&lt;/span&gt;     &lt;span style="color: #008000"&gt;' which puts it in row 1, column 1.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum4" style="color: #606060"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;If&lt;/span&gt; (e.Orientation &lt;span style="color: #0000ff"&gt;And&lt;/span&gt; PageOrientation.Landscape) &amp;lt;&amp;gt; 0 &lt;span style="color: #0000ff"&gt;Then&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum5" style="color: #606060"&gt;   5:&lt;/span&gt;         LandscapeColumn.Width = GridLength.&lt;span style="color: #0000ff"&gt;Auto&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum6" style="color: #606060"&gt;   6:&lt;/span&gt;         Grid.SetRow(TotalsGrid, 1)&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum7" style="color: #606060"&gt;   7:&lt;/span&gt;         Grid.SetColumn(TotalsGrid, 1)&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum8" style="color: #606060"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum9" style="color: #606060"&gt;   9:&lt;/span&gt;         LayoutRoot.ColumnDefinitions(1).Width = GridLength.&lt;span style="color: #0000ff"&gt;Auto&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum10" style="color: #606060"&gt;  10:&lt;/span&gt;         &lt;span style="color: #008000"&gt;' In portrait mode, the totals grid goes below the number pad at the&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum11" style="color: #606060"&gt;  11:&lt;/span&gt;         &lt;span style="color: #008000"&gt;' bottom of the screen which is row 0, column 2.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum12" style="color: #606060"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;Else&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum13" style="color: #606060"&gt;  13:&lt;/span&gt;         LandscapeColumn.Width = &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; GridLength(0)&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum14" style="color: #606060"&gt;  14:&lt;/span&gt;         Grid.SetRow(TotalsGrid, 2)&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum15" style="color: #606060"&gt;  15:&lt;/span&gt;         Grid.SetColumn(TotalsGrid, 0)&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum16" style="color: #606060"&gt;  16:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum17" style="color: #606060"&gt;  17:&lt;/span&gt;         LayoutRoot.ColumnDefinitions(1).Width = &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; GridLength(0)&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum18" style="color: #606060"&gt;  18:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;If&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum19" style="color: #606060"&gt;  19:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The resulting display then looks like the following:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-VB+Windows+Phone+App/0755.VB-phone-3.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: large"&gt;Button Handlers&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The numeric button grid is implemented in xaml as a 3 x 4 grid.&amp;nbsp; Each numeric button is given a name &amp;ldquo;button[x]&amp;rdquo;, corresponding to its value.&amp;nbsp; When a button is pressed, we want to add that new digit to the bill amount. This is perfect place to take advantage of Visual Basic Statement Lambdas feature, introduced in Visual Studio 2010:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 72.95%; font-family: 'Courier New', courier, monospace; direction: ltr; height: 168px; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum1" style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; InitButtonHandlers()&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum2" style="color: #606060"&gt;   2:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;For&lt;/span&gt; i = 0 &lt;span style="color: #0000ff"&gt;To&lt;/span&gt; 9&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum3" style="color: #606060"&gt;   3:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; btnName = &lt;span style="color: #006080"&gt;"button"&lt;/span&gt; &amp;amp; i.ToString()&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum4" style="color: #606060"&gt;   4:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; btn = &lt;span style="color: #0000ff"&gt;CType&lt;/span&gt;(&lt;span style="color: #0000ff"&gt;Me&lt;/span&gt;.LayoutRoot.FindName(btnName), System.Windows.Controls.Button)&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum5" style="color: #606060"&gt;   5:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum6" style="color: #606060"&gt;   6:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; j = i &lt;span style="color: #008000"&gt;' avoid local variable capture&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum7" style="color: #606060"&gt;   7:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;AddHandler&lt;/span&gt; btn.Click, &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;(sender &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Object&lt;/span&gt;, e &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; RoutedEventArgs) TryUpdateBillAmount(textBlockBill.Text + j.ToString())&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum8" style="color: #606060"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;Next&lt;/span&gt; i&lt;/pre&gt;
&lt;!--crlf--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum9" style="color: #606060"&gt;   9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: large"&gt;Debugging With the Emulator&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Like the C# debugging experience, VB debugging is also very simple - just press F5!&amp;nbsp; By default the emulator is your target:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-VB+Windows+Phone+App/1778.VB-phone-5.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;You can now test the application easily using the normal Visual Studio debugger and emulator controls.&amp;nbsp; For example, to test landscape mode, simply select the direction you want to rotate the device:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-VB+Windows+Phone+App/4024.VB-phone-6.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: large"&gt;Building to Release&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Assuming we&amp;rsquo;re all done developing the application and are ready to submit it to the marketplace, we&amp;rsquo;ll now change the configuration to Release and Rebuild:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-VB+Windows+Phone+App/0310.VB-phone-7.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;In the Bin\Release folder, you will now find a XAP file, which is the package you will submit to the marketplace.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-VB+Windows+Phone+App/8171.VB-phone-8.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: large"&gt;Publishing the Application&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Your best one-stop shop for resources about publishing your application is &lt;a href="http://create.msdn.com" title="http://create.msdn.com"&gt;http://create.msdn.com&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;To submit an application to the Windows Phone Marketplace, you&amp;rsquo;ll first need to register and become a member here: &lt;a href="http://create.msdn.com/en-us/home/membership" title="http://create.msdn.com/en-us/home/membership"&gt;http://create.msdn.com/en-us/home/membership&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Here are a few additional resources to review before submitting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=183220" title="Windows Phone 7 certification requirements"&gt;Windows Phone 7 certification requirements&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg180730(v=VS.92).aspx" title="How To: Use the Windows Phone Capability Detection Tool"&gt;How To: Use the Windows Phone Capability Detection Tool&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=183218" title="UI Design and Interaction Guide for Windows Phone 7"&gt;UI Design and Interaction Guide for Windows Phone 7&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://create.msdn.com/en-US/home/about/app_submission_walkthrough_application_marketing" title="Best Practices for Application Marketing"&gt;Best Practices for Application Marketing&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://create.msdn.com/en-US/home/faq/windows_phone_7" title="FAQ (including pricing considerations)"&gt;FAQ (including pricing considerations)&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finally you can use the &lt;a href="http://create.msdn.com/en-US/home/about/app_submission_walkthrough_upload" title="application submission walkthrough"&gt;application submission walkthrough&lt;/a&gt;, to guide you through the submission process.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: large"&gt;Summary&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can find the full source code for the Visual Basic Tip Calculator application &lt;a href="http://code.msdn.microsoft.com/winphone7tipcalcsamp/Release/ProjectReleases.aspx?ReleaseId=5226" title="here"&gt;here&lt;/a&gt;. The application uses general Silverlight and Visual Basic features, which are available in other application types, and now also apply to the phone. As a VB developer, you&amp;rsquo;re well-positioned for success creating Windows Phone 7 applications.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10071444" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Tutorial/">Tutorial</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Phone/">Phone</category><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Announcement/">Announcement</category></item><item><title>November 5th What's Happening Around Visual Studio</title><link>http://blogs.msdn.com/b/jasonz/archive/2010/11/05/november-15th-what-is-happening-around-visual-studio.aspx</link><pubDate>Sat, 06 Nov 2010 00:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10071445</guid><dc:creator>Jason Zander</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10071445</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2010/11/05/november-15th-what-is-happening-around-visual-studio.aspx#comments</comments><description>&lt;p&gt;Quick recap of what's been happening around the team.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=4449babd-1dc8-40e3-9e27-2b743a4a173c&amp;amp;displaylang=en" title="Team Explorer Everywhere 2010 SP1 Beta"&gt;&lt;strong&gt;Team Explorer Everywhere 2010 SP1 Beta&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;- Download this beta release that comes with a "go-live" license and is available to all Team Explorer Everywhere owners. Check out Brian Harry's &lt;a href="http://blogs.msdn.com/b/bharry/archive/2010/11/03/team-explorer-everywhere-2010-sp1-beta-is-available-for-download.aspx" title="announcement post "&gt;announcement post &lt;/a&gt;for more details.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Making Asynchronous Programming Easy&lt;/strong&gt;&amp;nbsp;- Recommend you check out these detailed posts about Async from the teams (&lt;a href="http://blogs.msdn.com/b/csharpfaq/archive/2010/10/28/async.aspx" title="What's Next in C#? Get Ready for Async!"&gt;What's Next in C#? Get Ready for Async!&lt;/a&gt;&amp;nbsp;and &lt;a href="http://blogs.msdn.com/b/vbteam/archive/2010/10/28/async.aspx" title="Announcing the Async CTP for Visual Basic (and also Iterators!"&gt;Announcing the Async CTP for Visual Basic (and also Iterators!&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a href="http://thirdblogfromthesun.com/category/help-viewer/" title="The Story of Help in Visual Studio 2010"&gt;&lt;strong&gt;The Story of Help in Visual Studio 2010&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;- Check out Jeff Braaten's blog series that gives a behind-the-scenes look at our help system and a preview of changes that are coming.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2010/10/28/tfs-on-windows-azure-at-the-pdc.aspx" title="TFS on Windows Azure at the PDC"&gt;&lt;strong&gt;TFS on Windows Azure at the PDC&lt;/strong&gt;&lt;/a&gt; - The move to the cloud is gaining momentum.&amp;nbsp; Learn about how the TFS team is making sure your investment in TFS today has a clear path to get you there in the future.&amp;nbsp; You can&amp;nbsp;find additional&amp;nbsp;information about &lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/team-foundation-server/hosting" title="current hosting services for TFS"&gt;hosting services for TFS&lt;/a&gt; on our VS site.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/vstsue/archive/2010/10/29/vs-alm-library-updates-on-msdn-for-october-2010.aspx" title="VS ALM LIbrary Updates on MSDN"&gt;&lt;strong&gt;VS ALM Library Updates on MSDN&lt;/strong&gt;&lt;/a&gt; - A new set of documentation was recently published in our VS Library.&amp;nbsp; The team continues to build out these types of updates as a direct result of your feedback.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/lightswitch/archive/2010/10/22/how-to-create-a-ria-service-wrapper-for-odata-source.aspx" title="OData support in Visual Studio LightSwitch"&gt;&lt;strong&gt;OData support in Visual Studio LightSwitch&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;- There has been a lot of discussion of whether there is OData support in LightSwitch.&amp;nbsp;Check out the team's post&amp;nbsp;on how&amp;nbsp;to create a RIA service wrapper for OData Source. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/vssharepointtoolsblog/archive/2010/10/06/even-more-resources-for-sharepoint-developers.aspx" title="More Resources for SharePoint Developers"&gt;&lt;strong&gt;More Resources for SharePoint Developers&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;- Check out these&amp;nbsp;how-to videos that demonstrate how to use the SharePoint developer tools in Visual Studio.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;em&gt;Follow me at &lt;a href="http://twitter.com/jlzander" title="twitter.com/jlzander"&gt;&lt;span style="color: #366df4;"&gt;&lt;strong&gt;twitter.com/jlzander&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10071445" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/News/">News</category></item><item><title>Tutorial: Pic Viewer Revisited on the Async CTP</title><link>http://blogs.msdn.com/b/jasonz/archive/2010/10/28/tutorial-pic-viewer-revisited-on-the-async-ctp.aspx</link><pubDate>Thu, 28 Oct 2010 18:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10071442</guid><dc:creator>Jason Zander</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10071442</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2010/10/28/tutorial-pic-viewer-revisited-on-the-async-ctp.aspx#comments</comments><description>&lt;p&gt;As &lt;a href="http://blogs.msdn.com/b/somasegar/archive/2010/10/28/making-asynchronous-programming-easy.aspx"&gt;Soma announced this morning&lt;/a&gt;, we&amp;rsquo;ve just released the Visual Studio Async CTP, a preview of the new language support coming in VB and C# to make it far easier to write responsive client apps and scalable server apps.&amp;nbsp; You can find out more details by visiting the &lt;a href="http://msdn.com/vstudio/async"&gt;Async CTP site&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For this post, I&amp;rsquo;m going to continue my Pic Viewer WPF demo from last year, updating it to show what you can do with the Async CTP.&amp;nbsp; If you don&amp;rsquo;t yet have the Async CTP, you can get it up on the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=203690"&gt;Download Center&lt;/a&gt;.&amp;nbsp; Just install it on top of Visual Studio 2010 RTM.&amp;nbsp; The installer will patch your existing compiler and IDE bits and save the old files in case you uninstall.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ll also need the &lt;a href="http://code.msdn.microsoft.com/WpfPicViewerSample"&gt;starting project&lt;/a&gt;.&amp;nbsp; We&amp;rsquo;ll start mostly from where we left off on the Pic Viewer app last time, with an extra dropdown in place to choose between Internet picture feeds:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-Async+CTP/7827.chrysanth.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;The dropdown lets you choose between various BBC News feeds that contain images.&amp;nbsp; The app as written is nifty, but if the network is slow, you&amp;rsquo;ll notice that it becomes unresponsive each time you request a new feed.&amp;nbsp; This is because WebClient.DownloadString performs the network request synchronously on the UI thread, blocking UI rendering until the request completes:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-Async+CTP/6787.code1.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;To keep the UI responsive while waiting for the request, we&amp;rsquo;ll want to switch to an asynchronous version of DownloadString.&amp;nbsp; The new language support in the Async CTP lets us easily make this transition, keeping our control flow straightforward.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note that the code samples in this tutorial are written in C#, but the Async CTP also exposes the same feature with identical keywords in Visual Basic.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To start, let&amp;rsquo;s change our call to wc.DownloadString to instead call wc.DownloadStringTaskAsync, a new asynchronous version of DownloadString that follows the new Task-based asynchronous pattern:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-Async+CTP/3666.code2.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;By hovering over the compile error we&amp;rsquo;ve now introduced, I can see the type mismatch:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-Async+CTP/4657.code3.png" border="0" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;While DownloadString returned string, DownloadStringTaskAsync returns Task&amp;lt;string&amp;gt;.&amp;nbsp; Task&amp;lt;T&amp;gt; is a type introduced in .NET 4.0 as part of the Task Parallel Library, and represents an ongoing operation, specifically an operation that will have a value of type T when it completes.&amp;nbsp; By calling an API that returns Task&amp;lt;string&amp;gt;, we&amp;rsquo;re not receiving back a string, but rather a handle to get a string later, once the network request is completed.&lt;/p&gt;
&lt;p&gt;To wait for the network operation to finish while keeping the UI responsive, let&amp;rsquo;s add the new &amp;ldquo;await&amp;rdquo; keyword before our DownloadStringTaskAsync call.&amp;nbsp; Adding &amp;ldquo;await&amp;rdquo; gives us a compile error that &amp;ldquo;await&amp;rdquo; may only occur in a method with the new &amp;ldquo;async&amp;rdquo; modifier, so let&amp;rsquo;s add that as well:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-Async+CTP/2022.code4.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;The &amp;ldquo;await&amp;rdquo; expression here tells the compiler to suspend executing the current method and return to the caller. Only when the awaited Task (in this case a Task&amp;lt;string&amp;gt;) completes, producing the string to assign to &amp;ldquo;text&amp;rdquo;, is execution of the method resumed. In the meantime, no thread is occupied by this method.&amp;nbsp; The way &amp;ldquo;await&amp;rdquo; works behind the scenes is that the compiler schedules &amp;ldquo;the rest of the LoadFromRss method&amp;rdquo; as the callback to invoke upon completion.&lt;/p&gt;
&lt;p&gt;This is similar to what we&amp;rsquo;d do manually when calling a traditional async API (such as DownloadStringAsync), but in this case we get to maintain the natural control flow of the try block and the sequence of statements inside.&amp;nbsp; The only difference between our synchronous and asynchronous implementation is two keywords and a call to a different method.&amp;nbsp; Hit F5 and observe that our program now stays responsive while it awaits a reply from the server:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-Async+CTP/4555.pic2.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Though our app is now responsive, if you&amp;rsquo;re observant you&amp;rsquo;ll notice that each time you change categories you first see one image from the previous category before Prev and Next bring you to the new category.&amp;nbsp; To see why this is, let&amp;rsquo;s find the method that calls our LoadFromRss method.&lt;/p&gt;
&lt;p&gt;To do this, we&amp;rsquo;ll use Call Hierarchy, a new feature available in Visual Studio 2010 Professional and above.&amp;nbsp; Right-click &amp;ldquo;LoadFromRss&amp;rdquo; and choose &amp;ldquo;View Call Hierarchy&amp;rdquo; from the context menu.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-Async+CTP/3527.code5.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;This brings up the Call Hierarchy pane, letting us easily find all methods that relate to LoadFromRss.&amp;nbsp; From here we expand &amp;ldquo;Calls To &amp;lsquo;LoadFromRss&amp;rsquo;&amp;rdquo;:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-Async+CTP/5516.vs1.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Now that we&amp;rsquo;ve found the caller, Feeds_SelectionChanged, we can double-click it in the list to jump there:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-Async+CTP/5280.code6.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;We can now see the problem.&amp;nbsp; LoadFromRss kicks off an asynchronous network request, but since it returns void, we have no way to know when that request completes.&amp;nbsp; Once LoadFromRss &amp;ldquo;awaits&amp;rdquo; its network request, it immediately suspends its execution, letting Feeds_SelectionChanged continue.&amp;nbsp; This means that buttonNext_Click gets called before LoadFromRss finishes switching feeds.&lt;/p&gt;
&lt;p&gt;What we&amp;rsquo;d like to do here is &amp;ldquo;await&amp;rdquo; LoadFromRss, so that Feeds_SelectionChanged will not continue executing until LoadFromRss is finished with its network request.&amp;nbsp; We start by adding the &amp;ldquo;await&amp;rdquo;, along with the &amp;ldquo;async&amp;rdquo; modifier the compiler asks us to add:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-Async+CTP/7271.code7.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;The compiler then reminds us that we cannot await a method that returns void. We must await a Task or Task&amp;lt;T&amp;gt;, since the compiler must have an object that can signal when the async operation completes.&lt;/p&gt;
&lt;p&gt;Therefore, let&amp;rsquo;s make LoadFromRss return Task instead, a type that signals completion but does not return a value:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-Async+CTP/2084.code8.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;It turns out the return type is all we have to change.&amp;nbsp; The compiler knows this is an async method and does the magic necessary to produce a Task that will signal completion when control reaches the end of the method.&lt;/p&gt;
&lt;p&gt;If we run the program, we now see that choosing a feed shows an image from that feed right away:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-15-Async+CTP/6558.pic3.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Now that our application loads its data asynchronously and remains responsive, we can easily provide related functionality, such as a progress bar or a Cancel button, which I&amp;rsquo;ll leave as an exercise to the reader.&amp;nbsp; For more ideas, check out the samples included in the Async CTP under &amp;ldquo;Visual Studio Async CTP/Async Readme&amp;rdquo; on the Start Menu.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10071442" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/Tutorial/">Tutorial</category></item><item><title>New Components and Contributors for IronPython and IronRuby</title><link>http://blogs.msdn.com/b/jasonz/archive/2010/10/21/new-components-and-contributors-for-ironpython-and-ironruby.aspx</link><pubDate>Thu, 21 Oct 2010 23:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10079146</guid><dc:creator>Jason Zander</dc:creator><slash:comments>12</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10079146</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2010/10/21/new-components-and-contributors-for-ironpython-and-ironruby.aspx#comments</comments><description>&lt;p&gt;The CLR has always been a great environment for dynamic languages and over the last several years we have built out additional dynamic language support for the .NET Framework through efforts like the Dynamic Language Runtime (DLR) and language implementations on top of the DLR. The DLR shipped earlier this year as a built-in component of .NET Framework 4, and we now have several great language implementations built on top of it.&lt;/p&gt;
&lt;p&gt;IronPython and IronRuby are two dynamic language implementations that we have incubated internally the last few years. We have released several versions of both language environments (&lt;a href="http://ironpython.codeplex.com/releases/view/36280"&gt;IronPython releases&lt;/a&gt; and &lt;a href="http://ironruby.codeplex.com/releases"&gt;IronRuby releases&lt;/a&gt;), and all of the source code has been released under open source licenses (recently moved to Apache License V2.0). &lt;/p&gt;
&lt;p&gt;Today we are announcing new leadership for the Iron projects and a development model that will enable the broader community to contribute to their development:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The community can now make source&amp;nbsp;contributions to any component of IronPython and IronRuby. &lt;/li&gt;
&lt;li&gt;For both IronPython and IronRuby, we&amp;rsquo;ve made changes to the CodePlex projects to allow community members to make contributions without Microsoft's involvement or sponsorship by a Microsoft employee. &lt;/li&gt;
&lt;li&gt;We&amp;rsquo;ve already released the &lt;a href="http://ironpython.codeplex.com"&gt;IronPython Tools for Visual Studio&lt;/a&gt; that we developed under Apache 2.0. We&amp;rsquo;ve received great early feedback on the IronPython language service for Visual Studio. Today we are releasing the prototype code for &lt;a href="http://ironruby.codeplex.com"&gt;IronRuby Tools for Visual Studio&lt;/a&gt;, and we expect similar feedback for IronRuby tools as well. Releasing these components under the Apache 2.0 license allows for community members to use the functionality and also contribute to the IronPython and IronRuby language services. &lt;/li&gt;
&lt;li&gt;We have done a lot of ground work for the next version of IronPython v2.7 and IronRuby v1.9. &lt;/li&gt;
&lt;li&gt;We have fixed a lot of infrastructure so that the community should be able to regression test all language updates using our tests. &lt;/li&gt;
&lt;li&gt;We have enabled a full release work flow to produce builds and releases straight from the CodePlex projects. Previously, these could only easily be done from our own source depots. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As part of these changes I&amp;rsquo;m happy to announce new project leaders external to Microsoft who will take over the projects and provide leadership going forward. The IronPython project will have &lt;a href="http://tirania.org/blog/"&gt;Miguel de Icaza&lt;/a&gt;, &lt;a href="http://www.voidspace.org.uk/python/weblog/index.shtml"&gt;Michael Foord&lt;/a&gt;, &lt;a href="http://jdhardy.blogspot.com/"&gt;Jeff Hardy&lt;/a&gt;, and &lt;a href="http://blog.jimmy.schementi.com/"&gt;Jimmy Schementi&lt;/a&gt; as Coordinators. &lt;a href="http://tirania.org/blog/"&gt;Miguel de Icaza&lt;/a&gt; and &lt;a href="http://blog.jimmy.schementi.com/"&gt;Jimmy Schementi&lt;/a&gt; will be the Coordinators of IronRuby. All of these guys have worked with or on the Iron projects since their inception and I have nothing but trust and respect for the new stewards of these community projects.&lt;/p&gt;
&lt;p&gt;Overall, I hope the effect of the changes is to dramatically increase the opportunity for community members to contribute their own code to IronPython and IronRuby, and to actively participate in these projects. &lt;/p&gt;
&lt;p&gt;The IronPython and IronRuby projects began as an effort to improve support for dynamic languages in the .NET Framework and to diversify our portfolio of programming languages. These language projects have helped thousands of people since they began, and they have added value to the .NET Framework. They helped create the Dynamic Language Runtime in the .NET Framework 4, on which we have also built C#'s new 'dynamic' keyword and improved Visual Basic's late-binding support. We&amp;rsquo;ll continue to invest in making the .NET Framework a great runtime environment for dynamic languages going forward.&lt;/p&gt;
&lt;p&gt;Working with the community has always been an essential part of developing IronPython and IronRuby, and the feedback and the community review of the source code and specifications has been invaluable. We are looking forward to this new level of involvement from the IronPython and IronRuby communities, and think it will help advance the languages even further.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10079146" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/News/">News</category></item><item><title>October 14th What's Happening Around Visual Studio</title><link>http://blogs.msdn.com/b/jasonz/archive/2010/10/14/october-14th-what-is-happening-around-visual-studio.aspx</link><pubDate>Thu, 14 Oct 2010 19:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10071443</guid><dc:creator>Jason Zander</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/jasonz/rsscomments.aspx?WeblogPostID=10071443</wfw:commentRss><comments>http://blogs.msdn.com/b/jasonz/archive/2010/10/14/october-14th-what-is-happening-around-visual-studio.aspx#comments</comments><description>&lt;p&gt;Quick recap of what's been happening around the team.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[UPDATE] &lt;a href="http://blogs.msdn.com/b/visualstudio/archive/2010/10/14/hotfixes-available-for-scrolling-context-menu-problem.aspx" title="Hotfix Available for Scrolling Context Menu"&gt;&lt;strong&gt;Hotfix Available for Scrolling Context Menu&lt;/strong&gt;&lt;/a&gt; - Download the latest patch for Visual Studio and Windows Presentation Foundation that fixes the scrolling context menu.&amp;nbsp; You can also find more details in Brian Harry's &lt;a href="http://blogs.msdn.com/b/bharry/archive/2010/10/15/scrolling-menus-are-dead.aspx" title="post"&gt;post&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://visualstudiomagazine.com/articles/2010/10/01/scrum-for-everyone.aspx" title="Microsoft How-To: Scrum for Everyone"&gt;&lt;strong&gt;Microsoft How-To: Scrum for Everyone&lt;/strong&gt;&lt;/a&gt; - Aaron Bjork recently wrote a great&amp;nbsp;article for the Visual Studio Magazine that talks in detail about running a Scrum project using our &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e" title="VS Scrum 1.0 process template "&gt;VS Scrum 1.0 process template&lt;/a&gt; in TFS 2010.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/visualstudio/archive/2010/10/01/extension-analyzer-v3-for-visual-studio-2010.aspx" title="Extension Analyzer V3"&gt;&lt;strong&gt;Extension Analyzer V3&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;- Mynor Ivan Muralles' recent post describes in detail the new features that were added to the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/56253144-6ffa-4e93-8224-6c59822ce900" title="Extension Analyzer"&gt;Extension Analyzer&lt;/a&gt;.&amp;nbsp;&amp;nbsp;This VS 2010 extension helps debug issues with VSIX Components, VS Packages, PkgDef Files and MEF Components.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/lightswitch/archive/2010/10/08/how-do-i-import-and-export-data-to-from-a-csv-file-dan-seefeldt.aspx" title="How Do I: Import and Export Data to/from a CSV file"&gt;&lt;strong&gt;How Do I: Import and Export Data to/from a CSV file&lt;/strong&gt;&lt;/a&gt; - Dan Seefeldt provides a detailed example for using LightSwitch's weakly-typed data access&amp;nbsp;API's that allow you to add general purpose code to perform common tasks.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/practices/dd578307.aspx" title="patterns &amp;amp; practices Symposium (Oct. 18 - 22)"&gt;&lt;strong&gt;patterns &amp;amp; practices Symposium (Oct. 18 - 22)&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&amp;nbsp;Next week's Symposium&amp;nbsp;is a great way to learn proven practices and technologies&amp;nbsp;to&amp;nbsp;create Web, Mobile,&amp;nbsp;Cloud and Windows solutions.&amp;nbsp; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/vstsue/archive/2010/10/11/do-you-want-better-control-over-dependencies-in-your-code.aspx" title="Do you want better control over code dependencies?"&gt;&lt;strong&gt;Do you want better control over code dependencies?&lt;/strong&gt;&lt;/a&gt; - Esther Fan talks about two ways for how to approach this using &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e2a1a098-995e-4468-816d-7fdbe0a64f38&amp;amp;displaylang=en" title="VS 2010 Ultimate"&gt;VS 2010 Ultimate&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=97ca3b31-3653-4d60-bdad-3f2017febdc3&amp;amp;displaylang=en" title="Team Foundation Server 2010 Monitoring Management Pack"&gt;&lt;strong&gt;Team Foundation Server 2010 Monitoring Management Pack&lt;/strong&gt;&lt;/a&gt; -&amp;nbsp; This week the &lt;a href="http://msdn.microsoft.com/en-us/vstudio/ee358786.aspx" title="VS ALM Rangers "&gt;VS ALM Rangers&lt;/a&gt; announced the availability&amp;nbsp;of this&amp;nbsp;management pack that provides both proactive and reactive monitoring of&amp;nbsp;TFS 2010.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="http://blogs.msdn.com/b/lightswitch/archive/2010/10/12/how-do-i-set-up-security-to-control-user-access-to-parts-of-a-visual-studio-lightswitch-application-beth-massi.aspx" title="How Do I: Set up Security to Control User Access to Parts of a Visual Studio LightSwitch Application"&gt;&lt;strong&gt;How Do I: Set up Security to Control User Access to Parts of a Visual Studio LightSwitch Application&lt;/strong&gt;&lt;/a&gt; - the LightSwitch team just released another&amp;nbsp;great video for learning how to control user access in a LightSwitch application.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;Enjoy!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Follow me at &lt;a href="http://twitter.com/jlzander" title="twitter.com/jlzander"&gt;&lt;span style="color: #366df4;"&gt;&lt;strong&gt;twitter.com/jlzander&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10071443" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/jasonz/archive/tags/News/">News</category></item></channel></rss>
