<?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>The Visual Basic Team</title><link>http://blogs.msdn.com/b/vbteam/</link><description>A group blog from members of the VB team Visual Basic Developer Center | How-Do-I Videos | Power Packs | Code Samples | Team Interviews | Team Webcasts</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Roslyn September 2012 CTP Available for Download!</title><link>http://blogs.msdn.com/b/vbteam/archive/2012/09/17/roslyn-september-2012-ctp-available-for-download.aspx</link><pubDate>Mon, 17 Sep 2012 18:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10350196</guid><dc:creator>VBTeam</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10350196</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2012/09/17/roslyn-september-2012-ctp-available-for-download.aspx#comments</comments><description>&lt;p&gt;VB Enthusiasts,&lt;/p&gt;
&lt;p&gt;Following last Wednesday&amp;rsquo;s &lt;a href="http://msdn.com/vstudio"&gt;official launch&lt;/a&gt; of Visual Studio 2012, we&amp;rsquo;re excited to announce that the Roslyn September 2012 CTP is now &lt;a href="http://msdn.com/roslyn"&gt;available&lt;/a&gt; for &lt;a href="http://go.microsoft.com/fwlink/?LinkID=228400"&gt;download&lt;/a&gt; and provides support for VS 2012 RTM. Please note that Visual Studio 2010 is no longer supported by this CTP.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve been hard at work since the &lt;a href="http://blogs.msdn.com/b/somasegar/archive/2011/10/19/roslyn-ctp-available-now.aspx"&gt;first public release of Roslyn&lt;/a&gt; adding support for &lt;a href="http://go.microsoft.com/fwlink/?LinkID=254240&amp;amp;clcid=0x409"&gt;new language features&lt;/a&gt; and improving our APIs. In addition, we&amp;rsquo;ve also updated our &lt;a href="http://nuget.org/packages/Roslyn"&gt;NuGet packages&lt;/a&gt; to match the September 2012 CTP.&lt;/p&gt;
&lt;p&gt;As always, your feedback is critical! Please get involved in the discussion on the &lt;a href="http://social.msdn.microsoft.com/forums/en-us/roslyn"&gt;Roslyn forum&lt;/a&gt;, file bugs on &lt;a href="https://connect.microsoft.com/VisualStudio"&gt;Connect&lt;/a&gt;, or just give us a shout-out on Twitter @ &lt;a href="http://twitter.com/#!/search/realtime/%23RoslynCTP"&gt;#RoslynCTP&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;-ADG&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10350196" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Anthony+D-+Green/">Anthony D. Green</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Roslyn/">Roslyn</category></item><item><title>Install Published Samples with Visual Studio</title><link>http://blogs.msdn.com/b/vbteam/archive/2012/06/27/install-published-samples-with-visual-studio.aspx</link><pubDate>Wed, 27 Jun 2012 15:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10324098</guid><dc:creator>Alan Berman</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10324098</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2012/06/27/install-published-samples-with-visual-studio.aspx#comments</comments><description>&lt;p&gt;You can use Visual Studio 2012 RC&amp;nbsp; to download and install samples from the &lt;a href="http://code.msdn.microsoft.com/"&gt;MSDN Code Gallery&lt;/a&gt;.&amp;nbsp; You can download only the samples you need, or you can download one or more Sample Packs, which group several samples that relate to a technology or topic. You'll receive a notification if source code changes are published for any sample that you download.&lt;/p&gt;
&lt;p&gt;To locate the samples, open the &lt;strong&gt;New Project&lt;/strong&gt; dialog, and then expand the &lt;strong&gt;Online&lt;/strong&gt; tab, and then the &lt;strong&gt;Samples&lt;/strong&gt; node.&lt;/p&gt;
&lt;p&gt;To locate the sample packs, choose &lt;strong&gt;Tools&lt;/strong&gt;, &lt;strong&gt;Extensions and Updates&lt;/strong&gt; on the menu bar. In the &lt;strong&gt;Extensions and Updates&lt;/strong&gt; dialog box, expand the &lt;strong&gt;Online&lt;/strong&gt; tab, and then expand the &lt;strong&gt;Samples Gallery&lt;/strong&gt; node. After you install a sample pack, you can install the individual samples from the &lt;strong&gt;Installed&lt;/strong&gt; tab of the &lt;strong&gt;New Project&lt;/strong&gt; dialog box.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Working Copy and Master Copy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When you install an online sample, the solution is stored in two locations:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;bull; A working copy is stored in the location that you specify by using the &lt;strong&gt;New Project&lt;/strong&gt; dialog box. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;bull; A separate master copy is stored on your computer.&lt;/p&gt;
&lt;p&gt;After you install a sample, it appears on the Installed tab of the &lt;strong&gt;New Project&lt;/strong&gt; dialog box. You can create new working copies from the master copy without remembering where you found the sample on the web and without being connected to the Internet.&lt;/p&gt;
&lt;p&gt;If a sample is no longer useful, you can remove the master copy from the &lt;strong&gt;Extensions and Updates&lt;/strong&gt; dialog box, which you can open by choosing &lt;strong&gt;Tools&lt;/strong&gt;, &lt;strong&gt;Extensions and Updates&lt;/strong&gt;. Removing the master copy doesn't remove any working copies that you created.&lt;/p&gt;
&lt;p&gt;You'll receive a notification if source code changes are published for an installed master copy of a sample. The notification will appear in both the Windows notification area when Visual Studio is open and on the &lt;strong&gt;Updates&lt;/strong&gt; tab of the &lt;strong&gt;Extensions and Updates&lt;/strong&gt; dialog box. If you update a sample, you'll replace the master copy but not any working copies.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Installing a Sample&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;To install a sample, choose &lt;strong&gt;File&lt;/strong&gt;, &lt;strong&gt;New&lt;/strong&gt;, &lt;strong&gt;Project&lt;/strong&gt;.&amp;nbsp; In the &lt;strong&gt;New Project&lt;/strong&gt; dialog box, expand the &lt;strong&gt;Online&lt;/strong&gt; tab, and then expand the &lt;strong&gt;Samples&lt;/strong&gt; node.&lt;/li&gt;
&lt;li&gt;Find the samples that you want by opening the nodes for the programming language, the platform, and the technology and then choosing the topic.&amp;nbsp; Or you can use the &lt;strong&gt;Search Installed Samples&lt;/strong&gt; box in the top-right corner. Choose a sample that you want to install.&lt;/li&gt;
&lt;li&gt;For the &lt;strong&gt;Name&lt;/strong&gt;, specify a name for the first working copy of the sample.&amp;nbsp; When you install the sample, the &lt;strong&gt;Name&lt;/strong&gt; will become the name of the folder and the name of the solution file. Names of other files in the working copy will stay the same as those in the master copy. The &lt;strong&gt;Name&lt;/strong&gt; doesn&amp;rsquo;t apply to the master copy.&lt;/li&gt;
&lt;li&gt;For the &lt;strong&gt;Location&lt;/strong&gt;, specify a folder.&amp;nbsp; The location is where the working copy, not the master copy, will be installed. Note that the default value is a Samples folder and not a Projects folder.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt;.&amp;nbsp; If you agree with the license terms, click &lt;strong&gt;Install&lt;/strong&gt;.&amp;nbsp; A working copy of the solution is stored in the location that you specified, and a separate master copy is stored on your computer.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can open a working copy of an installed sample by using the &lt;strong&gt;Open&lt;/strong&gt; &lt;strong&gt;Project&lt;/strong&gt; dialog box. Note that the default location for the working copy was the Samples folder, not the Projects folder.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Managing the Master Copy of an Installed Sample&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You can create a working copy of an installed sample from its master copy, or you can disable or uninstall the master copy.&amp;nbsp; Let's look at two dialog boxes where you can access the master copy.&lt;/li&gt;
&lt;li&gt;Open the &lt;strong&gt;New Project&lt;/strong&gt; dialog box, then expand the &lt;strong&gt;Installed&lt;/strong&gt; tab, and expand the &lt;strong&gt;Samples&lt;/strong&gt; node.&amp;nbsp; Expand the nodes for the programming language, the platform, and the technology, and then choose the topic.&lt;/li&gt;
&lt;li&gt;The master copies of the samples that you've installed appear.&amp;nbsp; Double-click a sample to create a new working copy.&amp;nbsp; On the Installed tab, you can create working copies from the master copy without remembering where you found the sample on the web or being connected to the Internet.&lt;/li&gt;
&lt;li&gt;Close &lt;strong&gt;New Project&lt;/strong&gt; dialog box and open &lt;strong&gt;Tools&lt;/strong&gt;, &lt;strong&gt;Extensions and Updates&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In the &lt;strong&gt;Extensions and Updates&lt;/strong&gt; dialog, choose the &lt;strong&gt;Installed&lt;/strong&gt; tab, and then expand the &lt;strong&gt;Samples&lt;/strong&gt; node.&amp;nbsp; The master copies of the samples that you've installed appear.&amp;nbsp; You can disable or uninstall master copies without affecting any working copies that you've created. &lt;br /&gt;Note that if source code changes have been published for any sample that you installed, a notification appears on the Update tab. For each update listed, you can choose the Update button to update your master copy.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Installing a Sample Pack&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Choose &lt;strong&gt;Tools&lt;/strong&gt;, &lt;strong&gt;Extensions and Updates&lt;/strong&gt;.&amp;nbsp; In the &lt;strong&gt;Extensions and Updates&lt;/strong&gt; dialog box, expand the &lt;strong&gt;Online&lt;/strong&gt; tab, and then expand the &lt;strong&gt;Samples Gallery&lt;/strong&gt; node.&lt;/li&gt;
&lt;li&gt;Find the sample pack that you want by using the &lt;strong&gt;Search Samples Gallery&lt;/strong&gt; box in the top-right corner or by expanding the nodes for the programming language, the platform, and the technology and then choosing the topic.&lt;/li&gt;
&lt;li&gt;Choose a sample pack, and click &lt;strong&gt;Download&lt;/strong&gt;.&amp;nbsp; If you agree with the license terms, click &lt;strong&gt;Install&lt;/strong&gt;.&amp;nbsp; The sample pack is installed on your computer, but working copies of the samples haven't been created.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Close &lt;strong&gt;Extensions and Updates&lt;/strong&gt; and choose &lt;strong&gt;File&lt;/strong&gt;, &lt;strong&gt;New&lt;/strong&gt;, &lt;strong&gt;Project&lt;/strong&gt;.&amp;nbsp; In the &lt;strong&gt;New Project&lt;/strong&gt; dialog, expand the &lt;strong&gt;Installed&lt;/strong&gt; tab, and then expand the &lt;strong&gt;Samples&lt;/strong&gt; node.&amp;nbsp; Browse the nodes or use the &lt;strong&gt;Search Installed Samples&lt;/strong&gt; box in the top&amp;ndash;right corner to find the samples that you installed.&amp;nbsp; Double-click the sample to create a new working copy of that sample.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;br /&gt;For more information, see &lt;a href="http://blogs.msdn.com/b/visualstudio/archive/2012/06/11/world-of-samples-at-your-fingertips.aspx"&gt;A World of Samples at your Fingertips&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks to Anthony Cangialosi for providing technical information.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10324098" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/IDE/">IDE</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Alan+Berman/">Alan Berman</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Samples/">Samples</category></item><item><title>More VB Metro Samples available</title><link>http://blogs.msdn.com/b/vbteam/archive/2012/06/05/more-vb-metro-samples-available.aspx</link><pubDate>Tue, 05 Jun 2012 23:27:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10315559</guid><dc:creator>VBTeam</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10315559</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2012/06/05/more-vb-metro-samples-available.aspx#comments</comments><description>&lt;p&gt;With the recent release of the Windows 8 Release Preview and the Visual Studio 2012 Release Candidate we also have more of the Metro samples available for VB developers.&lt;/p&gt;
&lt;p&gt;Although not all the samples are available for VB, there is a good selection of samples showing &amp;nbsp;you how utilize much of the important functionality now available.&amp;nbsp;&amp;nbsp; More samples will be made available as the all the products move towards their final RTM relase.&lt;/p&gt;
&lt;p&gt;Spotty&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resources&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Windows 8 Release Preview - &lt;a href="http://windows.microsoft.com/en-US/windows-8/release-preview"&gt;http://windows.microsoft.com/en-US/windows-8/release-preview&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio 2012 RC - &lt;a href="http://www.microsoft.com/visualstudio/11/en-us"&gt;http://www.microsoft.com/visualstudio/11/en-us&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Metro Style Apps - &lt;a href="http://code.msdn.microsoft.com/windowsapps/Windows-8-Modern-Style-App-Samples"&gt;http://code.msdn.microsoft.com/windowsapps/Windows-8-Modern-Style-App-Samples&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=10315559" width="1" height="1"&gt;</description></item><item><title>Announcing Microsoft “Roslyn” June 2012 CTP</title><link>http://blogs.msdn.com/b/vbteam/archive/2012/06/05/announcing-microsoft-roslyn-june-2012-ctp.aspx</link><pubDate>Tue, 05 Jun 2012 20:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10315112</guid><dc:creator>VBTeam</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10315112</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2012/06/05/announcing-microsoft-roslyn-june-2012-ctp.aspx#comments</comments><description>&lt;p&gt;Hey, fellow VBs,&lt;/p&gt;
&lt;p&gt;Today, we're excited to announce that the Roslyn June 2012 CTP is now &lt;a href="http://www.msdn.com/roslyn"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;available&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; for &lt;a href="http://go.microsoft.com/fwlink/?LinkID=228400"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;download&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Since the &lt;a href="http://blogs.msdn.com/b/vbteam/archive/2011/10/19/introducing-the-Microsoft-roslyn-ctp.aspx"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;first public release of Roslyn&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, we&amp;rsquo;ve been hard at work implementing new &lt;a href="http://go.microsoft.com/fwlink/?LinkID=254240&amp;amp;clcid=0x409"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;language features&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, addressing top customer feedback from the &lt;a href="http://blogs.msdn.com/b/csharpfaq/archive/2011/10/19/introducing-the-microsoft-roslyn-ctp.aspx"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;October CTP&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, iterating on our API design and improving performance across our IDE and compiler scenarios.&amp;nbsp; With the recent release of &lt;a href="http://www.microsoft.com/visualstudio/11/en-us/downloads"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Visual Studio 2012 RC&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, we have updated the Roslyn CTP to work with Visual Studio 2012 RC.&amp;nbsp; There&amp;rsquo;s never been a better time to grab the VS 2012 RC and the &lt;a href="http://www.msdn.com/roslyn"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Roslyn CTP&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;You can find an in-depth look at what&amp;rsquo;s new in the Roslyn June 2012 CTP on &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2012/06/05/announcing-microsoft-roslyn-june-2012-ctp.aspx"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Jason Zander&amp;rsquo;s blog&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; and the &lt;a href="http://blogs.msdn.com/b/visualstudio/archive/2012/06/05/announcing-microsoft-roslyn-june-2012-ctp.aspx"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Visual Studio blog&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;.&amp;nbsp; The CTP ships with a number of documents that provide an excellent way to get started &amp;ndash; start with the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=230702"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;overview&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; document, and then move on to the &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=27745"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;walkthroughs&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;.&amp;nbsp; The &lt;a href="http://blogs.msdn.com/b/vbteam/archive/2011/11/18/roslyn-syntax-visualizers.aspx"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;syntax visualizer&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; is particularly an invaluable tool for exploring the Roslyn Syntax API. Also, stay tuned for more posts on this blog using the API to do cool things with VB!&lt;/p&gt;
&lt;p&gt;As always, your feedback is a critical part of our design process!&amp;nbsp; Because it&amp;rsquo;s early in the project, we&amp;rsquo;re most interested in feedback around the API and understanding what scenarios you&amp;rsquo;d like to accomplish. Please get involved in the discussion about Roslyn on our &lt;a href="http://social.msdn.microsoft.com/forums/en-us/roslyn"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;forums&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;. You can also file bugs on our &lt;a href="http://connect.microsoft.com/visualstudio"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Connect site&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;. Some of the team members are also on Twitter, and will be keeping an eye on the &lt;a href="http://twitter.com/#!/search/realtime/%23RoslynCTP"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;#RoslynCTP&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; hashtag.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;-ADG&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;About the Author&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Anthony is a Program Manager on the Visual Basic and C# Languages team primarily responsible for the Roslyn compilers and Compiler APIs and is a member of both the Visual Basic Language Design team and the Roslyn Design team.&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=10315112" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Anthony+D-+Green/">Anthony D. Green</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Roslyn/">Roslyn</category></item><item><title>Kinect SDK v1.5 - Now with VB Samples !!!</title><link>http://blogs.msdn.com/b/vbteam/archive/2012/05/25/kinect-sdk-v1-5-now-with-vb-samples.aspx</link><pubDate>Fri, 25 May 2012 17:25:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10310516</guid><dc:creator>VBTeam</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10310516</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2012/05/25/kinect-sdk-v1-5-now-with-vb-samples.aspx#comments</comments><description>&lt;div&gt;
&lt;p&gt;As developers start to realize the full potential of Microsoft Kinect and new hardware is made available for the PC it&amp;rsquo;s really great to see the Kinect team provide some sample support for VB developers.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For a while the Compilers team (who handle both VB and C# compilers) have been hearing VB developers &amp;nbsp;asking for content on new technologies and have been working with other product teams to ensure VB developers get some content in a timely manner.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The Kinect team has included a &amp;ldquo;Basics&amp;rdquo; series of samples with language coverage in C++, C# and Visual Basic.&amp;nbsp; Kudos to the Kinect team for realizing that VB developers also want to use their cool technology.&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;Although not every sample has a VB equivalent, there is definitely enough content to get VB developers and running with this amazing technology and the great potential this opens up for interacting with you applications.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The new version of the SDK is able to be used with existing Kinect for Xbox360 hardware for you own personal development purposes and this should get you going if you happen to have one lying around, however the newer more advanced Windows Sensor is definitely recommended and should be planned for if you want to do anything for public release.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Kinect Team Page&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;a href="http://www.microsoft.com/en-us/kinectforwindows/"&gt;http://www.microsoft.com/en-us/kinectforwindows/&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;SDK Download&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx"&gt;http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spotty&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10310516" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/VB_5F00_Express/">VB_Express</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Spotty+Bowles/">Spotty Bowles</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/VB/">VB</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Visual+Basic+Kinect/">Visual Basic Kinect</category></item><item><title>Async Targeting Pack for Visual Studio 11, now available for .NET 4 and Silverlight 5</title><link>http://blogs.msdn.com/b/vbteam/archive/2012/04/26/async-targeting-pack-for-visual-studio-11-now-available-for-net-4-and-silverlight-5.aspx</link><pubDate>Thu, 26 Apr 2012 16:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10298102</guid><dc:creator>VBTeam</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10298102</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2012/04/26/async-targeting-pack-for-visual-studio-11-now-available-for-net-4-and-silverlight-5.aspx#comments</comments><description>&lt;p&gt;If you&amp;rsquo;ve held off&amp;nbsp;trying Visual Studio 11 Beta because your .NET 4 or Silverlight 5 app uses the Async CTP, your wait is over!&lt;/p&gt;
&lt;p&gt;Today we&amp;rsquo;ve published the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=250980"&gt;Async Targeting Pack for Visual Studio 11&lt;/a&gt;, a NuGet package that lets your Visual Studio 11 projects target .NET 4 and Silverlight 5 while taking advantage of VB11's new Await keyword.&amp;nbsp; While Visual Studio 11 provides built-in support for Await in projects that target .NET 4.5 or .NET for Metro style apps, this targeting pack provides the API support to expand the set of target platforms to include .NET 4 and Silverlight 5 as well.&lt;/p&gt;
&lt;p&gt;Check out our &lt;a href="http://go.microsoft.com/fwlink/?LinkId=250980"&gt;release notes&lt;/a&gt; for more details on how to install NuGet and add the package reference in Visual Studio 11 Beta, and read &lt;a href="http://blogs.msdn.com/b/lucian/archive/2012/04/24/async-targeting-pack.aspx"&gt;Lucian Wischik's blog post&lt;/a&gt; for more details.&lt;/p&gt;
&lt;p&gt;Happy async!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10298102" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Alex+Turner/">Alex Turner</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/asynchronous+programming/">asynchronous programming</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/await/">await</category></item><item><title>Visual Basic 11 Beta Available for Download!</title><link>http://blogs.msdn.com/b/vbteam/archive/2012/02/28/visual-basic-11-beta-available-for-download.aspx</link><pubDate>Wed, 29 Feb 2012 02:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10274151</guid><dc:creator>VBTeam</dc:creator><slash:comments>16</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10274151</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2012/02/28/visual-basic-11-beta-available-for-download.aspx#comments</comments><description>&lt;p&gt;&lt;meta name="Generator" content="Microsoft Word 14 (filtered)" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;As you may have read in &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2012/02/29/welcome-to-the-beta-of-visual-studio-11-and-net-framework-4-5.aspx"&gt;Jason&amp;rsquo;s announcement&lt;/a&gt;, today we announced that Visual Studio 11 Beta is now available for &lt;a href="http://go.microsoft.com/fwlink/p/?LinkId=240162"&gt;download&lt;/a&gt;.&amp;nbsp; This is a &lt;b&gt;&lt;i&gt;huge&lt;/i&gt;&lt;/b&gt;&lt;i&gt; &lt;/i&gt;release for Visual Basic as it provides full platform support for building Windows 8 Metro style apps, a first-class asynchronous programming experience, and also the long-awaited &lt;i&gt;Iterators&lt;/i&gt; feature.&amp;nbsp; And in the true spirit of VB, you&amp;rsquo;ll see a ton of other improvements that will make you more productive every day.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;Async&lt;br /&gt;&lt;/b&gt;As the world moves to mobile phones and tablets, the demand for responsiveness in today&amp;rsquo;s applications is higher than ever.&amp;nbsp; Things like database queries, network requests, and disk access all have potential to block the UI and leave users frustrated.&amp;nbsp; While user expectations continue to climb, the tool/platform support for making asynchronous programming easy hasn&amp;rsquo;t kept pace, until now.&amp;nbsp; With the new Async/Await keywords, VB11 makes asynchronous programming really simple:&amp;nbsp;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Public&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Async&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Function&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; GetStorageFile() &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;Task&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;(&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Of&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; Windows.Storage.&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;StorageFile&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Dim&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; packageFolder = Windows.ApplicationModel.&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;Package&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;.Current.InstalledLocation&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TextBlock1.Text =&amp;nbsp;&lt;/span&gt;&lt;span&gt;"Retrieving File..."&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Dim&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; packagedFile = &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Await&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; packageFolder.GetFileAsync(&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: maroon; font-size: 9.5pt;"&gt;"FileLocatedInPackage"&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #6464b9; font-size: 9.5pt;"&gt;..&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Return&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; packagedFile&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Function&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;The Await keyword kicks off an asynchronous request without blocking the UI.&amp;nbsp; The function returns a Task(Of T) at the point of the Await expression, but this is just a placeholder for the return value that will come from GetFileAsync.&amp;nbsp; Once that work completes, the method &lt;i&gt;resumes&lt;/i&gt; and the variable packagedFile is assigned to.&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;Be sure to check out the &lt;a href="http://msdn.microsoft.com/en-us/vstudio/async"&gt;Asynchronous Programming Developer Center&lt;/a&gt; for articles, videos, and samples on how to use Async.&amp;nbsp; This &lt;a href="http://blogs.msdn.com/b/vbteam/archive/2010/10/28/async.aspx"&gt;blog post&lt;/a&gt; has a good conceptual explanation of async, and &lt;a href="http://blogs.msdn.com/b/lucian/"&gt;Lucian&amp;rsquo;s blog&lt;/a&gt; has a ton of great resources for learning the feature.&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;VB11 also includes full async debugging support.&amp;nbsp; F10-Step-Over (or Shift+F8 on VB Profile) now does what you&amp;rsquo;d expect.&amp;nbsp; If you&amp;rsquo;re still on the function-declaration-line then it steps out to the caller. But often (e.g. if you&amp;rsquo;ve gone past an await) then the concept of &amp;ldquo;caller&amp;rdquo; doesn&amp;rsquo;t even exist. So, for consistency, if you&amp;rsquo;re anywhere outside the declaration line then Shift+F11 (Ctrl+Shift+F8 on VB Profile) will step out to someone who&amp;rsquo;s awaiting you.&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;The other thing we&amp;rsquo;ve added is async unit-testing support in MSTest.&amp;nbsp; xUnit now supports this as well.&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;span style="color: #2b91af;"&gt;TestMethod&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Async&lt;/span&gt; &lt;span style="color: blue;"&gt;Function&lt;/span&gt; Test1() &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Task&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; x = &lt;span style="color: blue;"&gt;Await&lt;/span&gt; Engine.GetSevenAsync() &lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Assert&lt;/span&gt;.AreEqual(x, 6) &lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Function&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Xunit.&lt;span style="color: #2b91af;"&gt;Fact&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Async&lt;/span&gt; &lt;span style="color: blue;"&gt;Function&lt;/span&gt; Test2() &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Task&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; x = &lt;span style="color: blue;"&gt;Await&lt;/span&gt; Engine.GetSevenAsync()&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Xunit.&lt;span style="color: #2b91af;"&gt;Assert&lt;/span&gt;.Equal(x, 6)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Function&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;Iterators&lt;br /&gt;&lt;/b&gt;&lt;a href="http://msdn.microsoft.com/en-us/vstudio/gg497937"&gt;Iterators&lt;/a&gt; are a new feature in VB11 that make it easier to walk through collections such as lists and arrays.&amp;nbsp; Each element is returned to the calling method immediately, before the next element in the sequence is accessed.&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&amp;nbsp;In addition to working with collections, you can use iterators to write your own custom LINQ query operators.&amp;nbsp; For instance, the following example prints out only the even numbers in the array:&amp;nbsp;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Module&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;Module1&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Sub&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; Main()&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Dim&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; query = &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;From&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; n &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;In&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Where&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; n &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Mod&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; 2 = 0&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Select&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; n&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;For&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Each&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; item &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;In&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; query&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;Console&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;.WriteLine(item)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Next&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;Console&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;.ReadLine()&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Sub&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;System.Runtime.CompilerServices.&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;Extension&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Iterator&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Function&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; Where(source &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Integer&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;(), &lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; predicate &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;Func&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;(&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Of&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Integer&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;, &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Boolean&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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;&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;IEnumerable&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;(&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Of&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Integer&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;For&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Each&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; num &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;In&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; source&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;If&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; predicate(num) &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Then&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;Console&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;.WriteLine(&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: maroon; font-size: 9.5pt;"&gt;"Yielding "&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &amp;amp; num)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Yield&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; num&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;If&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Next&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Function&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Module&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;Note the new &lt;i&gt;Iterator&lt;/i&gt; and &lt;i&gt;Yield&lt;/i&gt; keywords in the Where function.&amp;nbsp; (The LINQ query binds to this Where extension method since it&amp;rsquo;s a better match than the Where(Of T) operator defined in the standard query operators).&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&amp;nbsp;&lt;strong&gt;VB also allows iterator lambdas!&lt;/strong&gt;&amp;nbsp; In this example, we use an iterator in an expression context and combine it in a powerful way with XML Literals (note that we&amp;rsquo;re effectively embedding &lt;i&gt;statements&lt;/i&gt; inside embedded expressions now):&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Dim&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; images =&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: #6464b9; font-size: 9.5pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #844646; font-size: 9.5pt;"&gt;html&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #6464b9; font-size: 9.5pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: #555555; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: #6464b9; font-size: 9.5pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #844646; font-size: 9.5pt;"&gt;body&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #6464b9; font-size: 9.5pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: #555555; font-size: 9.5pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: yellow; color: #555555; font-size: 9.5pt;"&gt;&amp;lt;%=&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Iterator&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Function&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;()&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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;&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;For&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Each&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; fn &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;In&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; IO.&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;Directory&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;.EnumerateFiles(&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: maroon; font-size: 9.5pt;"&gt;"c:\\"&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;, &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: maroon; font-size: 9.5pt;"&gt;"*.jpg"&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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;&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;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Yield&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #6464b9; font-size: 9.5pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #844646; font-size: 9.5pt;"&gt;img&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #b96464; font-size: 9.5pt;"&gt;src&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #6464b9; font-size: 9.5pt;"&gt;=&lt;/span&gt;&lt;span style="font-family: Consolas; background: yellow; color: #555555; font-size: 9.5pt;"&gt;&amp;lt;%=&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; fn &lt;/span&gt;&lt;span style="font-family: Consolas; background: yellow; color: #555555; font-size: 9.5pt;"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #6464b9; font-size: 9.5pt;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #844646; font-size: 9.5pt;"&gt;img&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #6464b9; font-size: 9.5pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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;&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Next&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Function&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;.Invoke() &lt;/span&gt;&lt;span style="font-family: Consolas; background: yellow; color: #555555; font-size: 9.5pt;"&gt;%&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: #555555; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: #6464b9; font-size: 9.5pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #844646; font-size: 9.5pt;"&gt;body&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #6464b9; font-size: 9.5pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: #555555; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: #6464b9; font-size: 9.5pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #844646; font-size: 9.5pt;"&gt;html&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #6464b9; font-size: 9.5pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;Namespace Global&lt;br /&gt;&lt;/b&gt;VB has always had the &lt;i&gt;Namespace&lt;/i&gt; and &lt;i&gt;Global&lt;/i&gt; keywords, but now you can use them together!&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;Namespace&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: blue;"&gt;Global&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;Namespace&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: blue;"&gt;Global&lt;/span&gt;.&amp;lt;NamespaceName&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;This gives you a lot more flexibility around which namespace your code ends up in, and is particularly useful for code-generation scenarios.&amp;nbsp; For a full description of the feature, check out Lucian&amp;rsquo;s excellent post &lt;a href="http://blogs.msdn.com/b/vbteam/archive/2011/09/27/announcement-namespace-global.aspx"&gt;here&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;Optional Parameters in Overloaded Methods&lt;br /&gt;&lt;/b&gt;Previously, overloads of a method were not permitted if the only difference between them was optional parameters, so the following code would be invalid:&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt; f(x &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Integer&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt; f(x &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Integer&lt;/span&gt;, &lt;span style="color: blue;"&gt;Optional&lt;/span&gt; y &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Integer&lt;/span&gt; = 0)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;In VB11 this code is now valid, which gives you more flexibility and improves the ability to version methods (though there&amp;rsquo;s still more we need to do in this area).&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;Limitless (Command-line) Errors!&lt;br /&gt;&lt;/b&gt;This is actually a good thing, let me explain.&amp;nbsp; For performance reasons, the Visual Basic IDE maxes out at 101 errors (with error #102 being &amp;ldquo;Maximum number of errors exceeded.&amp;rdquo;)&amp;nbsp; This can make it difficult to estimate the amount of work remaining in certain situations, particularly in upgrade scenarios.&amp;nbsp; We have &lt;i&gt;removed&lt;/i&gt; this limit from the command-line compiler in this release, though it still there in the IDE.&amp;nbsp; What this means is if you want to know exactly how many errors there are for a project, just invoke the compiler through msbuild.exe or vbc.exe and you&amp;rsquo;ll get your answer.&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;Caller Info Attributes&lt;br /&gt;&lt;/b&gt;The compiler now recognizes three special attributes: &amp;lt;CallerMemberName&amp;gt;, &amp;lt;CallerLineNumber&amp;gt;, and &amp;lt;CallerFilePath&amp;gt;.&amp;nbsp; This is great for logging scenarios, and allows you to have the name, line number, and/or file path of the invoking method passed into the logging function as optional parameters.&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;Another great use case for this is when implementing INotifyPropertyChanging:&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Class&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;C&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Implements&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;INotifyPropertyChanged&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Dim&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; backing &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;New&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;Dictionary&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;(&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Of&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;String&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;, &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Object&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Property&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; p &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;String&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Get&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Return&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; GetProp(&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Of&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;String&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;)()&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Get&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Set&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;(&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;ByVal&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; value &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;String&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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; SetProp(value)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Set&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Property&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Public&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Function&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; GetProp(&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Of&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;T&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;)(&lt;/span&gt;&lt;span style="font-family: Consolas; background: yellow; color: black; font-size: 9.5pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: Consolas; background: yellow; color: #2b91af; font-size: 9.5pt;"&gt;CallerMemberName&lt;/span&gt;&lt;span style="font-family: Consolas; background: yellow; color: black; font-size: 9.5pt;"&gt;()&amp;gt;&lt;/span&gt;&lt;span style="font-family: Consolas; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Optional&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; prop &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;String&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; = &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Nothing&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;) &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;T&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;Debug&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;.Assert(prop &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;IsNot&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Nothing&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Try&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Return&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;CType&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;(backing(prop), &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;T&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Catch&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; ex &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;KeyNotFoundException&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Return&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;CType&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;(&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Nothing&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;, &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;T&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Try&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Function&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Public&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Sub&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; SetProp(&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Of&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;T&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;IComparable&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;(&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Of&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;T&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;))(value &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;T&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;, &lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&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="font-family: Consolas; background: yellow; color: black; font-size: 9.5pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: Consolas; background: yellow; color: #2b91af; font-size: 9.5pt;"&gt;CallerMemberName&lt;/span&gt;&lt;span style="font-family: Consolas; background: yellow; color: black; font-size: 9.5pt;"&gt;()&amp;gt;&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Optional&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; prop &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;String&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; = &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Nothing&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Try&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Dim&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; oldvalue = &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;CType&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;(backing(prop), &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;T&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;If&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; value.CompareTo(oldvalue) = 0 &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Then&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Return&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Catch&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; ex &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;KeyNotFoundException&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Try&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; backing(prop) = value&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&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="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;RaiseEvent&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; PropertyChanged(&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Me&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;, &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;New&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;PropertyChangedEventArgs&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;(prop))&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Sub&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Public&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Event&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; PropertyChanged(sender &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Object&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;, e &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;PropertyChangedEventArgs&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;) &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Implements&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;INotifyPropertyChanged&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;.PropertyChanged&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Class&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;Simplified Code Spit (a.k.a. No More ByVal!)&lt;br /&gt;&lt;/b&gt;The IDE will no longer insert &amp;ldquo;ByVal&amp;rdquo; in method signatures unless you explicitly type it in.&amp;nbsp; This reduces a lot of the visual noise in method declarations and makes them more readable.&amp;nbsp; Also, the IDE will no longer insert the fully-qualified name for a type (such as &amp;ldquo;System.Object&amp;rdquo; or &amp;ldquo;System.EventArgs&amp;rdquo;) when the applicable imports are already in scope.&amp;nbsp; (Because in this case &amp;ldquo;System&amp;rdquo; is already a project-level import).&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;VB10:&lt;/p&gt;
&lt;p style="line-height: normal; margin-bottom: 0pt;" 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; Form1_Load(&lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: blue;"&gt;As&lt;/span&gt; System.&lt;span style="color: #2b91af;"&gt;Object&lt;/span&gt;, &lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; e &lt;span style="color: blue;"&gt;As&lt;/span&gt; System.&lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt;) &lt;span style="color: blue;"&gt;Handles&lt;/span&gt; &lt;span style="color: blue;"&gt;MyBase&lt;/span&gt;.Load&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;VB11:&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Private&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Sub&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; Form1_Load(sender &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Object&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;, e &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;As&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: #2b91af; font-size: 9.5pt;"&gt;EventArgs&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;) &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;Handles&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: blue; font-size: 9.5pt;"&gt;MyBase&lt;/span&gt;&lt;span style="font-family: Consolas; background: white; color: black; font-size: 9.5pt;"&gt;.Load&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;This also works automatically for all interface methods generated when you press enter after an Implements clause.&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;View Call Hierarchy&lt;br /&gt;&lt;/b&gt;In VB11, if you right-click a method name, you&amp;rsquo;ll see a new option for &amp;ldquo;View Call Hierarchy&amp;rdquo; that brings up a window that looks like this:&amp;nbsp;&lt;/p&gt;
&lt;div class="WordSection1"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/0407.CallHierarchy.jpg"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/0407.CallHierarchy.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&lt;br /&gt;(Click on the image to see a more detailed view)&lt;/div&gt;
&lt;div class="WordSection1"&gt;&amp;nbsp;&lt;/div&gt;
&lt;p class="MsoNormal"&gt;It shows you all calls to/from that method, and also if it gets overridden anywhere.&amp;nbsp; You can then walk the tree and understand how these methods are used throughout your codebase.&amp;nbsp; For a more detailed overview, check out &lt;a href="http://blogs.msdn.com/b/vbteam/archive/2011/09/20/visual-studio-11-developer-preview-visual-basic-vb-call-hierarchy.aspx"&gt;this post&lt;/a&gt;.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&lt;b&gt;Getting Started&lt;br /&gt;&lt;/b&gt;Hopefully that gives you a taste of what&amp;rsquo;s new in VB11 (and we haven&amp;rsquo;t even touched on all the performance improvements!).&amp;nbsp; There are far more enhancements than we can cover here, so watch for a future post that goes into more detail.&amp;nbsp; For next steps:&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="text-indent: -0.25in; margin-left: 0.5in;" class="MsoNoSpacing"&gt;&lt;b&gt;1.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;Download the Bits!&lt;br /&gt;&lt;/b&gt;Download &lt;a href="http://go.microsoft.com/fwlink/p/?LinkId=240162"&gt;Visual Studio 11 Beta&lt;/a&gt; (you can also get Team Foundation Server 11 Beta, and .NET Framework 4.5 Beta from here).&amp;nbsp; Visual Studio 11 Beta can be installed on Windows 7, or you can install it on top of the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=239723"&gt;Windows 8 Consumer Preview&lt;/a&gt;.&lt;/p&gt;
&lt;p style="margin-left: 0.25in;" class="MsoNoSpacing"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="text-indent: -0.25in; margin-left: 0.5in;" class="MsoNoSpacing"&gt;&lt;b&gt;2.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;Learn More!&lt;br /&gt;&lt;/b&gt;In addition to Jason&amp;rsquo;s post, &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2012/02/29/welcome-to-the-beta-of-visual-studio-11-and-net-framework-4-5.aspx"&gt;Jason&amp;rsquo;s announcement&lt;/a&gt;, be sure to check out the new &lt;a href="http://blogs.msdn.com/b/windowsappdev"&gt;Windows 8 app developer blog&lt;/a&gt; for a list of great improvements across Visual Studio.&amp;nbsp; For Samples, check out the &lt;a href="http://code.msdn.microsoft.com/windowsapps"&gt;Windows 8 Sample Gallery&lt;/a&gt;. To explore what&amp;rsquo;s new in Windows 8, check out the &lt;a href="http://blogs.msdn.com/b/b8"&gt;Building Windows 8 blog post announcing the Windows 8 Customer Preview&lt;/a&gt;.&lt;/p&gt;
&lt;p style="margin-left: 0.5in;" class="MsoNoSpacing"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="text-indent: -0.25in; margin-left: 0.5in;" class="MsoNoSpacing"&gt;3.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Send us Feedback&lt;/b&gt;!&lt;br /&gt;The forums are available for questions, both in &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/vsvnext"&gt;Visual Studio&lt;/a&gt; and &lt;a href="http://social.msdn.microsoft.com/Forums/en-us/category/windowsapps"&gt;Windows 8&lt;/a&gt;.&amp;nbsp; If you find a bug please let us know through the &lt;a href="http://connect.microsoft.com/VisualStudio"&gt;Microsoft Connect site&lt;/a&gt;. For feature suggestions check out the &lt;a href="http://visualstudio.uservoice.com/forums/121579-visual-studio/category/35066-ide"&gt;UserVoice&lt;/a&gt; site (which also allows you to vote on other users&amp;rsquo; feature ideas).&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;We hope you enjoy the product and look forward to seeing tons of great VB apps!&lt;/p&gt;
&lt;p class="MsoNoSpacing"&gt;Jon Aneja, Program Manager, VB/C# Compiler Team&lt;br /&gt;Lucian Wischik, Program Manager, VB Spec Lead&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10274151" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/IDE/">IDE</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Jonathan+Aneja/">Jonathan Aneja</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Lucian+Wischik/">Lucian Wischik</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/async/">async</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Visual+Basic/">Visual Basic</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/VB/">VB</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/asynchronous+programming/">asynchronous programming</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/await/">await</category></item><item><title>New VB XNA Sample - showing Xbox, Windows and Phone targetting</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/12/12/new-vb-xna-sample-showing-xbox-windows-and-phone-targetting.aspx</link><pubDate>Mon, 12 Dec 2011 21:58:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10246927</guid><dc:creator>VBTeam</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10246927</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/12/12/new-vb-xna-sample-showing-xbox-windows-and-phone-targetting.aspx#comments</comments><description>&lt;p&gt;For all those who have started venturing into developing windows phone applications, there are quite a few samples utilizing Silverlight, but the XNA content has been a little bit light.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;em&gt;(We are working on getting some more XNA VB samples online).&amp;nbsp;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;But for those wanting to see a nice VB example of XNA development,&amp;nbsp;&amp;nbsp;the Blackjack sample written in VB is now online.&amp;nbsp;&amp;nbsp; This sample shows a single application which has been written to target all three of the XNA platforms (windows, XBox 360 and windows Phone) with a simple game that is easy to follow the code.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://create.msdn.com/en-US/education/catalog/sample/blackjack"&gt;http://create.msdn.com/en-US/education/catalog/sample/blackjack&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Enjoy&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Spotty&lt;/strong&gt;&lt;/em&gt;&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=10246927" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Spotty+Bowles/">Spotty Bowles</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/VB2010/">VB2010</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Windows+Phone/">Windows Phone</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Visual+Basic/">Visual Basic</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/XNA/">XNA</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/XBox+360/">XBox 360</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/VB/">VB</category></item><item><title>VB Support for Microsoft Surface 2.0</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/11/21/vb-support-for-microsoft-surface-2-0.aspx</link><pubDate>Tue, 22 Nov 2011 01:26:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10239390</guid><dc:creator>VBTeam</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10239390</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/11/21/vb-support-for-microsoft-surface-2-0.aspx#comments</comments><description>&lt;p&gt;Touch screen are great and we&amp;rsquo;ve seen their use on phone and slates but sometimes these screens still just are not big enough.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For those who desire bigger touch screens, Microsoft surface may be the answer.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft surface has been around a while and there have been significant changes with version 2.0.&amp;nbsp;&amp;nbsp; Version 2.0 introduces new functionality and support for more compact hardware.&amp;nbsp;&amp;nbsp;&amp;nbsp; A glance at the &lt;a href="http://www.microsoft.com/surface/en/us/default.aspx"&gt;Microsoft Surface team web site&lt;/a&gt; reveals some incredibly interesting uses for the technology.&lt;/p&gt;
&lt;p&gt;The samples provided are a great introduction to writing code for the platform.&amp;nbsp;&amp;nbsp;&amp;nbsp; VB versions of all the samples have been created and they provide a introduction to what is possible.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To develop Surface applications using VB requires installation of a few prerequisites:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=23691"&gt;VS2010 SP1&lt;/a&gt; (Required because VB is using VB Core feature)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=27570"&gt;WP7 SDK Tools&lt;/a&gt;&amp;nbsp; (Installs the XNA components )&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=26716"&gt;Surface 2.0 Runtime and SDK &lt;/a&gt;&amp;nbsp;(The important surface tools)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/Visual-Basic-Surface-20-b5386294"&gt;VB Surface 2.0 Samples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And for those who feel inspired to create new surface projects from scratch we have included the project templates.&amp;nbsp; &amp;nbsp;&amp;nbsp;To install these project templates after installing the above prerequisites &amp;ndash; you can find then in the Visual Studio Gallery (Tools &amp;gt; Extension Manager) searching on the &lt;em&gt;&amp;ldquo;VB_Surface&amp;rdquo; &lt;/em&gt;and install the new project templates.&lt;/p&gt;
&lt;p&gt;You can now start up Visual Studio and the two surface templates should appear for Visual Basic as well as the existing two C# surface templates.&amp;nbsp;&amp;nbsp; This is another technology that is now targetable by VB developers and that utilizes the VB Core functionality.&lt;/p&gt;
&lt;p&gt;Enjoy&amp;hellip;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spotty&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10239390" width="1" height="1"&gt;</description></item><item><title>Roslyn Syntax Visualizers</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/11/18/roslyn-syntax-visualizers.aspx</link><pubDate>Sat, 19 Nov 2011 02:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10238716</guid><dc:creator>VBTeam</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10238716</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/11/18/roslyn-syntax-visualizers.aspx#comments</comments><description>&lt;p&gt;Hi All! A few weeks ago, we &lt;a href="http://blogs.msdn.com/b/vbteam/archive/2011/10/19/introducing-the-microsoft-roslyn-ctp.aspx"&gt;announced the Microsoft "Roslyn" CTP&lt;/a&gt;. I hope many of you have had a chance to download the CTP and take it for a spin :) If you haven&amp;rsquo;t, do &lt;a href="http://www.msdn.com/roslyn"&gt;give it a try&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To recap &amp;ndash; in the Roslyn CTP, we are previewing a powerful set of language services APIs that you can use within your apps to reason about VB and C# code. We are also previewing IDE extensibility points for VB and C# that will allow you to build rich code refactorings, quick fixes etc. that run inside Visual Studio.&lt;/p&gt;
&lt;p&gt;In this post, I just wanted to point out a couple of tools that you may be interested in if you are working with the CTP &amp;ndash; the &lt;em&gt;Roslyn Syntax Visualizers&lt;/em&gt;. You can read more about these visualizers and how to install and use them on the following blog post &amp;ndash; &lt;a href="http://blogs.msdn.com/b/visualstudio/archive/2011/10/19/roslyn-syntax-visualizers.aspx"&gt;http://blogs.msdn.com/b/visualstudio/archive/2011/10/19/roslyn-syntax-visualizers.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The visualizers ship as samples in the CTP and allow you to visually inspect and explore Roslyn Syntax Trees (below screenshot shows an example). You can use these visualizers as debugging aids when you develop your own applications / code refactorings using the Roslyn APIs.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/2843.clip_5F00_image001_5F00_2B8672F7.png"&gt;&lt;img style="display: inline; background-image: none;" title="clip_image001" border="0" alt="clip_image001" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/8270.clip_5F00_image001_5F00_thumb_5F00_7ECD9350.png" width="491" height="513" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Happy Coding! :)&lt;/p&gt;
&lt;p&gt;Shyam Namboodiripad &lt;br /&gt;Software Development Engineer in Test (Roslyn Compilers Team)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10238716" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Shyam+Namboodiripad/">Shyam Namboodiripad</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Visual+Basic/">Visual Basic</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Roslyn/">Roslyn</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/C_2300_/">C#</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Syntax+Visualizer/">Syntax Visualizer</category></item><item><title>Putting back functionality left out of VB Core - ( If you can't live without Mid when writing WP7 apps  ;-) )</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/11/09/putting-back-functionality-left-out-of-vb-core-if-you-can-t-live-without-mid-when-writing-wp7-apps.aspx</link><pubDate>Thu, 10 Nov 2011 05:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10235633</guid><dc:creator>VBTeam</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10235633</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/11/09/putting-back-functionality-left-out-of-vb-core-if-you-can-t-live-without-mid-when-writing-wp7-apps.aspx#comments</comments><description>&lt;p&gt;For development of windows phone applications a new feature was added to the Visual Basic compiler known as VB Core. This is a reduced version of the runtime designed to allow development for a broader variety of platforms without incurring the larger penalty of having a full VB runtime containing non-supported or older VB6 legacy functionality which are now implemented as part of the framework itself. However this results in some features not being supported on this platform such as Late binding, My functionality and some&lt;br /&gt;legacy VB functions. You may not be targeting WP7 yet but this reduced runtime is also being incorporated into other target platforms such as &lt;a href="http://msdn.microsoft.com/en-us/library/gg597391.aspx"&gt;Portable Class Libraries&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For many developers who have been using only VB.Net this may not be an issue as they would be familiar with the .NET framework functionality which is typically what is shown in samples and example code that is translated from C#. WP7 is a new platform and much of the code written for this platform is new as well. However, if you have some legacy code that you want to use on this platform and that code uses some of functionality not supported by VB Core, it is possible to create your own implementations to reinstate this functionality&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;i&gt;(DISCLAIMER:&lt;br /&gt;This would be your own implementation of this functionality and you assume all risk and responsibility for maintaining it and any consequent increase in assembly size. Microsoft assumes no responsibility for the quality or accuracy of your implementation. Use this technique at your own risk). &lt;/i&gt;&lt;i&gt;&lt;/i&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Remember, some of this functionality was left out because it may not be applicable to the platform. An example of this is the My.Computer.FileSystem functionality because the platform utilizes a different form of storage known as &lt;a href="http://create.msdn.com/en-US/education/quickstarts/Isolated_Storage"&gt;Isolated Storage&lt;/a&gt;. But there is no reason you couldn&amp;rsquo;t create your own implementation of My helper functions.&lt;/p&gt;
&lt;p&gt;We have created a simple example showing how to reinstate some of the functionality which is not included in VB Core. Examples include Left, Right and Mid functionality.&lt;/p&gt;
&lt;p&gt;How do you find the code to create your own implementations of these functions?&lt;br /&gt;The source for the VB Runtime is and other assemblies are publically available, so you can see how these functions are implemented.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/rscc/archive/2010/08/16/net-framework-4-reference-source-is-available.aspx"&gt;http://blogs.msdn.com/b/rscc/archive/2010/08/16/net-framework-4-reference-source-is-available.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can then choose to either include this code directly in your application or create a simple class library which you can then reference from your projects to ensure that you can use the specific functions you require that are not included in VB Core.&amp;nbsp; You may want to clean up the implementation a&amp;nbsp;little as there is some throwback code related to VB6 which may no longer be applicable.&lt;/p&gt;
&lt;p&gt;The project is designed to show you have to add back missing functionality &amp;ndash; if you really can&amp;rsquo;t life without functions such as Left, Mid, Right.&amp;nbsp;&amp;nbsp;&amp;nbsp; The sample is designed to show you how you can put back small bits for VB runtime functionality left out of VB if you absolutely need to,&amp;nbsp; &lt;em&gt;&lt;strong&gt;but the recommended course of action would be to use existing framework functionality when targeting these new platforms using the VBCore functionality&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spotty&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10235633" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-23-56-33/VBCoreDemo.zip" length="2250190" type="application/x-zip-compressed" /></item><item><title>Halloween: VB Style!</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/10/31/halloween-vb-style.aspx</link><pubDate>Mon, 31 Oct 2011 14:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10231673</guid><dc:creator>VBTeam</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10231673</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/10/31/halloween-vb-style.aspx#comments</comments><description>&lt;p&gt;Imagine this. It&amp;rsquo;s Halloween. You&amp;rsquo;ve got a costume party to go to at 7 but there&amp;rsquo;s one small hiccup &amp;ndash; you&amp;rsquo;ve got no costume. As a VB programmer you&amp;rsquo;re used to coming up with nick-of-time solutions to all manner of complex business problems but all your coding skills won&amp;rsquo;t help you now. After all, you can&amp;rsquo;t just code up a costume &amp;ndash; &lt;i&gt;or can you?&lt;/i&gt; Here&amp;rsquo;s a little number I cooked up two years ago (before I joined the Developer Ghouls division at Microsoft) called the Opensourus Hex costume.&lt;/p&gt;
&lt;p&gt;First, make up a short but interesting VB program and write it out (in carefully color-coded marker) on a white t-shirt like so:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/1184.opensourus_2D00_front.jpg"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/1184.opensourus_2D00_front.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t forget to include your license:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/2867.opensourus_2D00_license.jpg"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/2867.opensourus_2D00_license.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Get yourself a box and throw in some art supplies &amp;ndash; string, tape, construction paper, beer cans, whatever &amp;ndash; label it &amp;ldquo;SDK&amp;rdquo; or &amp;ldquo;Developer Tools&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/6888.opensourus_2D00_sdk.bmp"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/6888.opensourus_2D00_sdk.bmp" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Print off some reference materials:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/3201.opensourus_2D00_faq.bmp"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/3201.opensourus_2D00_faq.bmp" /&gt;&lt;/a&gt;&lt;br /&gt;And then let all of your friends at the party go nuts interactively creating you a costume (while asking you to explain all the 1337 VBisms written on your chest. It may sound silly but trust me it&amp;rsquo;s fun (for you AND your fellow party-goers). I actually did this with an old friend of mine two years back and he kept the project going for two years in a row. Take a look at some of the things his friends came up with:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Opensourus Hex v1.0&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Friend (Eric) wearing costume next to then dev lead (Me)&lt;/em&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-35-13/1440.eric_2D00_anthony.jpg"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/1440.eric_2D00_anthony.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Opensourus several iterations later:&lt;/em&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-35-13/1423.opensourus_2D00_stable_2D00_10.jpg"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/1423.opensourus_2D00_stable_2D00_10.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Opensourus v2.0&lt;/strong&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-35-13/7522.opensourus_2D00_stable_2D00_20.jpg"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/7522.opensourus_2D00_stable_2D00_20.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/3683.opensourus_2D00_stable_2D00_21.jpg"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/3683.opensourus_2D00_stable_2D00_21.jpg" /&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-35-13/3678.opensourus_2D00_stable_2D00_22.jpg"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13/3678.opensourus_2D00_stable_2D00_22.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That's the best thing about the Opensourus costume - every year it's different.&lt;/p&gt;
&lt;p&gt;In my next post I&amp;rsquo;ll show you how to use VB lambda expressions as a last minute substitute to an undercooked Thanksgiving turkey (&lt;i&gt;or will I?&lt;/i&gt;).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Happy Halloween and Happy Coding!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Anthony D. Green&lt;/b&gt;&lt;br /&gt;Program Manager&lt;br /&gt;&lt;b&gt;Visual Basic &amp;amp; C# Languages Team&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10231673" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Anthony+D-+Green/">Anthony D. Green</category></item><item><title>Introducing the Microsoft "Roslyn" CTP</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/10/19/introducing-the-microsoft-roslyn-ctp.aspx</link><pubDate>Wed, 19 Oct 2011 21:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10226693</guid><dc:creator>VBTeam</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10226693</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/10/19/introducing-the-microsoft-roslyn-ctp.aspx#comments</comments><description>&lt;p&gt;&lt;em&gt;(Begin dramatic movie trailer music, slow PowerPoint slide show with clich&amp;eacute; sound effects)&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;October 2006&lt;/b&gt; &amp;ndash;VB Architect-emeritus Paul Vick &lt;a href="http://web.archive.org/web/20081205010254/http:/www.panopticoncentral.net/archive/2006/10/10/16642.aspx"&gt;responds&lt;/a&gt;&amp;nbsp;via his blog to question by some completely random VB customer named &lt;a href="http://web.archive.org/web/20090107160549/http:/www.panopticoncentral.net/archive/2006/10/02/16342.aspx#16594"&gt;Anthony&lt;/a&gt;&amp;nbsp;about bootstrapping the VB compiler (rewriting it in VB), admits no definite plans yet but says that &amp;ldquo;one thing that would be nice about a managed compiler would be opening up the services to other tools...&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;April-May 2007&lt;/b&gt; &amp;ndash; Paul Vick begins to open up on his blog about forward looking internal plans to make a hostable/scriptable future version of Visual Basic using a managed component written in VB.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;2008-2009 &lt;/b&gt;&amp;ndash; Other stuff happens&lt;/li&gt;
&lt;li&gt;&lt;b&gt;October 2010&lt;/b&gt; &amp;ndash; At PDC 10 Technical Fellow Anders Hejlsberg gives update on &amp;ldquo;Roslyn&amp;rdquo; project (formerly known as compiler-as-a-service)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;May 2011 &lt;/b&gt;&amp;ndash; In a VB Team blog post celebrating Visual Basic&amp;rsquo;s 20&lt;sup&gt;th&lt;/sup&gt; year at Microsoft PM Anthony D. Green writes of great anticipation about VB&amp;rsquo;s future, including a complete compiler rewrite and a new set of managed APIs built on top of the new compiler&lt;/li&gt;
&lt;li&gt;&lt;b&gt;September 2011&lt;/b&gt; &amp;ndash; At BUILD Technical Fellow Anders Hejlsberg demos C# Interactive and Scripting built using the Roslyn APIs, anticipates eminent release of preview bits.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;October 2011&lt;/b&gt; &amp;ndash; Microsoft releases the Roslyn CTP &amp;ndash; &amp;lt;--&lt;b&gt;YOU ARE HERE&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OK, maybe I have a flair for the dramatic but that&amp;rsquo;s because today is such a dramatically exciting day. After years of foreshadowing, and mentioning, and updating on our part I&amp;rsquo;m thrilled to announce on behalf of the united Visual Basic &amp;amp; C# Languages Team the availability of the Microsoft &amp;ldquo;Roslyn&amp;rdquo; CTP. This early preview represents an incredible milestone for us in a years-long process of bootstrapping both languages and providing a rich set of APIs exposing a host of compiler analyses and services.&lt;/p&gt;
&lt;p&gt;And, there&amp;rsquo;s more goodness to the Roslyn project than just what you can do with the new compilers alone. We&amp;rsquo;re also previewing a powerful set of &lt;b&gt;Language Services&lt;/b&gt; APIs and extensibility points to allow 3&lt;sup&gt;rd&lt;/sup&gt; parties to do amazing things inside Visual Studio using the compiler APIs like creating custom code issues and quick-fixes and even writing custom refactorings.&lt;/p&gt;
&lt;p&gt;But wait, there&amp;rsquo;s more. If you download the CTP today we&amp;rsquo;ll throw in a preview of what we&amp;rsquo;re thinking about for an Interactive (REPL) window experience in VB and C#. The VB Interactive window isn&amp;rsquo;t quite baked yet for this CTP so we&amp;rsquo;re holding that goodness in reserve for a future release. But in the meantime you should play with the C# Interactive window anyway and let us know what you like, what you don&amp;rsquo;t like, and what you think might be different from C# that is important to you for the unique VB Interactive experience.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Next steps:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Where you can learn more and get it&lt;/b&gt;: &lt;a href="http://msdn.com/roslyn"&gt;http://msdn.com/roslyn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;What you should do with it&lt;/b&gt;: Make code-smart tools, play with the Interactive window&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Where you should send your feedback&lt;/b&gt;: &lt;a href="http://social.msdn.microsoft.com/forums/en-us/roslyn"&gt;Roslyn Forums&lt;/a&gt;&amp;nbsp;for discussions, &lt;a href="http://connect.microsoft.com/visualstudio/"&gt;Connect&lt;/a&gt;&amp;nbsp;for bugs, #RoslynCTP for Twitter shout-outs.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;What you should know before sending feedback&lt;/b&gt;: That this is a technology &lt;b&gt;preview&lt;/b&gt; and that it has &lt;a title="Known Limitations and Unimplemented Language Features" href="http://social.msdn.microsoft.com/Forums/en-US/roslyn/thread/f5adeaf0-49d0-42dc-861b-0f6ffd731825"&gt;known limitations&lt;/a&gt;. The API generally looks the way we think it should look but not all of either language is implemented at this time (see the Forums for a list of known limitations and unimplemented language features).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The CTP includes a wealth of documents and samples to get you started using Roslyn, but keep a look out on this blog (and the Roslyn homepage) for more posts exploring the Roslyn APIs &amp;ndash; including a series of posts starting this month by yours truly.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Happy Experimenting!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Anthony D. Green&lt;br /&gt;&lt;/b&gt;Program Manager&lt;br /&gt;&lt;b&gt;Visual Basic &amp;amp; C# Languages Team&lt;/b&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=10226693" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Anthony+D-+Green/">Anthony D. Green</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Visual+Basic/">Visual Basic</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Roslyn/">Roslyn</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Visual+Studio/">Visual Studio</category></item><item><title>Announcement: Namespace Global</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/09/27/announcement-namespace-global.aspx</link><pubDate>Tue, 27 Sep 2011 17:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10217322</guid><dc:creator>VBTeam</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10217322</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/09/27/announcement-namespace-global.aspx#comments</comments><description>&lt;p&gt;There&amp;rsquo;s a new feature coming to VB, and already included in the &lt;a href="http://msdn.microsoft.com/en-us/vstudio/hh127353"&gt;Visual Studio 11 Developer Preview&lt;/a&gt;. The feature is called &lt;b&gt;Namespace Global&lt;/b&gt; and it&amp;rsquo;ll make your life easier&amp;hellip;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;if you part of your code belongs in a different namespace from the rest of your project,&lt;/li&gt;
&lt;li&gt;if you use code-generating tools, which need to choose which namespace they write into.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The MSDN reference on namespaces (including Namespace Global) is here: &lt;a href="http://msdn.microsoft.com/en-us/library/zt9tafza(v=VS.110).aspx"&gt;Namespaces in Visual Basic&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As an aside, I&amp;rsquo;d like to thank Shimmy Wietzhandler for requesting this feature in &lt;a href="http://connect.microsoft.com/VisualStudio/feedback/details/552264/allow-escaping-to-the-global-namespace-scope-in-vb-net"&gt;Microsoft Connect&lt;/a&gt;, and also the people who emailed or who wrote in with comments to Lucian Wischik&amp;rsquo;s &lt;a href="http://blogs.msdn.com/b/lucian/archive/2010/01/29/core10-namespace-global.aspx"&gt;VB language-design blog&lt;/a&gt;. It&amp;rsquo;s from user feedback like these that we decide which features to prioritize. For the future, we&amp;rsquo;ve launched the &lt;a href="http://visualstudio.uservoice.com/forums/121579-visual-studio"&gt;Visual Studio UserVoice&lt;/a&gt; site to gather together these kinds of feature requests.&lt;/p&gt;
&lt;p&gt;Release note: the Visual Studio 11 Developer Preview doesn&amp;rsquo;t yet have full IDE support for the Namespace Global feature (e.g. NavigateTo doesn&amp;rsquo;t work). This in the works.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/6305.image001_5F00_64587189.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image001" border="0" alt="image001" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/3755.image001_5F00_thumb_5F00_3D1E2854.png" width="606" height="287" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Background&lt;/h2&gt;
&lt;p&gt;This feature is tied to the project&amp;rsquo;s Root Namespace, pictured above, which you find by double-clicking on &amp;ldquo;My Project&amp;rdquo; in the Solution Explorer. &lt;b&gt;&lt;i&gt;Every single class and namespace&lt;/i&gt;&lt;/b&gt;&lt;i&gt; &lt;b&gt;you write &lt;/b&gt;&lt;/i&gt;is implicitly placed inside that Root Namespace. Here&amp;rsquo;s an example class library I wrote:&lt;span style="font-family: Consolas;" face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat; background-position: 0% 0%;"&gt;&lt;span style="color: #2b91af; font-size: 9.5pt;" color="#2b91af"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;Public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af; font-size: 9.5pt;" color="#2b91af"&gt;InsulinData &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;End&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt;" color="#0000ff"&gt;Class &lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;Public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af; font-size: 9.5pt;" color="#2b91af"&gt;PatientID &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt;" color="#0000ff"&gt;Class &lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt;" color="#0000ff"&gt;Names&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;pace&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000; font-size: 9.5pt;" color="#000000"&gt; Utils &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;Public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af; font-size: 9.5pt;" color="#2b91af"&gt;LinearRegressionSolver &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt;" color="#0000ff"&gt;Class &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt;" color="#0000ff"&gt;Namespace&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The fully-qualified names of my classes are like these (note that you never actually need to write the prefix &amp;ldquo;Global&amp;rdquo; &amp;ndash; I put it in here for completeness):&lt;/p&gt;
&lt;p style="line-height: normal; list-style-type: disc; margin-bottom: 0pt;"&gt;&lt;span style="font-family: courier new,courier;"&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; x &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;New&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Global&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt;.MedicalDeviceAnalysis.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af; font-size: 9.5pt;" color="#2b91af"&gt;InsulinData &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; y &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;New&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Global&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt;.MedicalDeviceAnalysis.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af; font-size: 9.5pt;" color="#2b91af"&gt;PatientID &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; z &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;New&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Global&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt;.MedicalDeviceAnalysis.Utils.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af; font-size: 9.5pt;" color="#2b91af"&gt;LinearRegressionSolver&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Most of the time, this is exactly what you want.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Problem&lt;/h3&gt;
&lt;p&gt;But in this particular case, I didn&amp;rsquo;t want &amp;ldquo;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&lt;span style="background-image: none; line-height: 11pt; list-style-type: disc; background-attachment: scroll; background-repeat: repeat; background-position: 0% 0%;"&gt;&lt;span style="color: #000000;" color="#000000"&gt;&lt;span style="font-size: 9.5pt;"&gt;Utils.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; line-height: 11pt; list-style-type: disc; background-attachment: scroll; background-repeat: repeat; background-position: 0% 0%;"&gt;&lt;span style="color: #2b91af; font-size: 9.5pt;" color="#2b91af"&gt;LinearRegressionSolver&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;rdquo; to come under &lt;span style="color: #000000;" color="#000000"&gt;&lt;span style="background-image: none; line-height: 11pt; list-style-type: disc; background-attachment: scroll; background-repeat: repeat; background-position: 0% 0%;"&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&lt;span style="font-size: 9.5pt;"&gt;MedicalDeviceAnalysis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Times New Roman;" face="Times New Roman"&gt;&lt;span style="font-size: 12pt;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;ndash; because it&amp;rsquo;s a general-purpose utility, and not specific to medical device analysis at all.&lt;/p&gt;
&lt;p&gt;Fixing my code in VS2010 is awkward. I have to set MyProject &amp;gt; RootNamespace to nothing, and then go through my entire project manually putting every single class inside &amp;ldquo;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&lt;span style="background-image: none; line-height: 11pt; list-style-type: disc; background-attachment: scroll; background-repeat: repeat; background-position: 0% 0%;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;Namespace&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; line-height: 11pt; list-style-type: disc; background-attachment: scroll; background-repeat: repeat; background-position: 0% 0%;"&gt;&lt;span style="color: #000000; font-size: 9.5pt;" color="#000000"&gt; MedicalDeviceAnalysis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Namespace Global&lt;/h2&gt;
&lt;p&gt;We have introduced a new way to &amp;ldquo;escape&amp;rdquo; your classes out of the project&amp;rsquo;s Root Namespace. It works like this:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000; font-size: 9.5pt;" color="#000000"&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Namespace&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; background-color: #ffff00;" color="#0000ff"&gt;Global&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000; font-size: 9.5pt;" color="#000000"&gt;.Utils&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;Public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af; font-size: 9.5pt;" color="#2b91af"&gt;LinearRegressionSolver &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt;" color="#0000ff"&gt;Class &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="line-height: 11pt; background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="line-height: 11pt; background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 11pt; background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt;" color="#0000ff"&gt;Namespace&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;By writing &amp;ldquo;Namespace Global&amp;rdquo; explicitly, I get the classes where I want &amp;ndash; regardless of the project&amp;rsquo;s Root Namespace:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; x &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;New&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Global&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt;.MedicalDeviceAnalysis.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af; font-size: 9.5pt;" color="#2b91af"&gt;InsulinData &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; y &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;New&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Global&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt;.MedicalDeviceAnalysis.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af; font-size: 9.5pt;" color="#2b91af"&gt;PatientID &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; z &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;New&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Global&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt;.Utils.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af; font-size: 9.5pt;" color="#2b91af"&gt;LinearRegressionSolver&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;br /&gt;Namespace Global: extension-method scenario&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s another scenario where Namespace Global will help. Let&amp;rsquo;s say that my MedicalDevice library has become quite large, composed of several class libraries and namespaces &amp;ndash; for instance, one of the class libraries will have Root Namespace set to &amp;ldquo;MedicalDevice.Analysis&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;But I also established the convention that users merely need to &amp;ldquo;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&lt;span style="background-image: none; list-style-type: disc; background-attachment: scroll; background-repeat: repeat; background-position: 0% 0%;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;Imports&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; list-style-type: disc; background-attachment: scroll; background-repeat: repeat; background-position: 0% 0%;"&gt;&lt;span style="color: #000000; font-size: 9.5pt;" color="#000000"&gt; MedicalDevice&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;rdquo; to get all the extension methods. Here&amp;rsquo;s how:&lt;/p&gt;
&lt;p style="line-height: normal; list-style-type: disc; margin-bottom: 0pt;"&gt;&lt;span style="font-family: courier new,courier;"&gt;&lt;span face="Consolas"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;Namespace&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; background-color: #ffff00;" color="#0000ff"&gt;Global&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000; font-size: 9.5pt;" color="#000000"&gt;.MedicalDevice &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;Public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Module&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af; font-size: 9.5pt;" color="#2b91af"&gt;Extensions &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="color: #000000;" color="#000000"&gt;&lt;span style="font-size: 9.5pt;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="color: #2b91af;" color="#2b91af"&gt;Extension&lt;/span&gt;&lt;span style="color: #000000;" color="#000000"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;Public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Function&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; AsPatientID(this &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; MedicalDeviceAnalysis.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af; font-size: 9.5pt;" color="#2b91af"&gt;PatientID &lt;br /&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&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;Return&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;New&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; MedicalDeviceAnalysis.&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af;" color="#2b91af"&gt;PatientID&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000; font-size: 9.5pt;" color="#000000"&gt;(this) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt;" color="#0000ff"&gt;Function &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt;" color="#0000ff"&gt;Module &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="line-height: 11pt; background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="line-height: 11pt; background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 11pt; background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt;" color="#0000ff"&gt;Namespace&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;We actually used this technique in the recent Async CTP. We wanted our extensions to be defined &lt;i&gt;in the global namespace&lt;/i&gt; so that people could use them without having to import anything. (This design is generally frowned upon, but it made sense in this case). Again, we used the Namespace Global feature:&lt;/p&gt;
&lt;p style="line-height: normal; list-style-type: disc; margin-bottom: 0pt;"&gt;&lt;span style="font-family: courier new,courier;"&gt;&lt;span face="Consolas"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;Namespace&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt; background-color: #ffff00;" color="#0000ff"&gt;Global &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt;" color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt; background-color: #ffff00;" color="#0000ff"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;Public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Module&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af; font-size: 9.5pt;" color="#2b91af"&gt;AsyncCtpExtensions &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="color: #000000;" color="#000000"&gt;&lt;span style="font-size: 9.5pt;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="color: #2b91af;" color="#2b91af"&gt;Extension&lt;/span&gt;&lt;span style="color: #000000;" color="#000000"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;Public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Function&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; DownloadStringTaskAsync(this &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af;" color="#2b91af"&gt;WebClient&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #2b91af;" color="#2b91af"&gt;Task&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Of String&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000; font-size: 9.5pt;" color="#000000"&gt;) &lt;br /&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&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="color: #008000; font-size: 9.5pt;" color="#008000"&gt;' ... &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt;" color="#0000ff"&gt;Function &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt;" color="#0000ff"&gt;Module &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas"&gt;&lt;span style="line-height: 11pt; background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;End&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span style="line-height: 11pt; background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 11pt; background-image: none; background-attachment: scroll; background-repeat: repeat;"&gt;&lt;span style="color: #0000ff; font-size: 9.5pt;" color="#0000ff"&gt;Namespace&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Namespace Global: codegen scenario&lt;/h2&gt;
&lt;p&gt;One important behind-the-scenes use of Namespace Global is for code-generation tools. Let&amp;rsquo;s say (for instance) that you wrote a T4 template which automatically spits out code, but it needs the code to go inside a particular namespace. The T4 template can&amp;rsquo;t make any assumptions about Root Namespace.&lt;/p&gt;
&lt;p&gt;Now, using Namespace Global, the T4 template can chose precisely which namespace to use for its generated code.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Namespace Global: under the hood of VB-Core&lt;/h2&gt;
&lt;p&gt;We in the VB team used Namespace Global for a powerful new feature that came in VS2010 SP1 called &amp;ldquo;&lt;a href="http://blogs.msdn.com/b/vbteam/archive/2011/01/10/vb-core-new-compilation-mode-in-visual-studio-2010-sp1.aspx"&gt;VB-Core&lt;/a&gt;&amp;rdquo;. The point of VB-Core is to &lt;i&gt;embed&lt;/i&gt; a small part of Microsoft.VisualBasic.dll inside your own assembly, so you can produce a stand-alone executable that works even on platforms which lack the DLL such as the &lt;a href="http://blogs.msdn.com/b/vbteam/archive/2011/06/08/micro-framework-v4-2-support-for-visual-basic.aspx"&gt;Micro Framework&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The VB compiler actually embeds that small part of Microsoft.VisualBasic as a &amp;ldquo;ghost&amp;rdquo; .vb source file which it implicitly adds to your project. The classes defined in that file &lt;i&gt;must&lt;/i&gt; go inside the namespace Global.Microsoft.VisualBasic: they cannot be nested inside the project&amp;rsquo;s Root Namespace. I&amp;rsquo;m sure you can guess how the ghost file starts&amp;hellip;&lt;/p&gt;
&lt;p style="line-height: normal; list-style-type: disc; margin-bottom: 0pt;"&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&lt;span&gt;&lt;span style="color: #a31515;" color="#a31515"&gt;&lt;span style="font-size: 9.5pt;"&gt;"Namespace Global.Microsoft.VisualBasic"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #000000; font-size: 9.5pt;" color="#000000"&gt; &amp;amp; vbCrLf &amp;amp; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&lt;span&gt;&lt;span style="color: #a31515;" color="#a31515"&gt;&lt;span style="font-size: 9.5pt;"&gt;"&amp;nbsp; Namespace CompilerServices"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #000000; font-size: 9.5pt;" color="#000000"&gt; &amp;amp; vbCrLf &amp;amp; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&lt;span&gt;&lt;span style="color: #a31515;" color="#a31515"&gt;&lt;span style="font-size: 9.5pt;"&gt;"&amp;nbsp;&amp;nbsp;&amp;nbsp; Friend Class Operators"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #000000; font-size: 9.5pt;" color="#000000"&gt; &amp;amp; vbCrLf &amp;amp; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&lt;span&gt;&lt;span style="color: #a31515;" color="#a31515"&gt;&lt;span style="font-size: 9.5pt;"&gt;"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Shared Function CompareString(Left As String, Right As String, TextCompare As Boolean) As Integer"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #000000; font-size: 9.5pt;" color="#000000"&gt; &amp;amp; vbCrLf &amp;amp; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&lt;span&gt;&lt;span style="color: #a31515;" color="#a31515"&gt;&lt;span style="font-size: 9.5pt;"&gt;"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Left Is Right Then Return 0"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #000000; font-size: 9.5pt;" color="#000000"&gt; &amp;amp; vbCrLf &amp;amp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Namespace Global: specification&lt;/h2&gt;
&lt;p&gt;In addition to the existing VS2010 namespace declarations, VB will allow two new forms of namespace declaration:&lt;/p&gt;
&lt;p style="line-height: normal; list-style-type: disc; margin-bottom: 0pt;"&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&lt;span&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;Namespace&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff; font-size: 9.5pt;" color="#0000ff"&gt;Global &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&lt;span&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;&lt;span style="font-size: 9.5pt;"&gt;Namespace&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt;"&gt;&lt;span&gt;&lt;span style="color: #000000;" color="#000000"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Global&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #000000; font-size: 9.5pt;" color="#000000"&gt;.&amp;lt;NamespaceName&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;These are both only allowed at top level in a source file (i.e. not nested inside any other Namespace declaration). The first form declares that its contents will go inside the global namespace. The second form declares a namespace within the global namespace, and puts its contents there.&lt;/p&gt;
&lt;p&gt;Full details are at MSDN: &lt;a href="http://msdn.microsoft.com/en-us/library/zt9tafza(v=VS.110).aspx"&gt;Namespaces in Visual Basic&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=10217322" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Lucian+Wischik/">Lucian Wischik</category></item><item><title>Visual Studio 11 Developer Preview: Visual Basic (VB) Call Hierarchy</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/09/20/visual-studio-11-developer-preview-visual-basic-vb-call-hierarchy.aspx</link><pubDate>Tue, 20 Sep 2011 18:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10213759</guid><dc:creator>VBTeam</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10213759</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/09/20/visual-studio-11-developer-preview-visual-basic-vb-call-hierarchy.aspx#comments</comments><description>&lt;p&gt;By Zain Naboulsi (&lt;a href="http://blogs.msdn.com/b/zainnab/" target="_blank"&gt;Blog&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Default:&lt;/strong&gt; CTRL + ALT + K&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Menu: &lt;/strong&gt;View | Call Hierarchy&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt; View.CallHierarchy; EditorContextMenus.CodeWindow.ViewCallHierarchy&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Versions:&lt;/strong&gt; Visual Studio 11 Developer Preview&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Languages:&lt;/strong&gt; VB&lt;/p&gt;
&lt;p&gt;With the announcement of the Visual Studio 11 Developer Preview it&amp;rsquo;s time to take a look at some of the features you can start using with our latest version of the IDE right away.&amp;nbsp; If you are already familiar with the C++/C# Call Hierarchy feature from my &lt;a href="http://blogs.msdn.com/b/zainnab/archive/2010/01/19/using-the-call-hierarchy-c-only-vstiptool0005.aspx"&gt;previous blog post&lt;/a&gt; then you are already familiar with the features and may just want to start playing with this on your own. For those not familiar, I&amp;rsquo;ll repeat the content here. And now on with the tip&amp;hellip;&lt;/p&gt;
&lt;p&gt;(queue choir music)&lt;/p&gt;
&lt;p&gt;Visual Basic developers everywhere rejoice!&lt;/p&gt;
&lt;p&gt;The Call Hierarchy is now available for VB!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This feature allows you to visually inspect the calls to and from any selected method, property, or constructor. Simply right-click any method, property, or constructor name and select View Call Hierarchy:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/2117.image_5F00_58CDF9A8.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/3568.image_5F00_thumb_5F00_1178A3B6.png" width="314" height="199" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This will bring up the Call Hierarchy window:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/2514.image_5F00_182BAD39.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/1031.image_5F00_thumb_5F00_70F16403.png" width="551" height="273" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Note the Calls To and Calls From areas? You can expand them to see a list under each node if applicable:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/8053.image_5F00_49B71ACE.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/0844.image_5F00_thumb_5F00_10340AD7.png" width="551" height="273" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you select an item under one of these areas then you will get a list of Call Sites that show where the calls are happening:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/7776.image_5F00_2FE2E49F.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/2502.image_5F00_thumb_5F00_4F91BE67.png" width="554" height="277" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You can double-click any call site to go to the line of calling 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-35-13-metablogapi/0028.image_5F00_1D2DEAE8.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/2260.image_5F00_thumb_5F00_61021F3F.png" width="338" height="177" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Instead of doing a double-click you can also right-click the call site and choose Go To Reference or you can copy the name and location of the call site as you see it listed:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/6283.image_5F00_7CA6AB35.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/4152.image_5F00_thumb_5F00_277F0F48.png" width="338" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You can also right-click any items in the tree-view to get a list of possible actions:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/3250.image_5F00_0044C613.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/1680.image_5F00_thumb_5F00_7BCE454B.png" width="557" height="276" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Here is a table of the actions you may come across and what they can do for you:&lt;/p&gt;
&lt;table border="1" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="142"&gt;
&lt;p&gt;&lt;b&gt;Context Menu Item&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="250"&gt;
&lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="142"&gt;
&lt;p&gt;Add As New Root&lt;/p&gt;
&lt;/td&gt;
&lt;td width="250"&gt;
&lt;p&gt;Adds the selected node to the tree view pane as a new root node.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="142"&gt;
&lt;p&gt;Remove Root&lt;/p&gt;
&lt;/td&gt;
&lt;td width="250"&gt;
&lt;p&gt;Removes the selected root node from the tree view pane. This option is available only from a root node.&lt;/p&gt;
&lt;p&gt;You can also use the Remove Root toolbar button to remove the selected root node.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="142"&gt;
&lt;p&gt;Go To Definition&lt;/p&gt;
&lt;/td&gt;
&lt;td width="250"&gt;
&lt;p&gt;Runs the Go To Definition command on the selected node. This navigates to the original definition for a method call or variable definition.&lt;/p&gt;
&lt;p&gt;You can also press F12 to run the Go To Definition command on the selected node.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="142"&gt;
&lt;p&gt;Find All References&lt;/p&gt;
&lt;/td&gt;
&lt;td width="250"&gt;
&lt;p&gt;Runs the Find All References command on the selected node. This finds all the lines of code in your project that reference a class or member.&lt;/p&gt;
&lt;p&gt;You can also use SHIFT+F12 to run the Find All References command on the selected node.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="142"&gt;
&lt;p&gt;Copy&lt;/p&gt;
&lt;/td&gt;
&lt;td width="250"&gt;
&lt;p&gt;Copies the contents of the selected node (but not its subnodes).&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="142"&gt;
&lt;p&gt;Refresh&lt;/p&gt;
&lt;/td&gt;
&lt;td width="250"&gt;
&lt;p&gt;Collapses the selected node so that re-expanding it displays current information.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So, just as with C++ and C#, we now have the Call Hierarchy feature available for VB developers.&amp;nbsp; This is all part of our master plan to get all languages on parity with each other so that most features are available regardless of the language used.&amp;nbsp; Enjoy!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10213759" width="1" height="1"&gt;</description></item><item><title>Dynamics CRM 2011 Developer Training Kit -  Updated with VB Source</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/09/08/dynamics-crm-2011-developer-training-kit-updated-with-vb-source.aspx</link><pubDate>Thu, 08 Sep 2011 19:26:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10208057</guid><dc:creator>VBTeam</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10208057</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/09/08/dynamics-crm-2011-developer-training-kit-updated-with-vb-source.aspx#comments</comments><description>&lt;p&gt;An update to the training kit has been made providing Visual Basic developers with sample code for the development features of Dynamics CRM and help them build applications using Microsoft Dynamics CRM 2011 and CRM Online.&lt;/p&gt;
&lt;p&gt;Download available at&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=23416"&gt;http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=23416&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&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=10208057" width="1" height="1"&gt;</description></item><item><title>Updated Samples for WP7 Developers</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/08/26/updated-samples-for-wp7-developers.aspx</link><pubDate>Sat, 27 Aug 2011 02:02:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10201089</guid><dc:creator>VBTeam</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10201089</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/08/26/updated-samples-for-wp7-developers.aspx#comments</comments><description>&lt;p&gt;For those VB developers who are developing (or keen to start developing) for WIndows Phone 7.&amp;nbsp; The samples have been updated and as you'll notice virtually all of them are in both C# and VB.&lt;/p&gt;
&lt;p&gt;&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;&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=10201089" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Spotty+Bowles/">Spotty Bowles</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/VB2010/">VB2010</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/I_2700_m+A+VB_2100_/">I'm A VB!</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Windows+Phone/">Windows Phone</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Visual+Basic/">Visual Basic</category></item><item><title>New Async Programming Video's</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/08/12/new-async-programming-video-s.aspx</link><pubDate>Fri, 12 Aug 2011 20:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10195308</guid><dc:creator>VBTeam</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10195308</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/08/12/new-async-programming-video-s.aspx#comments</comments><description>&lt;p&gt;Some great new video's on MSDN showing how to do async programming using the Async CTP.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/vstudio/hh378091.aspx"&gt;http://msdn.microsoft.com/en-us/vstudio/hh378091.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are different versions of video's for both VB and C#.&amp;nbsp;&amp;nbsp;&amp;nbsp; This is a great opportunity to see the power of the new Async languages featuresand follow through a series of examples showing how easy it is to use the new feature.&lt;/p&gt;
&lt;p&gt;Also, the MSDN forums have one specifically dedicated to the Async CTP which compilers team member are monitoring to help answer any questions.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/async/threads"&gt;http://social.msdn.microsoft.com/Forums/en-US/async/threads&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[Update] Code Samples attachment&lt;/p&gt;
&lt;p&gt;Spotty&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10195308" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-19-53-08/AsyncDemos.zip" length="607217" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Spotty+Bowles/">Spotty Bowles</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Lucian+Wischik/">Lucian Wischik</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/VB2010/">VB2010</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/async/">async</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Visual+Basic/">Visual Basic</category></item><item><title>Temperature Monitoring using VB.Net, Micro-framework and a Netduino</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/08/02/temperature-monitoring-using-vb-net-and-the-micro-framework-and-a-netduino.aspx</link><pubDate>Tue, 02 Aug 2011 21:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10192200</guid><dc:creator>VBTeam</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10192200</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/08/02/temperature-monitoring-using-vb-net-and-the-micro-framework-and-a-netduino.aspx#comments</comments><description>&lt;hr /&gt;
&lt;h4&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4&gt;Introduction&lt;/h4&gt;
&lt;p&gt;As a bit of a geek, I like to tinker with basic gadgets. I often think of little ideas that would be great to implement but the device involves some hardware and very little software. As a software engineer I tend to think in terms of simple programs to but in order to implement something tangible would involve electronics and the interface between embedded electronics and high level languages such as VB or C# is somewhat disconnected. For a long time much of the embedded devices was coded using low level languages such as assembler and the prospect of going back to write assembler or getting into more complex electronics is something that I just don&amp;rsquo;t have the time to devote to it.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s when I saw this little device called the Netduino which runs something called the .NET Micro-framework. This seems just what I&amp;rsquo;ve been looking for. A microcontroller device that I can put together a few electronics items which are available off-the-shelf and write some .NET code in my language of choice (VB) to implement some basic functionality.&lt;/p&gt;
&lt;p&gt;So the next question is what did I think would be a good first project?&lt;/p&gt;
&lt;p&gt;My wife is studying to be a sommelier which means we have quite a few bottles of wine in the house. Sometimes we open one up an it&amp;rsquo;s developed a fault. Now there are numerous reasons for wines developing faults but incorrect storage is one possible cause. Wine is very temperamental and is best stored in a cool dark climate that doesn&amp;rsquo;t change much through the seasons which is why cellars or caves are great for storage but unfortunately in normal modern houses a cave or wine cellar is not a standard item. So we use our pantry to store our wine.&lt;/p&gt;
&lt;p&gt;With this in mind I wanted to be able to know if the pantry conditions were really fluctuating that much. So I had my project but where to start? A simple device to monitor the wine cellar (eer pantry!!!) and provide warning indications of hi or low temperature conditions.&lt;/p&gt;
&lt;p&gt;Well the first thing was to look around and find the parts I would need &amp;ndash; a Netduino Plus device was chosen because it has networking capabilities built in which I would use later. A prototyping shield and a few electronic components such as temperature and humidity sensor and some LED&amp;rsquo;s to indicate status.&lt;/p&gt;
&lt;p&gt;The Netduino hardware is a micro-controller running a very small version cut down version of the .NET framework called the Micro-Framework. This enables .NET developers to write their application code using C# and recently added VB.NET. Allowing you to write you application as high level code dealing with the problem rather than having to resort to using low level assembler to control the hardware. There are some things that a not implemented with Generics / Late Binding being the obvious two but the code is clearly VB.NET / C# and you use Visual Studio as a development tool.&lt;/p&gt;
&lt;p&gt;The device is made in such a way that you can plug in shields. Shields are really circuit boards that conform to a specific physical layout. These shields contain all the necessary circuitry to do a specific tasks such as SD Card reader/writer, Wi-Fi networking or can be a blank one which allows you to create your own circuitry either by soldering up components or by using a prototyping breadboard.&lt;/p&gt;
&lt;p&gt;So after a little research located the parts I need would need and the basic circuitry to do get the sensors and LED&amp;rsquo;s connected. It&amp;rsquo;s easy enough to find this information with vendors such as Sparkfun, MakerShed, Adafruit all having lots of useful information as well as the Netduino website community forums having lots of information on sensors used by people and code snippets.&lt;/p&gt;
&lt;p&gt;With all this in hand I constructed a basic shield &amp;ndash; very simple for anyone that has done any basic soldering. If you can&amp;rsquo;t, it&amp;rsquo;s real easy to learn. With Netduino and prototyping shield in hand I launched Visual Studio to write some code to make my monitoring device come to life.&lt;/p&gt;
&lt;p&gt;The applicable needs to do a number of tasks&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;middot; Read the sensors&lt;/li&gt;
&lt;li&gt;&amp;middot; Write the data to the SD Card&lt;/li&gt;
&lt;li&gt;&amp;middot; Detect any temperature warning conditions.&lt;/li&gt;
&lt;li&gt;&amp;middot; Provide visual indications of working and warning conditions&lt;/li&gt;
&lt;li&gt;&amp;middot; Provide a reset capability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My approach was to take each task and build an evolving system. So the first thing was to wire up the sensor and the LED&amp;rsquo;s. Using a breadboard makes it real easy and is really a case of plugging wires in to make the connections.&lt;/p&gt;
&lt;p&gt;The design looked like the following. It looks a bit crazy when prototyping but I&amp;rsquo;ll eventually clean this up before putting the item in the pantry and having a worried wife come tell me there is a mysterious device with wires coming out of it in the pantry.&lt;/p&gt;
&lt;h4&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4&gt;Connections&lt;/h4&gt;
&lt;p&gt;(Some of these may be not requiring connections because they are implemented as part of the prototyping shield. Examples of this are my reset button and heartbeat and reset LED&amp;rsquo;s which only required the Dx output. The ground wires were already implemented as part of the shield.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;b&gt;Item&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="379"&gt;
&lt;p&gt;&lt;b&gt;Connection&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;b&gt;TMP36 Sensor&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;
&lt;p&gt;3.3v and ARef (if using a RevA board)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;
&lt;p&gt;A0&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;
&lt;p&gt;Ground&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;b&gt;Hi Warning LED&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;
&lt;p&gt;D9&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;
&lt;p&gt;Ground&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;b&gt;Low Warning LED&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;
&lt;p&gt;D11&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;
&lt;p&gt;Ground&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;b&gt;Heartbeat LED&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;
&lt;p&gt;D13&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;
&lt;p&gt;Ground&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;b&gt;Button&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;
&lt;p&gt;D8&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;
&lt;p&gt;Ground&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;b&gt;Reset LED&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;
&lt;p&gt;D12&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="213"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="46"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="379"&gt;
&lt;p&gt;Ground&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Now to make it work and write some code.&lt;/p&gt;
&lt;p&gt;The micro framework is really a lightweight version optimized for embedded device development. VB support is a recent addition and required the 4.2 version of the micro framework to be installed along with the firmware update to the Netduino. Updating the firmware to 4.2 was a breeze.&lt;/p&gt;
&lt;p&gt;So let&amp;rsquo;s break development into a few simple tasks one at a time. Each task I&amp;rsquo;ll show code snippets but the entire finished source is available to download.&lt;/p&gt;
&lt;h4&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4&gt;Reading the sensor&lt;/h4&gt;
&lt;p&gt;The code for this application is a simple Console application which is running indefinitely. As I&amp;rsquo;m powering the final device by means of a 9v battery I want to do enough to get the job done but want to make sure that I have sufficient battery life. So I will be taking a reading every 10 minutes which means that most of the time the device is really asleep.&lt;/p&gt;
&lt;p&gt;There are both analogue and digital temperature sensors. Mine original sensor is a simple thermistor (Temperature dependent resistor) which means that the resistance varies with temperature changes. Using the Analogue input ports on the Netduino in conjunction with this allows me to determine a temperature. There are two revisions of the Netduino (Rev A and Rev B). The significant difference between the two is related to Analogue references and the need to provide an extra link between the 3.3v pin and the Aref0 pin &amp;ndash; without this the values read on the Analogue port will be inconsistent. Luckily almost all boards out there are Rev B boards with this already internally connected on the board preventing you from having to remember this.&lt;/p&gt;
&lt;p&gt;The formula for calculating a temperature is as follows&amp;hellip;.&lt;/p&gt;
&lt;p&gt;This code will create a timer which raises an event every x seconds and takes a temperature reading. As there are some minor variations in reading a single instantaneous value, my approach was to take a number of readings over a short period of time and average them out. This should flatten any rogue values that occurred. When debugging this I set a shorter period to ensure that I could see this process working.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;d also included debug values to be able to monitor the temperature value it was reading. These can be conditional compiled out in final release version. The values seemed a little high on this sensor so I located a second sensor and installed this and measured the temperature reading on this and was able to adjust the first. This may have been possible by adding a resistor in the circuit for the original sensor but I was able to experiment using and offset value in code to calibrate this and it seemed accurate enough.&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; Microsoft.SPOT
&lt;span class="kwrd"&gt;Imports&lt;/span&gt; Microsoft.SPOT.Hardware
&lt;span class="kwrd"&gt;Imports&lt;/span&gt; SecretLabs.NETMF.Hardware
&lt;span class="kwrd"&gt;Imports&lt;/span&gt; SecretLabs.NETMF.Hardware.Netduino

&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Module&lt;/span&gt; Module1
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; PollingDelay &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 2
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; tempSensor &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; AnalogInput(Pins.GPIO_PIN_A5)
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; CurrentTemperature &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Double&lt;/span&gt; = 0

    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Main()
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; Temperature &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Double&lt;/span&gt; = 0

        &lt;span class="rem"&gt;'//Setup Event Handlers&lt;/span&gt;
        PollingTemperatureMethod()

        &lt;span class="rem"&gt;'//Get the initial temperature&lt;/span&gt;
        CurrentTemperature = GetAverageTemperatureReading()
        &lt;span class="kwrd"&gt;While&lt;/span&gt; &lt;span class="kwrd"&gt;True&lt;/span&gt;
            Thread.Sleep(Timeout.Infinite)
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;While&lt;/span&gt;
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;

   &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetCurrentTemperature() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Double&lt;/span&gt;
        &lt;span class="rem"&gt;''Read the raw sensor value&lt;/span&gt;
        &lt;span class="kwrd"&gt;Return&lt;/span&gt; tempSensor.Read()
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;

    &lt;span class="rem"&gt;'Get the average temperature of 101 readings over a second&lt;/span&gt;
    &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetAverageTemperatureReading() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Double&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; totalTemp &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Double&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; averagetemp &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Double&lt;/span&gt; = 0

        &lt;span class="kwrd"&gt;For&lt;/span&gt; i = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; 99
            totalTemp += GetCurrentTemperature()
            Thread.Sleep(10)
        &lt;span class="kwrd"&gt;Next&lt;/span&gt;
        averagetemp = totalTemp / 100

        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; Kelvin &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Double&lt;/span&gt; = (((averagetemp / 1023) * 3.3) * 100)
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; Celsius &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Double&lt;/span&gt; = (Kelvin - 273) - 17.8
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; Fahrenheit = (Celsius) * (9 / 5) + 32

        Debug.Print(WarningStatus.ToString &amp;amp; &lt;span class="str"&gt;" "&lt;/span&gt; &amp;amp; averagetemp.ToString() &amp;amp; &lt;span class="str"&gt;" "&lt;/span&gt; &amp;amp; Fahrenheit.ToString &amp;amp; &lt;span class="str"&gt;" / "&lt;/span&gt; &amp;amp; Celsius.ToString &amp;amp; &lt;span class="str"&gt;" "&lt;/span&gt;)

        &lt;span class="kwrd"&gt;Return&lt;/span&gt; Celsius
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;


    &lt;span class="kwrd"&gt;Private&lt;/span&gt; PollingTimer &lt;span class="kwrd"&gt;As&lt;/span&gt; Timer

    &lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; PollingTemperatureMethod()
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; PollingDelegate &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; TimerCallback(&lt;span class="kwrd"&gt;AddressOf&lt;/span&gt; PollForTemperature)
        PollingTimer = &lt;span class="kwrd"&gt;New&lt;/span&gt; Timer(PollingDelegate, &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;, 1000, PollingDelay * 1000)
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;

    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; PollForTemperature(stateInfo &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;)
        Module1.CurrentTemperature = GetAverageTemperatureReading()
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;

&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Module&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;&lt;/pre&gt;
&lt;h4&gt;Writing the SD Card&lt;/h4&gt;
&lt;p&gt;There are a few differences between the Netduino and the Netduino Plus. I&amp;rsquo;d chosen the Plus version because it comes with a micro SD card slot on the board &amp;ndash; so no new hardware are required to log these values for reviewing later. Searching in the Netduino forums reveals many examples of code available to write to SD Cards. The micro-framework includes some IO file support but is not the file support that you might expect from the full desktop .NET Framework. The task I want to achieve is to append the new sensor readings to the end of a file containing the existing readings and using the full framework I&amp;rsquo;d simply be using the System.IO.File class but this doesn&amp;rsquo;t exist on Micro-framework and so I had to create my own helper function which uses a Streamwriter, I guess once I&amp;rsquo;ve done this once I can reuse it over again.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Added to PollForTemperature Method&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; Str &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;"SensorData: 1,"&lt;/span&gt; &amp;amp; Module1.CurrentTemperature.ToString &amp;amp; &lt;span class="str"&gt;"2,"&lt;/span&gt; &amp;amp; Module1.CurrentTemperature2.ToString
        AppendToFile(&lt;span class="str"&gt;"\SD\Temperature.dat"&lt;/span&gt;, Str)
        


&lt;span class="preproc"&gt;#Region&lt;/span&gt; &lt;span class="str"&gt;"Writing Data to SD Card"&lt;/span&gt;
    &lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; VolumeExist() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; volumes &lt;span class="kwrd"&gt;As&lt;/span&gt; VolumeInfo() = VolumeInfo.GetVolumes()
        &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; volumeInfo__1 &lt;span class="kwrd"&gt;As&lt;/span&gt; VolumeInfo &lt;span class="kwrd"&gt;In&lt;/span&gt; volumes
            &lt;span class="kwrd"&gt;If&lt;/span&gt; volumeInfo__1.Name.Equals(&lt;span class="str"&gt;"SD"&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;
                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;True&lt;/span&gt;
            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;
        &lt;span class="kwrd"&gt;Next&lt;/span&gt;
        &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;False&lt;/span&gt;
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;

    &lt;span class="rem"&gt;' Append to a file / Create the file if it doesn't exist&lt;/span&gt;
    &lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; AppendToFile(filename &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, string1 &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;)
        &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; VolumeExist() &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            &lt;span class="kwrd"&gt;Return&lt;/span&gt;
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;

        &lt;span class="kwrd"&gt;Try&lt;/span&gt;

            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; fs &lt;span class="kwrd"&gt;As&lt;/span&gt; FileStream = &lt;span class="kwrd"&gt;If&lt;/span&gt;(File.Exists(filename), &lt;span class="kwrd"&gt;New&lt;/span&gt; FileStream(filename, FileMode.Append), &lt;span class="kwrd"&gt;New&lt;/span&gt; FileStream(filename, FileMode.Create))
            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; streamWriter &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; StreamWriter(fs)
            streamWriter.WriteLine(string1.ToString)
            streamWriter.Flush()
            streamWriter.Close()

            fs.Close()
        &lt;span class="kwrd"&gt;Catch&lt;/span&gt; generatedExceptionName &lt;span class="kwrd"&gt;As&lt;/span&gt; Exception
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Try&lt;/span&gt;
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;
&lt;span class="preproc"&gt;#End Region&lt;/span&gt;&lt;/pre&gt;
&lt;h4&gt;Detecting Warning Conditions&lt;/h4&gt;
&lt;p&gt;I wanted my code to be able to detect hot and cold warning conditions as both of these can cause problems with wine storage. During development I wanted a much narrower temperature range allowing me to trigger it easily but chose to read these settings into the application from a file on the SD Card to make it flexible. Allowing me modify the settings without having to redeploy the application. Once I have these Maximum and Minimum values I can then use these to determine if the sensor reading is a Warning Condition and if this has occurred turn on one of the two warning LED to provide a clear indication that we have had an temperature event occur.&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Dim&lt;/span&gt; HiWarningLED &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; OutputPort(Pins.GPIO_PIN_D9, &lt;span class="kwrd"&gt;False&lt;/span&gt;)
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; LowWarningLED &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; OutputPort(Pins.GPIO_PIN_D11, &lt;span class="kwrd"&gt;False&lt;/span&gt;)

&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Enum&lt;/span&gt; LevelCheck
    LowTemp
    HiTemp
&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Enum&lt;/span&gt;

    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; LowWarningStatus &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt; = &lt;span class="kwrd"&gt;False&lt;/span&gt;
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; WarningStatus &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt; = &lt;span class="kwrd"&gt;False&lt;/span&gt;
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; MinTemp &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 20
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; MaxTemp &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 26

    &lt;span class="kwrd"&gt;Function&lt;/span&gt; CheckTemperatureForWarning(Temp &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Double&lt;/span&gt;, &lt;span class="kwrd"&gt;Optional&lt;/span&gt; Level &lt;span class="kwrd"&gt;As&lt;/span&gt; LevelCheck = LevelCheck.HiTemp) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; WarnStateOccured &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt; = &lt;span class="kwrd"&gt;False&lt;/span&gt;
        &lt;span class="kwrd"&gt;If&lt;/span&gt; Level = LevelCheck.LowTemp &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            &lt;span class="rem"&gt;'Is Temperature Exceeding MaxTemp&lt;/span&gt;
            &lt;span class="kwrd"&gt;If&lt;/span&gt; Temp &amp;lt;= MinTemp &lt;span class="kwrd"&gt;Then&lt;/span&gt;
                Debug.Print(&lt;span class="str"&gt;"Low Warning Triggered"&lt;/span&gt;)
                Debug.Print(&lt;span class="str"&gt;"Temp: "&lt;/span&gt; &amp;amp; Temp.ToString)
                Debug.Print(&lt;span class="str"&gt;"maxTemp: "&lt;/span&gt; &amp;amp; MaxTemp.ToString)
                Debug.Print(&lt;span class="str"&gt;"minTemp: "&lt;/span&gt; &amp;amp; MinTemp.ToString)
                WarnStateOccured = &lt;span class="kwrd"&gt;True&lt;/span&gt;
            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;
        &lt;span class="kwrd"&gt;ElseIf&lt;/span&gt; Level = LevelCheck.HiTemp &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            &lt;span class="rem"&gt;'Is Temperature Exceeding MaxTemp&lt;/span&gt;
            &lt;span class="kwrd"&gt;If&lt;/span&gt; Temp &amp;gt;= MaxTemp &lt;span class="kwrd"&gt;Then&lt;/span&gt;
                Debug.Print(&lt;span class="str"&gt;"Hi Warning Triggered"&lt;/span&gt;)
                Debug.Print(&lt;span class="str"&gt;"Temp: "&lt;/span&gt; &amp;amp; Temp.ToString)
                Debug.Print(&lt;span class="str"&gt;"maxTemp: "&lt;/span&gt; &amp;amp; MaxTemp.ToString)
                Debug.Print(&lt;span class="str"&gt;"minTemp: "&lt;/span&gt; &amp;amp; MinTemp.ToString)
                WarnStateOccured = &lt;span class="kwrd"&gt;True&lt;/span&gt;
            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;
        &lt;span class="kwrd"&gt;Return&lt;/span&gt; WarnStateOccured
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;


    &lt;span class="kwrd"&gt;Sub&lt;/span&gt; WarningStatusLight(State &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt;, &lt;span class="kwrd"&gt;Optional&lt;/span&gt; Level &lt;span class="kwrd"&gt;As&lt;/span&gt; LevelCheck = LevelCheck.HiTemp)
        &lt;span class="rem"&gt;'Code to turn on/off LED&lt;/span&gt;
        &lt;span class="kwrd"&gt;If&lt;/span&gt; Level = LevelCheck.LowTemp &lt;span class="kwrd"&gt;Then&lt;/span&gt; LowWarningLED.Write(State)
        &lt;span class="kwrd"&gt;If&lt;/span&gt; Level = LevelCheck.HiTemp &lt;span class="kwrd"&gt;Then&lt;/span&gt; HiWarningLED.Write(State)
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;


&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; PollForTemperature(stateInfo &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;)
        Module1.CurrentTemperature = GetAverageTemperatureReading()

        &lt;span class="rem"&gt;'If the warning status light is off and a warning temperature occurs then &lt;/span&gt;
        &lt;span class="rem"&gt;'set Warning Light State to True and don't bother checking any more as the &lt;/span&gt;
        &lt;span class="rem"&gt;'alarm condition has been met&lt;/span&gt;
        &lt;span class="kwrd"&gt;If&lt;/span&gt; LowWarningStatus = &lt;span class="kwrd"&gt;False&lt;/span&gt; &lt;span class="kwrd"&gt;AndAlso&lt;/span&gt; CheckTemperatureForWarning(CurrentTemperature, LevelCheck.LowTemp) = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            LowWarningStatus = &lt;span class="kwrd"&gt;True&lt;/span&gt;
            WarningStatusLight(LowWarningStatus, LevelCheck.LowTemp)
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;

        &lt;span class="kwrd"&gt;If&lt;/span&gt; WarningStatus = &lt;span class="kwrd"&gt;False&lt;/span&gt; &lt;span class="kwrd"&gt;AndAlso&lt;/span&gt; CheckTemperatureForWarning(CurrentTemperature, LevelCheck.HiTemp) = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            WarningStatus = &lt;span class="kwrd"&gt;True&lt;/span&gt;
            WarningStatusLight(WarningStatus, LevelCheck.HiTemp)
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;
&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Reset Button&lt;/h4&gt;
&lt;p&gt;When a temperature event has occurred I can retrieve the SD Card and determine how high and for how long this event occurred. But I would like a simple way to reset the LED. I could just repower the device which would restart everything back to its original state or a more elegant way is simply to have a Reset Button to turn the LED off &amp;ndash; so I&amp;rsquo;d implemented a solution which would reset the warning indicator LED and provide feedback with a little flashing sequence. One important thing to note is that when the button pressed interrupt occurs it is necessary to re-enable the interrupt. This is something that you don&amp;rsquo;t normally have to do with other button click events.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; button &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; InterruptPort(Pins.GPIO_PIN_D8, &lt;span class="kwrd"&gt;False&lt;/span&gt;, Port.ResistorMode.PullUp, Port.InterruptMode.InterruptEdgeBoth)
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; ResetLED &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; OutputPort(Pins.GPIO_PIN_D12, &lt;span class="kwrd"&gt;False&lt;/span&gt;)

    &lt;span class="kwrd"&gt;Sub&lt;/span&gt; SetupResetButtonHandler()
        &lt;span class="kwrd"&gt;AddHandler&lt;/span&gt; button.OnInterrupt, &lt;span class="kwrd"&gt;AddressOf&lt;/span&gt; ResetStatusLight
        button.EnableInterrupt()
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;

    &lt;span class="kwrd"&gt;Sub&lt;/span&gt; ResetStatusLight(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; data1 &lt;span class="kwrd"&gt;As&lt;/span&gt; UInteger, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; data2 &lt;span class="kwrd"&gt;As&lt;/span&gt; UInteger, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; time &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Date&lt;/span&gt;)
        Debug.Print(&lt;span class="str"&gt;"Reset Warning Light"&lt;/span&gt;)
        &lt;span class="kwrd"&gt;If&lt;/span&gt; data2 = 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            ResetLED.Write(&lt;span class="kwrd"&gt;True&lt;/span&gt;)
            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; LEDFlashState &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt; = &lt;span class="kwrd"&gt;False&lt;/span&gt;
            &lt;span class="kwrd"&gt;For&lt;/span&gt; i = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; 8
                ResetLED.Write(LEDFlashState)
                Thread.Sleep(100)
                LEDFlashState = &lt;span class="kwrd"&gt;Not&lt;/span&gt; LEDFlashState
            &lt;span class="kwrd"&gt;Next&lt;/span&gt;
            ResetLED.Write(&lt;span class="kwrd"&gt;False&lt;/span&gt;)
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;

        button.EnableInterrupt()
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Heartbeat Indicator&lt;/h4&gt;
&lt;p&gt;When testing the functionality I realized this device could be sitting in my pantry working away and the temperature could be just fine OR the battery could be flat and I would have no obvious signs to differentiate the two. The location of the shield on top of the device hides a little LED on the main Netduino board. So, I decided that a heartbeat LED flashing every minute would be a good idea on providing visual indication the sensor was alive and working.&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Dim&lt;/span&gt; HeartBeatLED &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; OutputPort(Pins.GPIO_PIN_D13, &lt;span class="kwrd"&gt;False&lt;/span&gt;)

    &lt;span class="kwrd"&gt;Private&lt;/span&gt; watchdogTimer &lt;span class="kwrd"&gt;As&lt;/span&gt; Timer
    &lt;span class="kwrd"&gt;Private&lt;/span&gt; HeartBeatThread &lt;span class="kwrd"&gt;As&lt;/span&gt; Thread = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;

    &lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; HeartBeatThreadMethod()
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; HeartBeatDelegate &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; TimerCallback(&lt;span class="kwrd"&gt;AddressOf&lt;/span&gt; PulseLED)
        watchdogTimer = &lt;span class="kwrd"&gt;New&lt;/span&gt; Timer(HeartBeatDelegate, &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;, 1000, HeartBeatDelay * 1000)
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;

    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; PulseLED(stateInfo &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;)
        Debug.Print(&lt;span class="str"&gt;"HeartBeat..."&lt;/span&gt;)
        HeartBeatLED.Write(&lt;span class="kwrd"&gt;True&lt;/span&gt;)
        Thread.Sleep(250)
        HeartBeatLED.Write(&lt;span class="kwrd"&gt;False&lt;/span&gt;)
        Thread.Sleep(250)
        HeartBeatLED.Write(&lt;span class="kwrd"&gt;True&lt;/span&gt;)
        Thread.Sleep(250)
        HeartBeatLED.Write(&lt;span class="kwrd"&gt;False&lt;/span&gt;)
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;h4&gt;&lt;b&gt;Debug&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;With this code in place I can now debug the application. Simply pressing F5 will compile and debug the application. As the device doesn&amp;rsquo;t have a UI as such, we can use Visual Studio when debugging on a device to monitor values of variables etc. just as we would on a desktop application. This enables me to code step code to trace through the code and find logic issues as well as write additional debug output to the Output window.&lt;/p&gt;
&lt;p&gt;The experience is very similar to the desktop &amp;ndash; although no edit and continue is permitted. This is ok as the applications as small and you are essentially deploying them completely to the device each time you are debugging your application. The deployment is very quick as the applications are measured in kilobytes. The important thing to check is that you are deploying to the device &amp;ndash; Project Properties &amp;gt; .NET Micro-framework Tab -&amp;gt; USB -&amp;gt; Netduino_Plus is selected.&lt;/p&gt;
&lt;h4&gt;&lt;/h4&gt;
&lt;h4&gt;&lt;b&gt;Deploy&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;Deploying your application is automatically accomplished by debugging your application. The process involves a couple of additional steps in translating your IL into code which will run on the specific micro-framework device but these details are more to do with the hardware platform vendors SDK hooking into Visual Studio. Although .NET Micro-framework supports hardware emulators for testing &amp;ndash; it is simple to debug on the device itself &amp;ndash; albeit it takes a few seconds longer to deploy the application to the physical device.&lt;/p&gt;
&lt;h4&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4&gt;Summary&lt;/h4&gt;
&lt;p&gt;I now have a basic functioning sensor that I can used to retrieve sensor readings from my Wine Cellar which will give me a visual indication of spoilage temperature conditions. I&amp;rsquo;ve managed to read a build a circuit, read a sensor, use timers to poll for reading, turn on/off LED&amp;rsquo;s for Visual Indication, Interact with device via a button input and write data to a Micro SD Card. These are basic functions which can be used over and over again in many different applications.&lt;/p&gt;
&lt;h4&gt;&lt;/h4&gt;
&lt;h4&gt;&lt;b&gt;Next:&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;We&amp;rsquo;ll take this one step further and enable the Wifi support to allow remote reading of the device.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Spotty&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Additional Info&lt;/h4&gt;
&lt;p&gt;&lt;b&gt;Netduino micro-controller&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.Netduino.com"&gt;www.Netduino.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Electronic Components Suppliers&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.AdaFruit.com"&gt;www.AdaFruit.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.Makershed.com"&gt;www.Makershed.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.Sparkfun.com"&gt;www.Sparkfun.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Download Locations&lt;/b&gt;&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="187"&gt;
&lt;p&gt;Micro-framework 4.2 Beta&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="451"&gt;
&lt;p&gt;&lt;a href="http://netmf.codeplex.com/"&gt;http://netmf.codeplex.com/&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="187"&gt;
&lt;p&gt;Netduino Firmware&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="451"&gt;
&lt;p&gt;&lt;a href="http://forums.netduino.com/index.php?/topic/1958-netduino-firmware-v420-beta-1/"&gt;http://forums.netduino.com/index.php?/topic/1958-netduino-firmware-v420-beta-1/&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10192200" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Spotty+Bowles/">Spotty Bowles</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/VB2010/">VB2010</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Netduino/">Netduino</category></item><item><title>Kinect SDK For PC - VB Samples available.</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/06/16/kinnect-sdk-for-pc-vb-samples-available.aspx</link><pubDate>Thu, 16 Jun 2011 20:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10175462</guid><dc:creator>VBTeam</dc:creator><slash:comments>14</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10175462</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/06/16/kinnect-sdk-for-pc-vb-samples-available.aspx#comments</comments><description>&lt;p style="margin: 0in 0in 0pt;"&gt;Today, Microsoft announced the Kinect SDK for PC&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt;"&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt;"&gt;&lt;a href="http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/download.aspx"&gt;http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/download.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt;"&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt;"&gt;VB Samples are there at launch and available for downloading&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt;"&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt;"&gt;&lt;a href="http://files.ch9.ms/coding4fun/KinectSDKSamplesVB.zip"&gt;&lt;span style="font-family: Calibri; color: #0000ff; font-size: small;"&gt;http://files.ch9.ms/coding4fun/KinectSDKSamplesVB.zip&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt;"&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt;"&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=10175462" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/VB2010/">VB2010</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Visual+Basic/">Visual Basic</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Kinnect/">Kinnect</category></item><item><title>Micro-framework v4.2 Support for Visual Basic</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/06/08/micro-framework-v4-2-support-for-visual-basic.aspx</link><pubDate>Thu, 09 Jun 2011 03:17:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10172759</guid><dc:creator>VBTeam</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10172759</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/06/08/micro-framework-v4-2-support-for-visual-basic.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size: small;"&gt;The release of .NET Micro framework v4.2 Beta brings Visual Basic support for the .NET Micro-framework.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;For those that have not heard of the Micro framework before &lt;/span&gt;&lt;/p&gt;
&lt;p class="alparagraph"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;ldquo;The .NET Micro Framework is .NET for small and resource constrained devices. It offers a complete and innovative development and execution environment that brings the productivity of modern computing tools to this class of devices.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;For current .NET developers, this means that they can now create applications that run on a range of devices from targeted devices like remote controls to PCs and Servers and on to the cloud &amp;ndash; all with the same programming model and tools.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;For current Embedded developers, this means that they can now leverage the productivity gains that have been achieved on the desktop and reduce their time to market.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;The .NET Micro Framework is a fully integrated Visual Studio experience brings a reliable and productive development system to the embedded world.&amp;rdquo;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;Up until now the platform has been a C# only platform but the v4.2 Beta brings VB support.&amp;nbsp;&amp;nbsp; The support requires the installation of Visual Studio 2010 SP1 installations (Express versions support is not yet implemented fully).&amp;nbsp;&amp;nbsp; The VB support utilizes the work carried out by the 'Compilers' team for VBCore functionality and lights up another platform.&amp;nbsp;&amp;nbsp;&amp;nbsp; This is exciting news for both the Compilers and the .NET Micro-framework teams&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;Other hardware vendor SDK&amp;rsquo;s will be available updating their SDK and providing specific VB project templates target 4.2, with Secret Labs already releasing a 4.2 Beta version of their SDK for the Netduino devices with VB support.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;This is really exciting news for anyone that wants to get into the area embedded microcontroller devices and wanting to leverage their VB skills and tinker with some electronics.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VB developers can now be microcontroller developers.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;More info to follow...&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Download Location&lt;/b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;a href="http://netmf.codeplex.com/"&gt;http://netmf.codeplex.com&lt;/a&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;b&gt;Addition Info&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Micro-Framework Team Blog&lt;br /&gt;&lt;/b&gt;&lt;a href="http://blogs.msdn.com/b/netmfteam/archive/2011/06/07/netmf-version-4-2-beta-now-available.aspx"&gt;http://blogs.msdn.com/b/netmfteam/archive/2011/06/07/netmf-version-4-2-beta-now-available.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;b&gt;.NET Micro-framework&lt;br /&gt;&lt;/b&gt;&lt;a href="http://www.microsoft.com/en-us/netmf/default.aspx"&gt;http://www.microsoft.com/en-us/netmf/default.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Secret Labs Netduino&lt;br /&gt;&lt;/b&gt;&lt;a href="http://www.netduino.com"&gt;http://www.netduino.com&lt;/a&gt;&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=10172759" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Spotty+Bowles/">Spotty Bowles</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/VB2010/">VB2010</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Microframework/">Microframework</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Netduino/">Netduino</category></item><item><title>VB Support for the XNA platform</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/05/25/vb-support-for-the-xna-platform.aspx</link><pubDate>Wed, 25 May 2011 20:16:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10168398</guid><dc:creator>VBTeam</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10168398</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/05/25/vb-support-for-the-xna-platform.aspx#comments</comments><description>&lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;With the release of the Mango Toolset, Visual Basic support for XNA and Windows Phone has now been added. VB resources include &lt;a href="http://create.msdn.com/en-US/education/gamedevelopment/VBSupportForXNA"&gt;VB XNA documentation&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/ff431744(VS.92).aspx"&gt;VB WP7 code samples and starter kits&lt;/a&gt; and this post is intended to walk you through some of the steps in creating a simple XNA application for Windows Phone 7 using VB.&lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;What is XNA?&lt;/h3&gt;  &lt;p&gt;Microsoft XNA is the development framework and tools used to create application for the Xbox 360 / Desktop PC and also the windows Phone 7. It provides access to build managed game type applications. The goal as with any framework is to avoid the developer having to write a lot of low-level repetitive boilerplate code and to expose different aspects of game production into a single system.&lt;/p&gt;  &lt;p&gt;The XNA toolset is not new although it has undergone a number of revisions. Although during its history it has only supported C# as a development language for a number of technical reasons, although some users managed to create workarounds to allow limited support. However with the advent of the Windows Phone 7 and its use of the XNA framework additional efforts were made to ensure Visual Basic developers were not left out of the game and with the Mango Tools update finally VB users are provided with full support within XNA.&lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Why is it important?&lt;/h3&gt;  &lt;p&gt;Windows Phone 7 as a platform is extremely important for Microsoft. The mobile platform had a fundamental reset to provide a much improved user experience. There are two different ways of developing applications for the platform - Silverlight and XNA.&lt;/p&gt;  &lt;p&gt;The Silverlight support was implement a while back with specific project templates for the phone but XNA had a few more challenges which have required a bit more work. Silverlight is ideal for most applications that are not timing critical and works well in an event driven model, this is most similar to the type of applications most existing VB developers have created for Windows or the Web. Events are triggered (such as user clicking a button), code is then executed. However for many games, timing is obviously critical and this requires a different platform designed specifically for this type of application. This is best shown with the following diagram which shows the concept of the &amp;quot;Game Loop&amp;quot; – with more details shown a little bit later.&lt;/p&gt;  &lt;p&gt;This post is only intended to show you how to get started with XNA development using Visual Basic. To fully realize the potential would take many more pages - entire books devoted to the subject have been written.&lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;How do I use it?&lt;/h3&gt;  &lt;p&gt;The first thing to do is install the &lt;a href="http://create.msdn.com/en-us/resources/downloads"&gt;Windows Phone Developer Tools 7.1 Beta’ (Mango Toolset)&lt;/a&gt; onto a machine with Visual Studio 2010 SP1 installed. VS2010 SP1 is critical for this to work and also will change how Silverlight application developed using VB are now compiled. This will also install updated Windows Phone 7 templates.&lt;/p&gt;  &lt;p&gt;Be aware that XNA requires a higher-end video card to allow the emulator to run; most modern machines have cards capable of supporting DirectX10 and 11 which should be sufficient. This is important as Silverlight applications using the emulation don’t require the higher end video card.&lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Let’s create something using VB and XNA&lt;/h3&gt;  &lt;p&gt;The first thing you will notice is when you create a new project that there is now a folder containing marked &lt;i&gt;&amp;quot;XNA Game Studio 4.0&amp;quot; &lt;/i&gt;as well as the existing &lt;i&gt;&amp;quot;Silverlight for Windows Phone 7&amp;quot; &lt;/i&gt;folder.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/1526.clip_5F00_image0024_5F00_342B44E9.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002[4]" border="0" alt="clip_image002[4]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/6320.clip_5F00_image0024_5F00_thumb_5F00_6F7EAAA7.jpg" width="244" height="175" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So let’s start by selecting &amp;quot;Windows Phone 7 4.0 Game&amp;quot; to demonstrate XNA.&lt;/p&gt;  &lt;p&gt;The first thing you will notice that this Project type actually created 2 projects, a game project and a content project.&lt;/p&gt;  &lt;p&gt;This post is working through a simple game application using XNA in order to show VB support. Although when running using the emulator you will not see the true experience, the application will be using the accelerometer sensor inputs of the phone when deployed to a windows Phone 7 device.&lt;/p&gt;  &lt;p&gt;So the example is going to have a &amp;quot;Yoyo&amp;quot; type object that is bouncing around the screen and controlled by user inputs. The application will use some simple physics to implement the spring type functionality. Although this is really only a rough approximation of the physics involved it does utilize some items to simulate friction, gravity.&lt;/p&gt;  &lt;p&gt;One of the main differences between typical VB &amp;quot;Event driven&amp;quot; applications and XNA &amp;quot;Game Type&amp;quot; applications is that for XNA - timing is absolutely critical. The XNA type applications generally follow a code flow similar to the following. The main bulk of the code is contained within the “Game Loop” cycle of Update/Draw.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/5342.clip_5F00_image0034_5F00_536DEBBC.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image003[4]" border="0" alt="clip_image003[4]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/8078.clip_5F00_image0034_5F00_thumb_5F00_7A3C01FC.png" width="244" height="180" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The frame rate for the game equates to the speed at which the game loop is running - obviously we want to make the application appear fluid which involves setting one high enough that the animation is going to look smooth. Too low a value and the animate will look jerky, too high a value and the application can get bogged down in calculations which are really not perceptible and the more unnecessary processing the application is doing, the shorter the battery life will be - so there are trade-offs that are made.&lt;/p&gt;  &lt;p&gt;The good thing about this frame rate is that it can be controlled really easily and doesn’t really involve having to a lot of low level code. By default the frame rate normally used is roughly 30 frames per second. This is slightly quicker than what the average person can detect and therefore animation at this rate appears smooth.&lt;/p&gt;  &lt;p&gt;This can be altered by modifying the line &lt;/p&gt;  &lt;pre class="csharpcode"&gt;TargetElapsed = Timespan.FromTicks(3333333)&lt;/pre&gt;


&lt;p&gt;Now this has been established we need to add a couple of resources used by the application. We will add these to our “Content” Project. We will add the following existing items to the Content project.&lt;/p&gt;

&lt;p&gt;Yoyo.png
  &lt;br /&gt;PieceOfString.Bmp

  &lt;br /&gt;Target.png&lt;/p&gt;

&lt;p&gt;To add the images, simply add using &amp;quot;Add an Existing Item&amp;quot; context menu options from solution explorer and selecting the images files. These items are now part of the content project. Not all graphic image formats are supported so you will need to be careful to select one that is. This is an important point that not all formats are supported for all actions. This relates to graphics/sounds etc. but this information is easily found within XNA links.&lt;/p&gt;

&lt;p&gt;Next let’s open up game.vb in the game project and add a few fields which we are going to use for the application. These will be used to hold items required for the game.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;WithEvents&lt;/span&gt; graphics &lt;span class="kwrd"&gt;As&lt;/span&gt; GraphicsDeviceManager
&lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;WithEvents&lt;/span&gt; spriteBatch &lt;span class="kwrd"&gt;As&lt;/span&gt; SpriteBatch

&lt;span class="rem"&gt;'//stores accelerometer's acceleration&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; accelerometer &lt;span class="kwrd"&gt;As&lt;/span&gt; Microsoft.Devices.Sensors.Accelerometer
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; accelX &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 0
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; accelY &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 0
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; spring &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 0.2
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; friction &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 0.75
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; gravity &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 17

&lt;span class="rem"&gt;'Finger Coordinates&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; fingerPosition_X &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 0
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; fingerPosition_Y &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 0

&lt;span class="rem"&gt;'Yoyo Object&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; YoYo &lt;span class="kwrd"&gt;As&lt;/span&gt; Texture2D
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; PieceOfString &lt;span class="kwrd"&gt;As&lt;/span&gt; Texture2D
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; YoYo_Position_X &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 50
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; YoYo_Position_Y &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 50
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; YoYo_VelocityX &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 0
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; YoYo_VelocityY &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 0

&lt;span class="rem"&gt;'Text Position and Score&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; font1 &lt;span class="kwrd"&gt;As&lt;/span&gt; SpriteFont
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; font_Position &lt;span class="kwrd"&gt;As&lt;/span&gt; Vector2
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; ScreenCenter &lt;span class="kwrd"&gt;As&lt;/span&gt; Vector2
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; textsize &lt;span class="kwrd"&gt;As&lt;/span&gt; Vector2
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Text &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;Yoyo Attack&amp;quot;&lt;/span&gt; &amp;amp; vbLf &amp;amp; &lt;span class="str"&gt;&amp;quot;by Spotty&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;This has defined some basic items for our game but based upon the general flow diagram show above we will need to put some lines in the &lt;b&gt;&lt;i&gt;“LoadContent”&lt;/i&gt;&lt;/b&gt; method to use the content which we have already added into the content project (ie. Yoyo.png, PieceOfString.bmp)&lt;/p&gt;

&lt;p&gt;We need to Load the content for our game application. The content is stored in the Content Project but when creating a new game, an automatic project to project reference was created between the two. So in the Game project, the &lt;i&gt;“&lt;b&gt;LoadContent”&lt;/b&gt;&lt;/i&gt;&lt;b&gt; &lt;/b&gt;method will have the following code added initialize our game objects with the correct content.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; LoadContent()
    &lt;span class="rem"&gt;' Create a new SpriteBatch, which can be used to draw textures.&lt;/span&gt;
    spriteBatch = &lt;span class="kwrd"&gt;New&lt;/span&gt; SpriteBatch(GraphicsDevice)
    YoYo = Content.Load(Of Texture2D)(&lt;span class="str"&gt;&amp;quot;Yoyo&amp;quot;&lt;/span&gt;)
    PieceOfString = Content.Load(Of Texture2D)(&lt;span class="str"&gt;&amp;quot;PieceOfString&amp;quot;&lt;/span&gt;)

    font1 = Content.Load(Of SpriteFont)(&lt;span class="str"&gt;&amp;quot;CourierNew&amp;quot;&lt;/span&gt;)
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; viewport &lt;span class="kwrd"&gt;As&lt;/span&gt; Viewport = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.GraphicsDevice.Viewport
    ScreenCenter = &lt;span class="kwrd"&gt;New&lt;/span&gt; Vector2(viewport.Width / 2, viewport.Height / 2)
    Text = &lt;span class="str"&gt;&amp;quot;Yoyo Attack&amp;quot;&lt;/span&gt; &amp;amp; vbCrLf &amp;amp; &lt;span class="str"&gt;&amp;quot;By Spotty&amp;quot;&lt;/span&gt;
    textsize = font1.MeasureString(Text)

&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;As the phone is a specific type of device that runs XNA (From the project templates you will have noticed you can target windows, Xbox 360 and Windows Phone 7 using XNA), for the purposes of this application we want to use the accelerometer on the phone so we will need to add a reference to allow us to capture this sensor input.&lt;/p&gt;

&lt;p&gt;This requires the addition of the Microsoft.Devices.Sensors.dll in the “Game” project which is a specific class library used for Sensor inputs on the phone. This should show up in the list of applicable references shown on the add references dialog.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/5430.clip_5F00_image0054_5F00_210A183D.jpg"&gt;&lt;img 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" title="clip_image005[4]" border="0" alt="clip_image005[4]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/0045.clip_5F00_image0054_5F00_thumb_5F00_60D3FEC2.jpg" width="244" height="195" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So within the Game Project &lt;b&gt;Initialize &lt;/b&gt;Method we will add the following&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Initialize()
    font_Position = &lt;span class="kwrd"&gt;New&lt;/span&gt; Vector2(graphics.GraphicsDevice.Viewport.Width / 2 - 100,     graphics.GraphicsDevice.Viewport.Height / 2)

    &lt;span class="kwrd"&gt;If&lt;/span&gt; accelerometer &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;
        &lt;span class="rem"&gt;'// Instantiate the accelerometer sensor&lt;/span&gt;
        accelerometer = &lt;span class="kwrd"&gt;New&lt;/span&gt; Microsoft.Devices.Sensors.Accelerometer

        &lt;span class="kwrd"&gt;AddHandler&lt;/span&gt; accelerometer.ReadingChanged, &lt;span class="kwrd"&gt;AddressOf&lt;/span&gt; accelerometer_ReadingChanged
        accelerometer.Start()
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;
    &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Initialize()
&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;At this point you will notice a compile error on the AddHandler line because we don’t have a method called &lt;b&gt;&lt;i&gt;“Accelerometer_ReadingChanged”&lt;/i&gt;&lt;/b&gt; so we can use the “Generate from usage (GFU)” feature. This will generate a method with the following signature.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; accelerometer_ReadingChanged(sender &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;, e &lt;span class="kwrd"&gt;As&lt;/span&gt; Microsoft.Devices.Sensors.AccelerometerReadingEventArgs)

&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;




&lt;p&gt;Within this method we will add a few lines of code to set the acceleration fields with values which are used in the update method.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;accelX = &lt;span class="kwrd"&gt;CType&lt;/span&gt;(e.X, &lt;span class="kwrd"&gt;Single&lt;/span&gt;)
accelY = &lt;span class="kwrd"&gt;CType&lt;/span&gt;(e.Y, &lt;span class="kwrd"&gt;Single&lt;/span&gt;)&lt;/pre&gt;




&lt;p&gt;So we now have much of the basic parts of the application but we still have not drawn anything on the screen. We are now going to code up the two major methods used for the game loop (update and draw)&lt;/p&gt;

&lt;p&gt;So the first method which we will code up is the &lt;b&gt;Update&lt;/b&gt; method.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Update(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; gameTime &lt;span class="kwrd"&gt;As&lt;/span&gt; GameTime)

        &lt;span class="rem"&gt;' Allows the game to exit&lt;/span&gt;
        &lt;span class="kwrd"&gt;If&lt;/span&gt; GamePad.GetState(PlayerIndex.One).Buttons.Back = ButtonState.Pressed &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            &lt;span class="kwrd"&gt;Me&lt;/span&gt;.[&lt;span class="kwrd"&gt;Exit&lt;/span&gt;]()
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;

        &lt;span class="rem"&gt;'get the state of the touch panel&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; curTouches &lt;span class="kwrd"&gt;As&lt;/span&gt; TouchCollection = TouchPanel.GetState()

        &lt;span class="rem"&gt;' Process touch locations&lt;/span&gt;
        &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; location &lt;span class="kwrd"&gt;As&lt;/span&gt; TouchLocation &lt;span class="kwrd"&gt;In&lt;/span&gt; curTouches
            &lt;span class="kwrd"&gt;Select&lt;/span&gt; &lt;span class="kwrd"&gt;Case&lt;/span&gt; location.State
                &lt;span class="kwrd"&gt;Case&lt;/span&gt; TouchLocationState.Pressed
                    fingerPosition_X = location.Position.X
                    fingerPosition_Y = location.Position.Y
                    &lt;span class="kwrd"&gt;Exit&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;
                &lt;span class="kwrd"&gt;Case&lt;/span&gt; TouchLocationState.Released
                    &lt;span class="rem"&gt;'Don't care about released state in this demo&lt;/span&gt;
                    &lt;span class="kwrd"&gt;Exit&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;
                &lt;span class="kwrd"&gt;Case&lt;/span&gt; TouchLocationState.Moved
                    fingerPosition_X = location.Position.X
                    fingerPosition_Y = location.Position.Y
                    &lt;span class="kwrd"&gt;Exit&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;
            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;
        &lt;span class="kwrd"&gt;Next&lt;/span&gt;

        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; ax &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = (fingerPosition_X - YoYo_Position_X) * spring
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; ay &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = (fingerPosition_Y - YoYo_Position_Y) * spring

        &lt;span class="rem"&gt;'Calculate Yoyo velocity based upon Finger acceleration, gavity and friction coefficients&lt;/span&gt;
        YoYo_VelocityY += ay
        YoYo_VelocityY += gravity * accelY
        YoYo_VelocityY *= friction

        YoYo_VelocityX += ax
        YoYo_VelocityX += -gravity * accelX
        YoYo_VelocityX *= friction


        &lt;span class="rem"&gt;'Calculate Yoyo Position based upon velocity&lt;/span&gt;
        YoYo_Position_X += YoYo_VelocityX
        YoYo_Position_Y += YoYo_VelocityY

        &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Update(gameTime)
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;




&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;The calculation of the yoyo velocity may seem a little complicated but it is based upon 3 factors Finger acceleration which is set as a result of the event we have just hooked up and the gravity and friction coefficient fields which we have established in the field declarations.&lt;/p&gt;

&lt;p&gt;The method is calculating the Yoyo position based upon these inputs as well as determining if the back button as been pressed on the phone.&lt;/p&gt;

&lt;p&gt;So now we have calculated our new position for the Yoyo, we need to draw the item.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Draw(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; gameTime &lt;span class="kwrd"&gt;As&lt;/span&gt; GameTime)

        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; start &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; Vector2(fingerPosition_X, fingerPosition_Y)
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; [&lt;span class="kwrd"&gt;end&lt;/span&gt;] &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; Vector2(YoYo_Position_X, YoYo_Position_Y)
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; rotation &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = &lt;span class="kwrd"&gt;CSng&lt;/span&gt;(Math.Atan2([&lt;span class="kwrd"&gt;end&lt;/span&gt;].Y - start.Y, [&lt;span class="kwrd"&gt;end&lt;/span&gt;].X - start.X))

        &lt;span class="rem"&gt;'calculate the distance between the start and end points&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; distance &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(Vector2.Distance(start, [&lt;span class="kwrd"&gt;end&lt;/span&gt;]))

        GraphicsDevice.Clear(Color.Navy)  
        spriteBatch.Begin()

        &lt;span class="rem"&gt;'Yoyo Drawing&lt;/span&gt;
        &lt;span class="kwrd"&gt;If&lt;/span&gt; PieceOfString IsNot &lt;span class="kwrd"&gt;Nothing&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            spriteBatch.Draw(PieceOfString, start, &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;, Color.Gray, rotation, Vector2.Zero, _
                 &lt;span class="kwrd"&gt;New&lt;/span&gt; Vector2(distance, 1.0F), SpriteEffects.None, 0.0F)
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;
        spriteBatch.Draw(YoYo, &lt;span class="kwrd"&gt;New&lt;/span&gt; Vector2(YoYo_Position_X - YoYo.Width / 2, YoYo_Position_Y - YoYo.Height / 2), Color.White)


        &lt;span class="rem"&gt;'Position Titles On Screen&lt;/span&gt;
        font_Position.X = ScreenCenter.X
        font_Position.Y = ScreenCenter.Y

        spriteBatch.DrawString(font1, Text, font_Position, Color.Bisque, MathHelper.ToRadians(270), &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;, 1, SpriteEffects.None, 0)

        spriteBatch.&lt;span class="kwrd"&gt;End&lt;/span&gt;()

        &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Draw(gameTime)
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;And last but not least we need to correctly clean up our application when it closes which requires calling out Content dispose methods&lt;/p&gt;

&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; UnloadContent()
        YoYo.Dispose()
        PieceOfString.Dispose()
        target.Dispose()
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;So now we can debug the application, this will start up an instance of the emulator. As we don’t have a physical device we can use the mouse to click on the emulator and flick the Yoyo around. It works like a spring and we have written the code to control this, but it’s not very game-like and we want to add some more game features.&lt;/p&gt;

&lt;p&gt;So we will create a simple item which well to create a 2nd item that will bounce around the screen and act as a target. This object has less physical properties but will have simple X/Y fixed velocity to determine its movement characteristics but will introduce boundaries and collision detection. A critical point here is that adding this 2nd item should absolutely NOT result in the game slowing down noticeable.&lt;/p&gt;

&lt;p&gt;So we will add a few more fields used to store important data of the Target object.&lt;/p&gt;

&lt;p&gt;'
  &lt;pre class="csharpcode"&gt;   &lt;span class="rem"&gt;'Target Object&lt;/span&gt;
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; target &lt;span class="kwrd"&gt;As&lt;/span&gt; Texture2D
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; TargetX &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 10
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; TargetY &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 10
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; TargetVelocityX &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 7
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; TargetVelocityY &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 10
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; TargetRadius &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = 0&lt;/pre&gt;
  &lt;/p&gt;

&lt;p&gt;Then add need to add some content for the target object. So we will add Target.png to the content project and add code to Game project “&lt;b&gt;LoadContent” &lt;/b&gt;method to ensure that we initialize the Target object with an appropriate image from Content project.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;target = Content.Load(Of Texture2D)(&lt;span class="str"&gt;&amp;quot;Target&amp;quot;&lt;/span&gt;)&lt;/pre&gt;


&lt;p&gt;The next thing we need to do is control is the ability of the Target Object to detect when it has reached the edge of the screen and make it appear to bounce of the edge. The important thing here is that that the Target object has two important items associated with it (Vector2D to control direction of movement and Texture2D that determines the appearance of the object such as size, content etc.). Based upon the field initialized values we have some initial values but these will change when it hits the edge so we need to write a little code.&lt;/p&gt;

&lt;p&gt;For the physics we will assume that this object has zero friction and a fixed velocity. This should make implementing it a little easier. We will need to add some logic in the Update method to ensure we are calculating its new position. This code will need to include some logic to determine if it has reached the edges of the screen and the rebound behavior. Think of a Pool table and the ball bouncing off the edges.&lt;/p&gt;

&lt;p&gt;So I’ll add an Enumeration for Direction&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Enum&lt;/span&gt; Direction
    Up
    Down
    Left
    Right
&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Enum&lt;/span&gt;&lt;/pre&gt;




&lt;p&gt;And in add a couple more fields &lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Dim&lt;/span&gt; x_Direction &lt;span class="kwrd"&gt;As&lt;/span&gt; Direction = Direction.Down
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; y_Direction &lt;span class="kwrd"&gt;As&lt;/span&gt; Direction = Direction.Left&lt;/pre&gt;


&lt;p&gt;This will be used to determine the direction of travel in the collision detect logic. We can then create a simple method to control the Edge bounce behavior of the target object.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; DetectTargetEdgeBounce()
        &lt;span class="kwrd"&gt;If&lt;/span&gt; TargetX &amp;lt; 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            &lt;span class="rem"&gt;'If hit Top Edge then&lt;/span&gt;
            x_Direction = Direction.Down
        &lt;span class="kwrd"&gt;ElseIf&lt;/span&gt; TargetX &amp;gt; GraphicsDevice.Viewport.Width &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            &lt;span class="rem"&gt;'Else IF Hit Bottom Edge then&lt;/span&gt;
            x_Direction = Direction.Up
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;

        &lt;span class="kwrd"&gt;If&lt;/span&gt; TargetY &amp;lt; 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            &lt;span class="rem"&gt;'If hit Top Edge then&lt;/span&gt;
            y_Direction = Direction.Right
        &lt;span class="kwrd"&gt;ElseIf&lt;/span&gt; TargetY &amp;gt;= GraphicsDevice.Viewport.Height &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            &lt;span class="rem"&gt;'Else IF Hit Bottom Edge then&lt;/span&gt;
            y_Direction = Direction.Left
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;

        &lt;span class="rem"&gt;'Determine new coordinatied based upon direction&lt;/span&gt;
        &lt;span class="kwrd"&gt;If&lt;/span&gt; x_Direction = Direction.Down &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            TargetX = TargetX + TargetVelocityX
        &lt;span class="kwrd"&gt;ElseIf&lt;/span&gt; x_Direction = Direction.Up &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            TargetX = TargetX - TargetVelocityX
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;

        &lt;span class="kwrd"&gt;If&lt;/span&gt; y_Direction = Direction.Right &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            TargetY = TargetY + TargetVelocityY
        &lt;span class="kwrd"&gt;ElseIf&lt;/span&gt; y_Direction = Direction.Left &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            TargetY = TargetY - TargetVelocityY
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;The logic I have implemented is easy as it treats the X border detection and Y border detection as separate conditions and reverses the direction of travel when a collision is detected. There are many other ways of achieving the same logic but this is easy to understand.&lt;/p&gt;

&lt;p&gt;We now need to make a couple more additions to the Update and draw methods. The following line should be added to the “&lt;b&gt;Update” &lt;/b&gt;method calculate the new coordinate of the object based upon current coordinate, direction of travel, Velocity and screen size.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;DetectTargetEdgeBounce() 'Movement of Target&lt;/pre&gt;


&lt;p&gt;Now we have determined the new position of the target object by called the &lt;b&gt;&lt;i&gt;“DetectTargetEdgeBounce”&lt;/i&gt;&lt;/b&gt; method, we need to ensure we draw it at this calculated position. This is as simple as adding the following lines to the Draw Method&lt;/p&gt;

&lt;pre class="csharpcode"&gt;spriteBatch.Draw(target, &lt;span class="kwrd"&gt;New&lt;/span&gt; Vector2(TargetX - Target.Width / 2, TargetY - Target.Height / 2), Color.Green)&lt;/pre&gt;


&lt;p&gt;So we now have two objects on the application - one is controlled by the user finger and exhibits some physical properties such as acceleration/gravity/Friction and the other is a much simpler one which appears to have no friction and fixed velocity that is bouncing off the edges of the screen.&lt;/p&gt;

&lt;p&gt;We now have to implement a bit more logic to make it more game-like. This would involve some collision detection logic. We have a few logic items we want implement.&lt;/p&gt;

&lt;p&gt;1. When Yoyo and target collide and the yoyo has velocity we score points.&lt;/p&gt;

&lt;p&gt;2. The longer the collision duration the more points we score&lt;/p&gt;

&lt;p&gt;3. We cannot touch the target – otherwise we will lose all points.&lt;/p&gt;

&lt;p&gt;4. As we score more points the target becomes quicker.&lt;/p&gt;

&lt;p&gt;As a result of this simple logic conditions we will change colors/Images, update score and play sounds. All these are elements of a simple game.&lt;/p&gt;

&lt;p&gt;So let’s start with implementing some Collision Detection/Scoring code, as this is would appear to be the core component here. Each item has a single point representing it but obviously the image is bigger than that which is why we need to use both the Vector2d class for position and the Texture2d class for Size. As this seems to be something that we would want to keep together when referring to an game world “Object” , we can create a Type to represent this.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Structure&lt;/span&gt; WorldObject
    &lt;span class="kwrd"&gt;Sub&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt;(Pos &lt;span class="kwrd"&gt;As&lt;/span&gt; Vector2, Texture &lt;span class="kwrd"&gt;As&lt;/span&gt; Texture2D)
        _Position = Pos
        _Texture = Texture
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;
    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; _Texture &lt;span class="kwrd"&gt;As&lt;/span&gt; Texture2D
    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; _Position &lt;span class="kwrd"&gt;As&lt;/span&gt; Vector2
&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Structure&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;We will also want to create a method to detect if these two items have collided based upon their positions and sizes. The following is a simple method which will determine a collision between two “WorldObject” Items, returning true if they have collided.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; IsCollisonDetected(Item1 &lt;span class="kwrd"&gt;As&lt;/span&gt; WorldObject, Item2 &lt;span class="kwrd"&gt;As&lt;/span&gt; WorldObject) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt;
        &lt;span class="rem"&gt;'Determine Bounding Rectangle for Item1&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; Object_Item1 &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; Rectangle(&lt;span class="kwrd"&gt;CInt&lt;/span&gt;(Item1._Position.X), &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(Item1._Position.Y), Item1._Texture.Width, Item1._Texture.Height)
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; Object_Item2 &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; Rectangle(&lt;span class="kwrd"&gt;CInt&lt;/span&gt;(Item2._Position.X), &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(Item2._Position.Y), Item2._Texture.Width, Item2._Texture.Height)

        &lt;span class="kwrd"&gt;If&lt;/span&gt; Object_Item1.Intersects(Object_Item2) &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;True&lt;/span&gt;
        &lt;span class="kwrd"&gt;Else&lt;/span&gt;
            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;False&lt;/span&gt;
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Now we have to add a little more code to determine the call this and determine some actions when a collision occurs. The first is to add a score field, which we will initialize with a zero value.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Dim&lt;/span&gt; Score &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 0&lt;/pre&gt;


&lt;p&gt;Then in the &lt;b&gt;&lt;i&gt;“Update”&lt;/i&gt;&lt;/b&gt; method we will add the following code to call the IsCollisonDetected method for the various objects and determine if collisions have occurred between the Yoyo and Target objects and the Finger and Target objects.&lt;/p&gt;

&lt;p&gt;So following code this should address the game logic items 1,2 ,3 and 4 in our list of game logic items.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; YoyoObject &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; WorldObject(&lt;span class="kwrd"&gt;New&lt;/span&gt; Vector2(YoYo_Position_X, YoYo_Position_Y), YoYo)
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; TargetObject &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; WorldObject(&lt;span class="kwrd"&gt;New&lt;/span&gt; Vector2(TargetX, TargetY), YoYo)
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; FingerObject &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; WorldObject(&lt;span class="kwrd"&gt;New&lt;/span&gt; Vector2(fingerPosition_X, fingerPosition_Y), YoYo)
        &lt;span class="kwrd"&gt;If&lt;/span&gt; IsCollisonDetected(FingerObject, YoyoObject) &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            Score = 0        
        &lt;span class="kwrd"&gt;Else&lt;/span&gt;
            &lt;span class="rem"&gt;'Collision Detects &lt;/span&gt;
            &lt;span class="kwrd"&gt;If&lt;/span&gt; IsCollisonDetected(TargetObject, YoyoObject) &lt;span class="kwrd"&gt;Then&lt;/span&gt;
                &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(YoYo_VelocityX) &amp;lt;&amp;gt; 0 &lt;span class="kwrd"&gt;OrElse&lt;/span&gt; &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(YoYo_VelocityX) &amp;lt;&amp;gt; 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt; Score = Score + 1                
                CollisionSound.Play(1, 0, 0)
            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;

        Text = &lt;span class="str"&gt;&amp;quot;YoYo Attack&amp;quot;&lt;/span&gt; &amp;amp; vbLf &amp;amp; &lt;span class="str"&gt;&amp;quot;by Spotty&amp;quot;&lt;/span&gt; &amp;amp; vbCrLf &amp;amp; &lt;span class="str"&gt;&amp;quot;Score:&amp;quot;&lt;/span&gt; &amp;amp; Score.ToString &amp;amp; vbCrLf &amp;amp; &lt;span class="str"&gt;&amp;quot;Time Remaining:&amp;quot;&lt;/span&gt; &amp;amp; CalculateTimeRemaining()

        UpdateTargetSpeed(Score)&lt;/pre&gt;


&lt;p&gt;We don’t have an UpdateTargetSpeed method so will use the GFU to generate a method and adding the following code within the method&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Sub&lt;/span&gt; UpdateTargetspeed(Score &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;)
        &lt;span class="rem"&gt;'Update Speed depending upon score&lt;/span&gt;
        &lt;span class="kwrd"&gt;Select&lt;/span&gt; &lt;span class="kwrd"&gt;Case&lt;/span&gt; Score
            &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="kwrd"&gt;Is&lt;/span&gt; &amp;lt; 10
                TargetVelocityX = 10
                TargetVelocityY = 10
            &lt;span class="kwrd"&gt;Case&lt;/span&gt; 11 &lt;span class="kwrd"&gt;To&lt;/span&gt; 20
                TargetVelocityX = 12
                TargetVelocityY = 12
            &lt;span class="kwrd"&gt;Case&lt;/span&gt; 21 &lt;span class="kwrd"&gt;To&lt;/span&gt; 30
                TargetVelocityX = 14
                TargetVelocityY = 14
            &lt;span class="kwrd"&gt;Case&lt;/span&gt; 31 &lt;span class="kwrd"&gt;To&lt;/span&gt; 50
                TargetVelocityX = 15
                TargetVelocityY = 15
            &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="kwrd"&gt;Is&lt;/span&gt; &amp;gt; 51
                TargetVelocityX = 20
                TargetVelocityY = 20
            &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="kwrd"&gt;Else&lt;/span&gt;
                TargetVelocityX = 10
                TargetVelocityY = 10
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;So now we have a basic game – with some scoring, collision detection and functionality but we want to add a few more elements such as sounds. So let’s add a background sounds track and some collision detect sounds.&lt;/p&gt;

&lt;p&gt;This is simply a matter of adding the audio content to the Content Project. In our example we can add the following three wav files to our Content Project – ( BackGroundMusic.wav, Tada.wav and Ding.wav), just as we did for our graphics used in the application. For our sounds we will have a background music track and then add some sounds into the “&lt;b&gt;&lt;i&gt;Update”&lt;/i&gt;&lt;/b&gt; method when collisions are detected.&lt;/p&gt;

&lt;p&gt;We then simply need to add the following code in the &lt;b&gt;&lt;i&gt;“LoadContent”&lt;/i&gt;&lt;/b&gt; and &lt;b&gt;&lt;i&gt;“Update “&lt;/i&gt;&lt;/b&gt;Methods.&lt;/p&gt;

&lt;p&gt;The following lines need to be added into the appropriate methods&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Required Fields&lt;/b&gt;&lt;/p&gt;

&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; BgSound &lt;span class="kwrd"&gt;As&lt;/span&gt; SoundEffect
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; BGInstance &lt;span class="kwrd"&gt;As&lt;/span&gt; SoundEffectInstance
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; CollisionSound &lt;span class="kwrd"&gt;As&lt;/span&gt; SoundEffect
    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; TargetTouchSound &lt;span class="kwrd"&gt;As&lt;/span&gt; SoundEffect&lt;/pre&gt;


&lt;p&gt;&lt;b&gt;“LoadContent” Method&lt;/b&gt;&lt;/p&gt;

&lt;pre class="csharpcode"&gt;    CollisionSound = Content.Load(Of SoundEffect)(&lt;span class="str"&gt;&amp;quot;Tada&amp;quot;&lt;/span&gt;)
    TargetTouchSound = Content.Load(Of SoundEffect)(&lt;span class="str"&gt;&amp;quot;Ding&amp;quot;&lt;/span&gt;)
    BgSound = Content.Load(Of SoundEffect)(&lt;span class="str"&gt;&amp;quot;BackgroundMusic&amp;quot;&lt;/span&gt;)

    BGInstance = BgSound.CreateInstance
    BGInstance.IsLooped = &lt;span class="kwrd"&gt;True&lt;/span&gt;
    BGInstance.Volume = 0.5 &lt;span class="rem"&gt;'half Volume&lt;/span&gt;
    BGInstance.Play()&lt;/pre&gt;


&lt;p&gt;&lt;b&gt;“Update” Method (Full Method Shown with additional lines enlarged)&lt;/b&gt;&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Update(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; gameTime &lt;span class="kwrd"&gt;As&lt;/span&gt; GameTime)
        &lt;span class="rem"&gt;' Allows the game to exit&lt;/span&gt;
        &lt;span class="kwrd"&gt;If&lt;/span&gt; GamePad.GetState(PlayerIndex.One).Buttons.Back = ButtonState.Pressed &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            &lt;span class="kwrd"&gt;Me&lt;/span&gt;.[&lt;span class="kwrd"&gt;Exit&lt;/span&gt;]()
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;

        &lt;span class="rem"&gt;'get the state of the touch panel&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; curTouches &lt;span class="kwrd"&gt;As&lt;/span&gt; TouchCollection = TouchPanel.GetState()

        &lt;span class="rem"&gt;' Process touch locations&lt;/span&gt;
        &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; location &lt;span class="kwrd"&gt;As&lt;/span&gt; TouchLocation &lt;span class="kwrd"&gt;In&lt;/span&gt; curTouches
            &lt;span class="kwrd"&gt;Select&lt;/span&gt; &lt;span class="kwrd"&gt;Case&lt;/span&gt; location.State
                &lt;span class="kwrd"&gt;Case&lt;/span&gt; TouchLocationState.Pressed
                    fingerPosition_X = location.Position.X
                    fingerPosition_Y = location.Position.Y
                    &lt;span class="kwrd"&gt;Exit&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;
                &lt;span class="kwrd"&gt;Case&lt;/span&gt; TouchLocationState.Released
                    &lt;span class="rem"&gt;'Don't care about released state in this demo&lt;/span&gt;
                    &lt;span class="kwrd"&gt;Exit&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;
                &lt;span class="kwrd"&gt;Case&lt;/span&gt; TouchLocationState.Moved
                    fingerPosition_X = location.Position.X
                    fingerPosition_Y = location.Position.Y
                    &lt;span class="kwrd"&gt;Exit&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;
            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;
        &lt;span class="kwrd"&gt;Next&lt;/span&gt;

        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; ax &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = (fingerPosition_X - YoYo_Position_X) * spring
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; ay &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Single&lt;/span&gt; = (fingerPosition_Y - YoYo_Position_Y) * spring

        &lt;span class="rem"&gt;'Calculate Yoyo velocity based upon Finger acceleration, gavity and friction coefficients&lt;/span&gt;
        YoYo_VelocityY += ay
        YoYo_VelocityY += gravity * accelY
        YoYo_VelocityY *= friction

        YoYo_VelocityX += ax
        YoYo_VelocityX += -gravity * accelX
        YoYo_VelocityX *= friction


        &lt;span class="rem"&gt;'Calculate Yoyo Position based upon velocity&lt;/span&gt;
        YoYo_Position_X += YoYo_VelocityX
        YoYo_Position_Y += YoYo_VelocityY

        DetectTargetEdgeBounce() &lt;span class="rem"&gt;'Movement of Target&lt;/span&gt;


        &lt;span class="rem"&gt;'Detect Collisions&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; YoyoObject &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; WorldObject(&lt;span class="kwrd"&gt;New&lt;/span&gt; Vector2(YoYo_Position_X, YoYo_Position_Y), YoYo)
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; TargetObject &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; WorldObject(&lt;span class="kwrd"&gt;New&lt;/span&gt; Vector2(TargetX, TargetY), YoYo)


        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; FingerObject &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; WorldObject(&lt;span class="kwrd"&gt;New&lt;/span&gt; Vector2(fingerPosition_X, fingerPosition_Y), YoYo)
        &lt;span class="kwrd"&gt;If&lt;/span&gt; IsCollisonDetected(FingerObject, YoyoObject) &lt;span class="kwrd"&gt;Then&lt;/span&gt;
&lt;strong&gt;&lt;font size="3"&gt;         TargetTouchSound.Play(1, 0, 0)
&lt;/font&gt;&lt;/strong&gt;            Score = 0        
        &lt;span class="kwrd"&gt;Else&lt;/span&gt;
            &lt;span class="kwrd"&gt;If&lt;/span&gt; IsCollisonDetected(TargetObject, YoyoObject) &lt;span class="kwrd"&gt;Then&lt;/span&gt;
                &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(YoYo_VelocityX) &amp;lt;&amp;gt; 0 &lt;span class="kwrd"&gt;OrElse&lt;/span&gt; &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(YoYo_VelocityX) &amp;lt;&amp;gt; 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt; Score = Score + 1                
&lt;strong&gt;&lt;font size="3"&gt;                CollisionSound.Play(1, 0, 0)&lt;/font&gt;&lt;/strong&gt;
            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;

        Text = &lt;span class="str"&gt;&amp;quot;YoYo Attack&amp;quot;&lt;/span&gt; &amp;amp; vbLf &amp;amp; &lt;span class="str"&gt;&amp;quot;by Spotty&amp;quot;&lt;/span&gt; &amp;amp; vbCrLf &amp;amp; &lt;span class="str"&gt;&amp;quot;Score:&amp;quot;&lt;/span&gt; &amp;amp; Score.ToString &amp;amp; vbCrLf &amp;amp; &lt;span class="str"&gt;&amp;quot;Time Remaining:&amp;quot;&lt;/span&gt; &amp;amp; CalculateTimeRemaining()
        UpdateTargetspeed(Score)

        &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Update(gameTime)
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;h3&gt;What’s not there in XNA / Phone applications?&lt;/h3&gt;

&lt;p&gt;We now have a basic game, with sound working on the phone using XNA. For those developers who may have tried experimenting a little with the basic code and using some of the other VB functions, you may have noticed that some expected items are found and others not. XNA uses a feature of the VB Compiler known as VB Core which embeds a reduced version of the Visual Basic runtime into the generated assembly. As this is a new platform for VB, many of these older legacy runtime functions contained in the desktop version of Microsoft.VisualBasic.dll do not exist in the VBCore runtime. Examples of this include the left, mid, right functions. This is intentional and provides VB support or the platform without unnecessarily bloating the assembly size with duplicate of existing framework functionality. So many of the types/functions etc. contained with the desktop versions Microsoft.VisualBasic.dll will not be present.&lt;/p&gt;

&lt;p&gt;However, any as with any project types that utilizes the VB Core functionality, if you absolutely cannot live without some missing functionality you can add it simply by creating a method with the same name. Tools such as Reflector enable you to dissemble the code in Microsoft.VisualBasic.dll and see a source code equivalent for that function. Some functionality is not supported on new platforms using VBCore which also may be why they are not implemented – (a good example being Late Binding).&lt;/p&gt;

&lt;h3&gt;&amp;#160;&lt;/h3&gt;

&lt;h3&gt;Other Changes&lt;/h3&gt;

&lt;p&gt;All phone projects now utilize the VB Core functionality to embed the required VB runtime functionality in your assemblies. This means that when you build your application (whether Silverlight or XNA) that there will no longer be a separate Microsoft.VisualBasic.dll that needs to be deployed as was the case with Silverlight Phone applications developed prior to the Mango Tools Update. To see this you can use a tool like ILDASM or Reflector to look at the assembly and you will now notice that the assembly now contains a Microsoft.VisualBasic namespace containing the reduced runtime.&lt;/p&gt;

&lt;p&gt;To upgrade your existing windows phone 7 Silverlight projects to utilize this new feature, add the following line project file to &lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;i&gt;&amp;lt;VBRuntime&amp;gt;Embed&amp;lt;/VBRuntime&amp;gt; &lt;/i&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Also remove any reference to Microsoft.VisualBasic.dll from the .VBProj file.&lt;/p&gt;

&lt;h3&gt;&amp;#160;&lt;/h3&gt;

&lt;h3&gt;Summary&lt;/h3&gt;

&lt;p&gt;XNA now fully supports Visual Basic on all platforms (Xbox360/Windows and Windows Phone 7). After completing this walkthrough VB developers should have an idea on how to write XNA applications. Although the model for developing game applications is different from that used by most VB Developers it is easy to get started. With the platform already well developed there are a huge number of resources available which VB Developers can use. VB developers can join the party and start creating to great applications using XNA.&lt;/p&gt;

&lt;h3&gt;&amp;#160;&lt;/h3&gt;

&lt;h3&gt;Useful Web Links&lt;/h3&gt;

&lt;p&gt;· Windows Phone SDK Beta&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt; Download Center: &lt;a href="http://go.microsoft.com/?linkid=9772716"&gt;http://go.microsoft.com/?linkid=9772716&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;Go live license– &lt;a href="http://go.microsoft.com/?linkid=9772717"&gt;http://go.microsoft.com/?linkid=9772717&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;· WPDT 7.1 Documentation &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt; Windows Phone Developer Tools 7.1 Release Notes: &lt;a href="http://go.microsoft.com/fwlink/?LinkId=215231"&gt;http://go.microsoft.com/fwlink/?LinkId=215231&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt; What’s New in Windows Phone Developer Tools: &lt;a href="http://go.microsoft.com/fwlink/?LinkID=190409"&gt;http://go.microsoft.com/fwlink/?LinkID=190409&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt; Code Samples for Windows Phone: &lt;a href="http://go.microsoft.com/fwlink/?LinkId=219604"&gt;http://go.microsoft.com/fwlink/?LinkId=219604&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;· App Hub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; Announcement: &lt;a href="http://create.msdn.com/en-US/news/WPDT_7.1_Beta"&gt;http://create.msdn.com/en-US/news/WPDT_7.1_Beta&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; Download page: &lt;a href="http://create.msdn.com/en-us/resources/downloads"&gt;http://create.msdn.com/en-us/resources/downloads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; Getting Started: &lt;a href="http://create.msdn.com/en-us/home/getting_started"&gt;http://create.msdn.com/en-us/home/getting_started&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;· Blogs: &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;#160;&lt;a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/05/24/developer-news-beta-mango-tools-available-today.aspx"&gt;http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/05/24/developer-news-beta-mango-tools-available-today.aspx&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/b/lucian/"&gt;http://blogs.msdn.com/b/lucian/&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&amp;#160;&lt;a href="http://windowsteamblog.com/windows_phone/b/wpdev/"&gt;http://windowsteamblog.com/windows_phone/b/wpdev/&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&amp;#160;&lt;a href="http://windowsteamblog.com/windows_phone/b/windowsphone/"&gt;http://windowsteamblog.com/windows_phone/b/windowsphone/&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Spotty Bowles&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10168398" width="1" height="1"&gt;</description></item><item><title>Happy 20th Birthday Visual Basic!</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/05/20/happy-20th-birthday-visual-basic.aspx</link><pubDate>Fri, 20 May 2011 23:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10166872</guid><dc:creator>VBTeam</dc:creator><slash:comments>138</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10166872</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/05/20/happy-20th-birthday-visual-basic.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;Twenty years ago&lt;/strong&gt;, May 20&lt;sup&gt;th&lt;/sup&gt;, 1991 at Windows World, in Atlanta, Microsoft founder &lt;a href="http://www.youtube.com/watch?v=bMz2Mgs7UU0&amp;amp;feature=related"&gt;Bill Gates demoed Visual Basic 1.0&lt;/a&gt;. Twenty years later, the &lt;a href="http://blogs.msdn.com/b/vbteam/archive/2010/04/15/visual-basic-2010-is-here.aspx"&gt;10&lt;sup&gt;th&lt;/sup&gt; version &lt;/a&gt;of this latest in an unbroken line of Microsoft BASIC languages stretching back to Microsoft&amp;rsquo;s founding is still going strong. When you look back over the history of a tool that&amp;rsquo;s been around that long you start to see some familiar experiences from Wetware&amp;nbsp;products (commonly called children :P&amp;nbsp;): The cute and cuddly days of its youth, in the 16-bit era; the awkward teen years and the transition to .NET; &lt;a href="http://blogs.msdn.com/b/scottwil/archive/2010/03/09/vb-and-c-coevolution.aspx"&gt;sibling rivalry &lt;/a&gt;with the new baby (C#); and finally getting those braces &amp;hellip; er, &lt;a href="http://www.unemployedunderscores.com/"&gt;underscores&lt;/a&gt; off :). And now, finally out of those turbulent teen years, a matured language looks to the future. Visual Basic has always had a personality for humanizing programming and with &lt;a href="http://msdn.microsoft.com/en-us/vstudio/gg316360"&gt;Async&lt;/a&gt; methods in vNext it continues that tradition.&lt;/p&gt;
&lt;p&gt;You might ask after two-decades how VB can keep re-inventing itself to face modern and future challenges. The answer is quite literally that &amp;ndash; re-inventing itself. &amp;nbsp;OK, more accurately re-writing itself. The VB compiler is being &lt;a href="http://blogs.msdn.com/b/lisa/archive/2011/03/22/pdc10-future-directions-for-c-visual-basic-and-f.aspx"&gt;re-written from the ground up &lt;b&gt;in Visual Basic&lt;/b&gt;&lt;/a&gt; and its syntactic and semantic analysis services exposed through a managed API that exposes parse trees, expression binding, assembly production (and more) to enable a world of new scenarios including REPL, VB as a scripting language, and more. It&amp;rsquo;s all very exciting! As a VB user for &amp;hellip; half my lifetime, now, it&amp;rsquo;s great to look back and be proud of where VB has been, happy with where it is, and especially excited about where it&amp;rsquo;s going!&lt;/p&gt;
&lt;p&gt;I have many fond memories of Visual Basic and likewise great aspirations for its future and I know millions of customers out there have the same. Please, &lt;strong&gt;share your stories&lt;/strong&gt; (and hopes), and&lt;strong&gt; join me in wishing our &lt;i&gt;old&lt;/i&gt; :P friend, VB, a Happy 20&lt;sup&gt;th&lt;/sup&gt; Birthday and many more!&lt;/strong&gt; :D&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Anthony D. Green&lt;/b&gt;&lt;br /&gt;Program Manager&lt;br /&gt;&lt;strong&gt;Visual Basic &lt;/strong&gt;&lt;em&gt;(code-name "Roslyn")&lt;/em&gt;&lt;strong&gt;&amp;nbsp;Compiler&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10166872" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Visual+Basic+History/">Visual Basic History</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/I_2700_m+A+VB_2100_/">I'm A VB!</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Anthony+D-+Green/">Anthony D. Green</category></item><item><title>Simultaneous Async Tasks (Alan Berman)</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/05/10/simultaneous-async-tasks.aspx</link><pubDate>Tue, 10 May 2011 16:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10161606</guid><dc:creator>VBTeam</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10161606</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/05/10/simultaneous-async-tasks.aspx#comments</comments><description>&lt;p&gt;The new Async feature in the &lt;a href="http://msdn.microsoft.com/en-US/vstudio/async"&gt;Visual Studio Async CTP (SP1 Refresh)&lt;/a&gt; provides an elegantly simple technique to make code asynchronous.&lt;/p&gt;
&lt;p&gt;Our writing team uses an internal app that would benefit from asynchronous calls.&amp;nbsp; For each URL contained in the MSDN documentation that we publish, the app lists the title from the link, and the title parsed from HTML in the downloaded web page.&amp;nbsp; We use the app to verify that URL links are valid.&lt;/p&gt;
&lt;p&gt;The following example is a very simplified version of the relevant code, which does synchronous reads of multiple web pages.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;Imports System.Net &lt;br /&gt;Imports System.Threading.Tasks&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;Module Module1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sub Main() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim urls As List(Of String) = BuildURLs()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim startTime = Date.Now&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetWebPagesSynchronous(urls) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'GetWebPagesAsync(urls).Wait()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim seconds = (Date.Now - startTime).TotalSeconds&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Ended in " &amp;amp; seconds &amp;amp; " seconds") &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadKey() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub GetWebPagesSynchronous(urls As List(Of String)) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim client As New WebClient&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each url In urls &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim text = client.DownloadString(New Uri(url)) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(GetTitle(text)) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Function GetTitle(input As String) As String &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Const startText = "&amp;lt;title&amp;gt;" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Const endText = "&amp;lt;/title&amp;gt;"&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim startIndex = input.IndexOf(startText) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If startIndex = -1 Then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return "not found" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; startIndex += startText.Length &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim endIndex = input.IndexOf(endText, startIndex) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim result = input.Substring(startIndex, endIndex - startIndex) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return result.Trim() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Function BuildURLs() As List(Of String) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return New List(Of String) From &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&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;a href="http://www.microsoft.com&amp;quot;"&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;http://www.microsoft.com"&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;, &lt;br /&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;a href="http://msdn.com&amp;quot;"&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;http://msdn.com"&lt;/span&gt;&lt;/a&gt; &lt;br /&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function &lt;br /&gt;End Module &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The following method transforms the above example to use the Async feature.&amp;nbsp; Starting with the above example, change Main to call GetWebPagesAsync(urls).Wait() instead of GetWebPagesSynchronous(urls).&lt;/p&gt;
&lt;p&gt;In your project, add a reference to AsyncCtpLibrary.dll, which is in My Documents\Microsoft Visual Studio Async CTP\Samples.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;Private Async Function GetWebPagesAsync(urls As List(Of String)) As Task&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim theTasks As New List(Of Task(Of String))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each url In urls &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim client As New WebClient()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim theTask As Task(Of String) = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; client.DownloadStringTaskAsync(New Uri(url))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; theTasks.Add(theTask) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Wait until the tasks are done.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' The Await statement causes execution to immediately return &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' to the calling method, returning a new task. When all of the &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' tasks complete, execution continues within this method.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' TaskEx.WhenAll would normally be Task.WhenAll. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' It's TaskEx.WhenAll in the CTP only. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Await TaskEx.WhenAll(theTasks)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each theTask In theTasks &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(GetTitle(theTask.Result)) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next &lt;br /&gt;End Function&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For each URL in the list, the DownloadStringTaskAsync method returns a Task object that is then stored in a generic List.&amp;nbsp; The code waits for completion of all of the tasks by using an Await statement and the Task.WhenAll method. The WhenAll method accepts an object that implements &lt;a href="http://msdn.microsoft.com/en-us/library/9eekhta0.aspx"&gt;IEnumerable(T)&lt;/a&gt;, including &lt;a href="http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx"&gt;List(T)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The code spins up all of these tasks without worrying about running out of resources from a language perspective.&amp;nbsp; I was inclined to write code to carefully throttle the calls to conserve resources, but was told that is unnecessary.&lt;/p&gt;
&lt;p&gt;On computer running Windows 7, at a randomly convenient time, I ran the above console apps five times synchronously and five times asynchronously, with 20 URLs and 100 URLs. For 20 URLs, the average time to complete was 7.2 seconds for synchronous and 3.2 seconds for Async.&amp;nbsp; For 100 URLs, the average was 39.5 seconds for synchronous, and 28.5 seconds for Async.&amp;nbsp; With 100 URLs on another day, the average was 39.9 seconds for synchronous, and 13.5 seconds for Async.&amp;nbsp; The results are specific to the conditions, and your results will vary.&lt;/p&gt;
&lt;p&gt;Note that the speedup in the Async example is almost entirely from the parallel processing, not the asynchronous processing.&amp;nbsp; The advantages of asynchrony are that it does not tie up multiple threads, and that it does not tie up the user interface thread.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cancellation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The following example adds &lt;a href="http://msdn.microsoft.com/en-us/library/dd997364.aspx"&gt;cancellation&lt;/a&gt;.&amp;nbsp; To actually cancel the operation, modify the code to change cancelIt = False to cancelIt = True, and change the Thread.Sleep call to specify the milliseconds before cancellation.&lt;/p&gt;
&lt;p&gt;This code creates a &lt;a href="http://msdn.microsoft.com/en-us/library/system.threading.cancellationtokensource.aspx"&gt;CancellationTokenSource&lt;/a&gt; that contains a &lt;a href="http://msdn.microsoft.com/en-us/library/system.threading.cancellationtoken.aspx"&gt;CancellationToken&lt;/a&gt;. The same cancellation token is passed to every call to DownloadStringTaskAsync. The CancellationTokenSource is also used to invoke cancellation.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;Imports System.Net &lt;br /&gt;Imports System.Threading &lt;br /&gt;Imports System.Threading.Tasks&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;Module Module1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sub Main() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim urls As List(Of String) = BuildURLs()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim startTime = Date.Now&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessAsyncCancellable(urls)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim seconds = (Date.Now - startTime).TotalSeconds&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Ended in " &amp;amp; seconds &amp;amp; " seconds") &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadKey() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub ProcessAsyncCancellable(urls As List(Of String)) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim cts As New CancellationTokenSource()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cts.Token.Register(Sub() Console.WriteLine("cancelling"))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim theTask As Task = GetWebPagesAsync(urls, cts)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' To cancel midstream, set cancelIt to True. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim cancelIt = False &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If cancelIt Then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Set the milliseconds before cancelling. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread.Sleep(2000) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cts.Cancel() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; theTask.Wait() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Async Function GetWebPagesAsync( _ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; urls As List(Of String), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cts As CancellationTokenSource) As Task&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim theTasks As New List(Of Task(Of String))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each webAddress In urls &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim client As New WebClient()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim theTask As Task(Of String) = &lt;br /&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; client.DownloadStringTaskAsync(New Uri(webAddress), cts.Token)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; theTasks.Add(theTask) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Await TaskEx.WhenAll(theTasks)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each theTask In theTasks &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(GetTitle(theTask.Result)) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Function BuildURLs() As List(Of String) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return New List(Of String) From &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&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;a href="http://www.microsoft.com&amp;quot;"&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;http://www.microsoft.com"&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;, &lt;br /&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;a href="http://msdn.com&amp;quot;"&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;http://msdn.com"&lt;/span&gt;&lt;/a&gt; &lt;br /&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Function GetTitle(input As String) As String &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Const startText = "&amp;lt;title&amp;gt;" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Const endText = "&amp;lt;/title&amp;gt;"&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim startIndex = input.IndexOf(startText) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If startIndex = -1 Then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return "not found" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; startIndex += startText.Length &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim endIndex = input.IndexOf(endText, startIndex) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim result = input.Substring(startIndex, endIndex - startIndex) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return result.Trim() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function &lt;br /&gt;End Module &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The above example displays all of the titles only when all of the tasks are complete. If you want to see the results before cancellation, you can replace GetWebPagesAsync with the following:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;Private Async Function GetWebPagesAsync( _ &lt;br /&gt;urls As List(Of String), &lt;br /&gt;cts As CancellationTokenSource) As Task&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each webAddress In urls &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim client As New WebClient()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim theTask As Task(Of String) = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; client.DownloadStringTaskAsync(New Uri(webAddress), cts.Token)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; font-size: small;" face="Consolas" size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Await theTask &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(GetTitle(theTask.Result)) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next &lt;br /&gt;End Function&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks to Anthony Green, Alex Turner, Lucian Wischik, Mick Alberts, and Thomas Petchel for providing tech review.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resources&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-US/vstudio/async"&gt;Details and Download Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/async/threads"&gt;Forum for Feedback and Questions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://connect.microsoft.com/"&gt;Microsoft Connect for Bugs and Suggestions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/vbteam/archive/2011/04/13/async-feature-control-flow.aspx"&gt;Async Feature Control Flow blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10161606" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/async/">async</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Visual+Basic/">Visual Basic</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/VB/">VB</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/asynchronous+programming/">asynchronous programming</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/task+cancellation/">task cancellation</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/parallel+programming/">parallel programming</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/await/">await</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Alan+Berman/">Alan Berman</category></item><item><title>The Temple of VB (Matt Gertz)</title><link>http://blogs.msdn.com/b/vbteam/archive/2011/04/29/the-temple-of-vb-matt-gertz.aspx</link><pubDate>Fri, 29 Apr 2011 23:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10159669</guid><dc:creator>VBTeam</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vbteam/rsscomments.aspx?WeblogPostID=10159669</wfw:commentRss><comments>http://blogs.msdn.com/b/vbteam/archive/2011/04/29/the-temple-of-vb-matt-gertz.aspx#comments</comments><description>&lt;p&gt;Hi, all!&lt;/p&gt;
&lt;p&gt;It's been a while since I've posted to this blog, and a lot has happened in my world since then.&amp;nbsp; Though I've been pretty busy on our engineering systems team, I took a little time off last summer to do some traveling and, more importantly,&amp;nbsp;some long overdue writing.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Although I'd always enjoyed writing the "here's how you build this application" blog posts, I always felt that I could do a bit more with them, and so I took my favorite posts, cleaned them up, added a lot more text and pictures, and turned them into a Kindle e-book.&amp;nbsp; The posts I've included and expanded on are: the Euchre game, the paint-by-numbers editor, the maze game, the gerbil game, the DNA-to-protein translator, and the encoder.&amp;nbsp; (Since these posts were all written before VB2010 shipped, I've updated a couple of the walkthroughs to cover functionality that's been&amp;nbsp;improved in VB2010 over earlier versions.)&amp;nbsp; &lt;/p&gt;
&lt;p&gt;You can find this book on Amazon now:&amp;nbsp; &lt;a href="http://blogs.msdn.com/controlpanel/blogs/posteditor.aspx/&amp;quot;The Temple of VB:&amp;amp;nbsp; Six real-life applications to bring your Visual Basic .NET skills up-to-speed&amp;quot; by Matthew Gertz"&gt;"The Temple of VB:&amp;nbsp; Six real-life applications to bring your Visual Basic .NET skills up-to-speed" by Matthew Gertz&lt;/a&gt;.&amp;nbsp; And, of course, the source for the applications themselves is freely available at my &lt;a href="http://blogs.msdn.com/controlpanel/blogs/posteditor.aspx/Temple of VB"&gt;Temple of VB&lt;/a&gt; site as usual.&amp;nbsp; If you have a Kindle (or the Kindle for PC app) and are interested in a set of on-hand walkthroughs covering various coding areas (resources, printing, XML use, game logic, and so on), I invite you to take a look!&lt;/p&gt;
&lt;p&gt;Addendum:&amp;nbsp; A couple folks have reported that they can't get the links to work.&amp;nbsp; Here are the links directly:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.amazon.com/dp/B004YE78FS"&gt;http://www.amazon.com/dp/B004YE78FS&lt;/a&gt;&amp;nbsp;(for the book)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://archive.msdn.microsoft.com/templeofvb"&gt;http://archive.msdn.microsoft.com/templeofvb&lt;/a&gt; (for the source code)&lt;/p&gt;
&lt;p&gt;--Matt Gertz--*&lt;/p&gt;
&lt;p&gt;P.S.&amp;nbsp; If you have a smaller Kindle, like a Kindle 3, then I strongly recommend reading the book in landscape mode w/smaller font&amp;nbsp;-- in general, lines of code look better that way, since they can wrap inelegantly in portrait mode on smaller screens.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10159669" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/VB_5F00_Express/">VB_Express</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/Matt+Gertz/">Matt Gertz</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/VB2005/">VB2005</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/VB2008/">VB2008</category><category domain="http://blogs.msdn.com/b/vbteam/archive/tags/VB2010/">VB2010</category></item></channel></rss>