{"id":353,"date":"2012-02-28T18:18:00","date_gmt":"2012-02-28T18:18:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/vbteam\/2012\/02\/28\/visual-basic-11-beta-available-for-download\/"},"modified":"2024-07-05T12:38:57","modified_gmt":"2024-07-05T19:38:57","slug":"visual-basic-11-beta-available-for-download","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/vbteam\/visual-basic-11-beta-available-for-download\/","title":{"rendered":"Visual Basic 11 Beta Available for Download!"},"content":{"rendered":"<\/p>\n<p class=\"MsoNormal\">As you may have read in <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\">Jason&rsquo;s announcement<\/a>, today we announced that Visual Studio 11 Beta is now available for <a href=\"http:\/\/go.microsoft.com\/fwlink\/p\/?LinkId=240162\">download<\/a>.&nbsp; This is a <b><i>huge<\/i><\/b><i> <\/i>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 <i>Iterators<\/i> feature.&nbsp; And in the true spirit of VB, you&rsquo;ll see a ton of other improvements that will make you more productive every day.<\/p>\n<p class=\"MsoNormal\">&nbsp;<\/p>\n<p class=\"MsoNoSpacing\"><b>Async<br \/><\/b>As the world moves to mobile phones and tablets, the demand for responsiveness in today&rsquo;s applications is higher than ever.&nbsp; Things like database queries, network requests, and disk access all have potential to block the UI and leave users frustrated.&nbsp; While user expectations continue to climb, the tool\/platform support for making asynchronous programming easy hasn&rsquo;t kept pace, until now.&nbsp; With the new Async\/Await keywords, VB11 makes asynchronous programming really simple:&nbsp;<\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Public<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Async<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Function<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> GetStorageFile() <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">Task<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">(<\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Of<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> Windows.Storage.<\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">StorageFile<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Dim<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> packageFolder = Windows.ApplicationModel.<\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">Package<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">.Current.InstalledLocation<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"><span>&nbsp; &nbsp; &nbsp; &nbsp; TextBlock1.Text =&nbsp;<\/span><span>&#8220;Retrieving File&#8230;&#8221;<\/span><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"><span><\/span><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Dim<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> packagedFile = <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Await<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> packageFolder.GetFileAsync(<\/span><span style=\"font-family: Consolas;background: white;color: maroon;font-size: 9.5pt\">&#8220;FileLocatedInPackage&#8221;<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<\/span><span style=\"font-family: Consolas;background: white;color: #6464b9;font-size: 9.5pt\">..<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">.<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Return<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> packagedFile<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">End<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Function<\/span><\/p>\n<p class=\"MsoNoSpacing\">&nbsp;<\/p>\n<p class=\"MsoNoSpacing\">The Await keyword kicks off an asynchronous request without blocking the UI.&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.&nbsp; Once that work completes, the method <i>resumes<\/i> and the variable packagedFile is assigned to.&nbsp;<\/p>\n<p class=\"MsoNoSpacing\">Be sure to check out the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/vstudio\/async\">Asynchronous Programming Developer Center<\/a> for articles, videos, and samples on how to use Async.&nbsp; This <a href=\"http:\/\/blogs.msdn.com\/b\/vbteam\/archive\/2010\/10\/28\/async.aspx\">blog post<\/a> has a good conceptual explanation of async, and <a href=\"http:\/\/blogs.msdn.com\/b\/lucian\/\">Lucian&rsquo;s blog<\/a> has a ton of great resources for learning the feature.&nbsp;<\/p>\n<p class=\"MsoNoSpacing\">VB11 also includes full async debugging support.&nbsp; F10-Step-Over (or Shift+F8 on VB Profile) now does what you&rsquo;d expect.&nbsp; If you&rsquo;re still on the function-declaration-line then it steps out to the caller. But often (e.g. if you&rsquo;ve gone past an await) then the concept of &ldquo;caller&rdquo; doesn&rsquo;t even exist. So, for consistency, if you&rsquo;re anywhere outside the declaration line then Shift+F11 (Ctrl+Shift+F8 on VB Profile) will step out to someone who&rsquo;s awaiting you.&nbsp;<\/p>\n<p class=\"MsoNoSpacing\">The other thing we&rsquo;ve added is async unit-testing support in MSTest.&nbsp; xUnit now supports this as well.<\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; &lt;<span style=\"color: #2b91af\">TestMethod<\/span>&gt;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; <span style=\"color: blue\">Async<\/span> <span style=\"color: blue\">Function<\/span> Test1() <span style=\"color: blue\">As<\/span> <span style=\"color: #2b91af\">Task<\/span><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style=\"color: blue\">Dim<\/span> x = <span style=\"color: blue\">Await<\/span> Engine.GetSevenAsync() <\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style=\"color: #2b91af\">Assert<\/span>.AreEqual(x, 6) <\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; <span style=\"color: blue\">End<\/span> <span style=\"color: blue\">Function<\/span><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; &lt;Xunit.<span style=\"color: #2b91af\">Fact<\/span>&gt;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; <span style=\"color: blue\">Async<\/span> <span style=\"color: blue\">Function<\/span> Test2() <span style=\"color: blue\">As<\/span> <span style=\"color: #2b91af\">Task<\/span><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style=\"color: blue\">Dim<\/span> x = <span style=\"color: blue\">Await<\/span> Engine.GetSevenAsync()<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Xunit.<span style=\"color: #2b91af\">Assert<\/span>.Equal(x, 6)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; <span style=\"color: blue\">End<\/span> <span style=\"color: blue\">Function<\/span><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\"><\/span>&nbsp;<\/p>\n<p class=\"MsoNoSpacing\"><b>Iterators<br \/><\/b><a href=\"http:\/\/msdn.microsoft.com\/en-us\/vstudio\/gg497937\">Iterators<\/a> are a new feature in VB11 that make it easier to walk through collections such as lists and arrays.&nbsp; Each element is returned to the calling method immediately, before the next element in the sequence is accessed.&nbsp;<\/p>\n<p class=\"MsoNoSpacing\">&nbsp;In addition to working with collections, you can use iterators to write your own custom LINQ query operators.&nbsp; For instance, the following example prints out only the even numbers in the array:&nbsp;<\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Module<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">Module1<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Sub<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> Main()<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Dim<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> query = <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">From<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> n <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">In<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Where<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> n <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Mod<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> 2 = 0<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Select<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> n<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">For<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Each<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> item <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">In<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> query<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">Console<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">.WriteLine(item)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Next<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">Console<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">.ReadLine()<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">End<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Sub<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; &lt;System.Runtime.CompilerServices.<\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">Extension<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&gt;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Iterator<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Function<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> Where(source <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Integer<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">(), <\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; predicate <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">Func<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">(<\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Of<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Integer<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">, <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Boolean<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">IEnumerable<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">(<\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Of<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Integer<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">For<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Each<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> num <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">In<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> source<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">If<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> predicate(num) <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Then<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">Console<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">.WriteLine(<\/span><span style=\"font-family: Consolas;background: white;color: maroon;font-size: 9.5pt\">&#8220;Yielding &#8220;<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> &amp; num)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Yield<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> num<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">End<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">If<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Next<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">End<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Function<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">End<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Module<\/span><\/p>\n<p class=\"MsoNoSpacing\">&nbsp;<\/p>\n<p class=\"MsoNoSpacing\">Note the new <i>Iterator<\/i> and <i>Yield<\/i> keywords in the Where function.&nbsp; (The LINQ query binds to this Where extension method since it&rsquo;s a better match than the Where(Of T) operator defined in the standard query operators).<\/p>\n<p class=\"MsoNoSpacing\">&nbsp;<strong>VB also allows iterator lambdas!<\/strong>&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&rsquo;re effectively embedding <i>statements<\/i> inside embedded expressions now):<\/p>\n<p class=\"MsoNoSpacing\">&nbsp;<\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Dim<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> images =<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: #6464b9;font-size: 9.5pt\">&lt;<\/span><span style=\"font-family: Consolas;background: white;color: #844646;font-size: 9.5pt\">html<\/span><span style=\"font-family: Consolas;background: white;color: #6464b9;font-size: 9.5pt\">&gt;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: #555555;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: #6464b9;font-size: 9.5pt\">&lt;<\/span><span style=\"font-family: Consolas;background: white;color: #844646;font-size: 9.5pt\">body<\/span><span style=\"font-family: Consolas;background: white;color: #6464b9;font-size: 9.5pt\">&gt;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: #555555;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: yellow;color: #555555;font-size: 9.5pt\">&lt;%=<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Iterator<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Function<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">()<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">For<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Each<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> fn <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">In<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> IO.<\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">Directory<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">.EnumerateFiles(<\/span><span style=\"font-family: Consolas;background: white;color: maroon;font-size: 9.5pt\">&#8220;c:\\&#8221;<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">, <\/span><span style=\"font-family: Consolas;background: white;color: maroon;font-size: 9.5pt\">&#8220;*.jpg&#8221;<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Yield<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #6464b9;font-size: 9.5pt\">&lt;<\/span><span style=\"font-family: Consolas;background: white;color: #844646;font-size: 9.5pt\">img<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #b96464;font-size: 9.5pt\">src<\/span><span style=\"font-family: Consolas;background: white;color: #6464b9;font-size: 9.5pt\">=<\/span><span style=\"font-family: Consolas;background: yellow;color: #555555;font-size: 9.5pt\">&lt;%=<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> fn <\/span><span style=\"font-family: Consolas;background: yellow;color: #555555;font-size: 9.5pt\">%&gt;<\/span><span style=\"font-family: Consolas;background: white;color: #6464b9;font-size: 9.5pt\">&gt;&lt;\/<\/span><span style=\"font-family: Consolas;background: white;color: #844646;font-size: 9.5pt\">img<\/span><span style=\"font-family: Consolas;background: white;color: #6464b9;font-size: 9.5pt\">&gt;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Next<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">End<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Function<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">.Invoke() <\/span><span style=\"font-family: Consolas;background: yellow;color: #555555;font-size: 9.5pt\">%&gt;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: #555555;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: #6464b9;font-size: 9.5pt\">&lt;\/<\/span><span style=\"font-family: Consolas;background: white;color: #844646;font-size: 9.5pt\">body<\/span><span style=\"font-family: Consolas;background: white;color: #6464b9;font-size: 9.5pt\">&gt;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: #555555;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: #6464b9;font-size: 9.5pt\">&lt;\/<\/span><span style=\"font-family: Consolas;background: white;color: #844646;font-size: 9.5pt\">html<\/span><span style=\"font-family: Consolas;background: white;color: #6464b9;font-size: 9.5pt\">&gt;<\/span><\/p>\n<p class=\"MsoNoSpacing\"><b>&nbsp;<\/b><\/p>\n<p class=\"MsoNoSpacing\"><b>Namespace Global<br \/><\/b>VB has always had the <i>Namespace<\/i> and <i>Global<\/i> keywords, but now you can use them together!<\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;color: blue;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;color: blue;font-size: 9.5pt\">Namespace<\/span><span style=\"font-family: Consolas;font-size: 9.5pt\"> <span style=\"color: blue\">Global<\/span> <\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;color: blue;font-size: 9.5pt\">Namespace<\/span><span style=\"font-family: Consolas;font-size: 9.5pt\"> <span style=\"color: blue\">Global<\/span>.&lt;NamespaceName&gt;<\/span><\/p>\n<p class=\"MsoNoSpacing\">&nbsp;<\/p>\n<p class=\"MsoNoSpacing\">This gives you a lot more flexibility around which namespace your code ends up in, and is particularly useful for code-generation scenarios.&nbsp; For a full description of the feature, check out Lucian&rsquo;s excellent post <a href=\"http:\/\/blogs.msdn.com\/b\/vbteam\/archive\/2011\/09\/27\/announcement-namespace-global.aspx\">here<\/a>.&nbsp;<\/p>\n<p class=\"MsoNoSpacing\"><b>Optional Parameters in Overloaded Methods<br \/><\/b>Previously, overloads of a method were not permitted if the only difference between them was optional parameters, so the following code would be invalid:<\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; <span style=\"color: blue\">Sub<\/span> f(x <span style=\"color: blue\">As<\/span> <span style=\"color: blue\">Integer<\/span>)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; <span style=\"color: blue\">End<\/span> <span style=\"color: blue\">Sub<\/span><\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; <span style=\"color: blue\">Sub<\/span> f(x <span style=\"color: blue\">As<\/span> <span style=\"color: blue\">Integer<\/span>, <span style=\"color: blue\">Optional<\/span> y <span style=\"color: blue\">As<\/span> <span style=\"color: blue\">Integer<\/span> = 0)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; <span style=\"color: blue\">End<\/span> <span style=\"color: blue\">Sub<\/span><\/span><\/p>\n<p class=\"MsoNormal\">&nbsp;<\/p>\n<p class=\"MsoNormal\">In VB11 this code is now valid, which gives you more flexibility and improves the ability to version methods (though there&rsquo;s still more we need to do in this area).<\/p>\n<p class=\"MsoNormal\">&nbsp;<\/p>\n<p class=\"MsoNoSpacing\"><b>Limitless (Command-line) Errors!<br \/><\/b>This is actually a good thing, let me explain.&nbsp; For performance reasons, the Visual Basic IDE maxes out at 101 errors (with error #102 being &ldquo;Maximum number of errors exceeded.&rdquo;)&nbsp; This can make it difficult to estimate the amount of work remaining in certain situations, particularly in upgrade scenarios.&nbsp; We have <i>removed<\/i> this limit from the command-line compiler in this release, though it still there in the IDE.&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&rsquo;ll get your answer.<\/p>\n<p class=\"MsoNoSpacing\"><b>Caller Info Attributes<br \/><\/b>The compiler now recognizes three special attributes: &lt;CallerMemberName&gt;, &lt;CallerLineNumber&gt;, and &lt;CallerFilePath&gt;.&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.&nbsp;<\/p>\n<p class=\"MsoNoSpacing\">Another great use case for this is when implementing INotifyPropertyChanging:<\/p>\n<p class=\"MsoNoSpacing\">&nbsp;<\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Class<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">C<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Implements<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">INotifyPropertyChanged<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Dim<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> backing <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">New<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">Dictionary<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">(<\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Of<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">String<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">, <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Object<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Property<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> p <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">String<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Get<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Return<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> GetProp(<\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Of<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">String<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">)()<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">End<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Get<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Set<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">(<\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">ByVal<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> value <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">String<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetProp(value)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">End<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Set<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">End<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Property<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Public<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Function<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> GetProp(<\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Of<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">T<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">)(<\/span><span style=\"font-family: Consolas;background: yellow;color: black;font-size: 9.5pt\">&lt;<\/span><span style=\"font-family: Consolas;background: yellow;color: #2b91af;font-size: 9.5pt\">CallerMemberName<\/span><span style=\"font-family: Consolas;background: yellow;color: black;font-size: 9.5pt\">()&gt;<\/span><span style=\"font-family: Consolas;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Optional<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> prop <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">String<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> = <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Nothing<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">) <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">T<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">Debug<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">.Assert(prop <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">IsNot<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Nothing<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Try<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Return<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">CType<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">(backing(prop), <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">T<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Catch<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> ex <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">KeyNotFoundException<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Return<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">CType<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">(<\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Nothing<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">, <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">T<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">End<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Try<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">End<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Function<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Public<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Sub<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> SetProp(<\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Of<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">T<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">IComparable<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">(<\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Of<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">T<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">))(value <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">T<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">, <\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: yellow;color: black;font-size: 9.5pt\">&lt;<\/span><span style=\"font-family: Consolas;background: yellow;color: #2b91af;font-size: 9.5pt\">CallerMemberName<\/span><span style=\"font-family: Consolas;background: yellow;color: black;font-size: 9.5pt\">()&gt;<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Optional<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> prop <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">String<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> = <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Nothing<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Try<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Dim<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> oldvalue = <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">CType<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">(backing(prop), <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">T<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">)<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">If<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> value.CompareTo(oldvalue) = 0 <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Then<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Return<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Catch<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> ex <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">KeyNotFoundException<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">End<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Try<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; backing(prop) = value<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">RaiseEvent<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> PropertyChanged(<\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Me<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">, <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">New<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">PropertyChangedEventArgs<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">(prop))<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">End<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Sub<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Public<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Event<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> PropertyChanged(sender <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Object<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">, e <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">PropertyChangedEventArgs<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">) <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Implements<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">INotifyPropertyChanged<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">.PropertyChanged<\/span><\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;<\/span><\/p>\n<p class=\"MsoNoSpacing\"><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">&nbsp;&nbsp;&nbsp; <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">End<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Class<\/span><\/p>\n<p class=\"MsoNoSpacing\">&nbsp;&nbsp;<\/p>\n<p class=\"MsoNoSpacing\"><b>Simplified Code Spit (a.k.a. No More ByVal!)<br \/><\/b>The IDE will no longer insert &ldquo;ByVal&rdquo; in method signatures unless you explicitly type it in.&nbsp; This reduces a lot of the visual noise in method declarations and makes them more readable.&nbsp; Also, the IDE will no longer insert the fully-qualified name for a type (such as &ldquo;System.Object&rdquo; or &ldquo;System.EventArgs&rdquo;) when the applicable imports are already in scope.&nbsp; (Because in this case &ldquo;System&rdquo; is already a project-level import).<\/p>\n<p class=\"MsoNoSpacing\">VB10:<\/p>\n<p style=\"line-height: normal;margin-bottom: 0pt\" class=\"MsoNormal\"><span style=\"font-family: Consolas;color: blue;font-size: 9.5pt\">Private<\/span><span style=\"font-family: Consolas;font-size: 9.5pt\"> <span style=\"color: blue\">Sub<\/span> Form1_Load(<span style=\"color: blue\">ByVal<\/span> sender <span style=\"color: blue\">As<\/span> System.<span style=\"color: #2b91af\">Object<\/span>, <span style=\"color: blue\">ByVal<\/span> e <span style=\"color: blue\">As<\/span> System.<span style=\"color: #2b91af\">EventArgs<\/span>) <span style=\"color: blue\">Handles<\/span> <span style=\"color: blue\">MyBase<\/span>.Load<\/span><\/p>\n<p class=\"MsoNoSpacing\">&nbsp;<\/p>\n<p class=\"MsoNoSpacing\">VB11:<\/p>\n<p class=\"MsoNoSpacing\"><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Private<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Sub<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> Form1_Load(sender <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Object<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">, e <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">As<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: #2b91af;font-size: 9.5pt\">EventArgs<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">) <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">Handles<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\"> <\/span><span style=\"font-family: Consolas;background: white;color: blue;font-size: 9.5pt\">MyBase<\/span><span style=\"font-family: Consolas;background: white;color: black;font-size: 9.5pt\">.Load<\/span><\/p>\n<p class=\"MsoNoSpacing\">&nbsp;<\/p>\n<p class=\"MsoNoSpacing\">This also works automatically for all interface methods generated when you press enter after an Implements clause.<\/p>\n<p class=\"MsoNoSpacing\">&nbsp;<\/p>\n<p class=\"MsoNoSpacing\"><b>View Call Hierarchy<br \/><\/b>In VB11, if you right-click a method name, you&rsquo;ll see a new option for &ldquo;View Call Hierarchy&rdquo; that brings up a window that looks like this:&nbsp;<\/p>\n<div class=\"WordSection1\"><a href=\"https:\/\/devblogs.microsoft.com\/vbteam\/wp-content\/uploads\/sites\/7\/2012\/02\/0407.CallHierarchy.jpg\"><img decoding=\"async\" border=\"0\" alt=\"\" src=\"https:\/\/devblogs.microsoft.com\/vbteam\/wp-content\/uploads\/sites\/7\/2012\/02\/0407.CallHierarchy.jpg\" \/><\/a>&nbsp;<br \/>(Click on the image to see a more detailed view)<\/div>\n<div class=\"WordSection1\">&nbsp;<\/div>\n<p class=\"MsoNormal\">It shows you all calls to\/from that method, and also if it gets overridden anywhere.&nbsp; You can then walk the tree and understand how these methods are used throughout your codebase.&nbsp; For a more detailed overview, check out <a href=\"http:\/\/blogs.msdn.com\/b\/vbteam\/archive\/2011\/09\/20\/visual-studio-11-developer-preview-visual-basic-vb-call-hierarchy.aspx\">this post<\/a>.<\/p>\n<p class=\"MsoNormal\">&nbsp;<\/p>\n<p class=\"MsoNoSpacing\"><b>Getting Started<br \/><\/b>Hopefully that gives you a taste of what&rsquo;s new in VB11 (and we haven&rsquo;t even touched on all the performance improvements!).&nbsp; There are far more enhancements than we can cover here, so watch for a future post that goes into more detail.&nbsp; For next steps:<\/p>\n<p class=\"MsoNoSpacing\">&nbsp;<\/p>\n<p style=\"text-indent: -0.25in;margin-left: 0.5in\" class=\"MsoNoSpacing\"><b>1.<span style=\"font: 7pt 'Times New Roman'\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/b><b>Download the Bits!<br \/><\/b>Download <a href=\"http:\/\/go.microsoft.com\/fwlink\/p\/?LinkId=240162\">Visual Studio 11 Beta<\/a> (you can also get Team Foundation Server 11 Beta, and .NET Framework 4.5 Beta from here).&nbsp; Visual Studio 11 Beta can be installed on Windows 7, or you can install it on top of the <a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkID=239723\">Windows 8 Consumer Preview<\/a>.<\/p>\n<p style=\"margin-left: 0.25in\" class=\"MsoNoSpacing\">&nbsp;<\/p>\n<p style=\"text-indent: -0.25in;margin-left: 0.5in\" class=\"MsoNoSpacing\"><b>2.<span style=\"font: 7pt 'Times New Roman'\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/b><b>Learn More!<br \/><\/b>In addition to Jason&rsquo;s post, <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\">Jason&rsquo;s announcement<\/a>, be sure to check out the new <a href=\"http:\/\/blogs.msdn.com\/b\/windowsappdev\">Windows 8 app developer blog<\/a> for a list of great improvements across Visual Studio.&nbsp; For Samples, check out the <a href=\"http:\/\/code.msdn.microsoft.com\/windowsapps\">Windows 8 Sample Gallery<\/a>. To explore what&rsquo;s new in Windows 8, check out the <a href=\"http:\/\/blogs.msdn.com\/b\/b8\">Building Windows 8 blog post announcing the Windows 8 Customer Preview<\/a>.<\/p>\n<p style=\"margin-left: 0.5in\" class=\"MsoNoSpacing\">&nbsp;<\/p>\n<p style=\"text-indent: -0.25in;margin-left: 0.5in\" class=\"MsoNoSpacing\">3.<span style=\"font: 7pt 'Times New Roman'\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><b>Send us Feedback<\/b>!<br \/>The forums are available for questions, both in <a href=\"http:\/\/social.msdn.microsoft.com\/Forums\/en-US\/category\/vsvnext\">Visual Studio<\/a> and <a href=\"http:\/\/social.msdn.microsoft.com\/Forums\/en-us\/category\/windowsapps\">Windows 8<\/a>.&nbsp; If you find a bug please let us know through the <a href=\"http:\/\/connect.microsoft.com\/VisualStudio\">Microsoft Connect site<\/a>. For feature suggestions check out the <a href=\"http:\/\/visualstudio.uservoice.com\/forums\/121579-visual-studio\/category\/35066-ide\">UserVoice<\/a> site (which also allows you to vote on other users&rsquo; feature ideas).&nbsp;<\/p>\n<p class=\"MsoNoSpacing\">&nbsp;<\/p>\n<p class=\"MsoNoSpacing\">We hope you enjoy the product and look forward to seeing tons of great VB apps!<\/p>\n<p class=\"MsoNoSpacing\">Jon Aneja, Program Manager, VB\/C# Compiler Team<br \/>Lucian Wischik, Program Manager, VB Spec Lead<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As you may have read in Jason&rsquo;s announcement, today we announced that Visual Studio 11 Beta is now available for download.&nbsp; This is a huge 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 Iterators feature.&nbsp; And in [&hellip;]<\/p>\n","protected":false},"author":260,"featured_media":8818,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[195],"tags":[36,37,39,74,83,99,162,171,174],"class_list":["post-353","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-visual-basic","tag-async","tag-asynchronous-programming","tag-await","tag-ide","tag-jonathan-aneja","tag-lucian-wischik","tag-vb","tag-visual-basic","tag-visual-studio"],"acf":[],"blog_post_summary":"<p>As you may have read in Jason&rsquo;s announcement, today we announced that Visual Studio 11 Beta is now available for download.&nbsp; This is a huge 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 Iterators feature.&nbsp; And in [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/vbteam\/wp-json\/wp\/v2\/posts\/353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/vbteam\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/vbteam\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/vbteam\/wp-json\/wp\/v2\/users\/260"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/vbteam\/wp-json\/wp\/v2\/comments?post=353"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/vbteam\/wp-json\/wp\/v2\/posts\/353\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/vbteam\/wp-json\/wp\/v2\/media\/8818"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/vbteam\/wp-json\/wp\/v2\/media?parent=353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/vbteam\/wp-json\/wp\/v2\/categories?post=353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/vbteam\/wp-json\/wp\/v2\/tags?post=353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}