Lisa Feigenbaum Microsoft Program Manager Session Code: DEV314
Lap Around Visual Basic in VS 2010 Session Objectives Discover what’s available See how to take advantage of new features Agenda New Editor & Shell VB IDE VB Language VS 2010 &.NET 4 Highlights
New Editor & Shell WPF User Interface New Look, Rich Experience Start Page Remove or pin projects, View directory, Customize Editor Zoom, Multi-Monitor, Block selection, Outlining Extensibility Visual Studio Gallery, Extension Manager
New Editor & Shell Lisa Feigenbaum Program Manager Microsoft
“There’s an extension for that!”
Code-Focused VB IDE Understanding Highlight References Type Colorization Navigating Navigate To: Files & Members, Ctrl+, Writing & Testing IntelliSense: Non-aggressive, Substring, PascalCase Generate From Usage: Type, Method, Property
Code-Focused VB IDE Lisa Feigenbaum Program Manager Microsoft
VB Language Syntax Enhancements Multiline Statement Lambdas Auto-implemented Properties Collection Initializers Array Literals Implicit Line Continuation Co/contravariance Office Deployment: No PIA Dynamic Language Interop on the DLR
VB Language Lisa Feigenbaum Program Manager Microsoft
Dynamic Versus Static Dynamic Languages Simple and succinctImplicitly typedMeta-programmingNo compilation Static Languages RobustPerformantIntelligent toolsBetter scaling
Open Source versus Commercial
Python Binder Ruby Binder COM Binder JavaScript Binder Object Binder Dynamic Languages On.NET Dynamic Language Runtime Expression Trees Dynamic Dispatch Call Site Caching IronPython IronRuby C# VB.NET Others…
ScriptObject calc = GetCalculator(); object res = calc.Invoke("Add", 10, 20); int sum = Convert.ToInt32(res); ScriptObject calc = GetCalculator(); object res = calc.Invoke("Add", 10, 20); int sum = Convert.ToInt32(res); Dim calc As ScriptObject = GetCalculator() Dim res As Object = calc.Invoke("Add", 10, 20) Dim sum As Integer = Convert.ToInt32(res) Dim calc As ScriptObject = GetCalculator() Dim res As Object = calc.Invoke("Add", 10, 20) Dim sum As Integer = Convert.ToInt32(res) VB 10, C# 4.0 And Dynamic Calculator calc = GetCalculator(); int sum = calc.Add(10, 20); Calculator calc = GetCalculator(); int sum = calc.Add(10, 20); object calc = GetCalculator(); Type calcType = calc.GetType(); object res = calcType.InvokeMember("Add", BindingFlags.InvokeMethod, null, new object[] { 10, 20 }); int sum = Convert.ToInt32(res); object calc = GetCalculator(); Type calcType = calc.GetType(); object res = calcType.InvokeMember("Add", BindingFlags.InvokeMethod, null, new object[] { 10, 20 }); int sum = Convert.ToInt32(res); dynamic calc = GetCalculator(); int sum = calc.Add(10, 20); dynamic calc = GetCalculator(); int sum = calc.Add(10, 20); Dynamic method invocation Dynamic conversion Dim calc As Calculator = GetCalculator() Dim sum As Integer = calc.Add(10, 20) Dim calc As Calculator = GetCalculator() Dim sum As Integer = calc.Add(10, 20) Dim calc As Object = GetCalculator() Dim sum As Integer = calc.Add(10, 20) Dim calc As Object = GetCalculator() Dim sum As Integer = calc.Add(10, 20) Dim calc As Object = GetCalculator() Dim sum As Integer = calc.Add(10, 20) Dim calc As Object = GetCalculator() Dim sum As Integer = calc.Add(10, 20) Visual C# Visual Basic Static binding Dynamic binding (pre-VS 2010) Dynamic binding (pre-VS 2010) Binding to ScriptObjects (JavaScript) Statically typed to be dynamic Dynamic method invocation Dynamic conversion
VB & C# 2010 Language FeatureVBC# Auto-implemented Properties Collection Initializers Array Literals Statement Lambdas Implicit Line ContinuationN/A Named/Optional Parameters Latebinding support (dynamic) Omit ref on COM calls Indexed Properties Interop with Dynamic Languages Co/contravariance PIA deployment not needed New in VS 2010 Already exists in VS 2008
VB & C# 2010 IDE Feature VBC# Generate From Usage: Generate Method Type colorization Background Squiggles: Top Level Analysis IntelliSense: Builder UI IntelliSense: Prefix Filtering Completion List Generate From Usage: Generate Type, Constructor, Property, Field IntelliSense: Consume First Mode IntelliSense: Substring & Camel-Case Match Navigate To Highlight References Call Hierarchy New in VS 2010 Already exists in VS 2008
VS 2010 /.NET 4 Highlights DGML Graphs WPF Drag & Drop IntelliTrace Parallel Extensions New Editor & Shell
Summary What We’ve Seen New Editor & Shell VB IDE VB Language VS 2010 &.NET 4 Highlights Call to Action Download Beta2 Use the resources and try it out Tell us your feedback
Resources Visual Basic Developer Center VB 2010 Resources Blogs (VB Team) (Lisa) Visual Basic Forums US/tag/visualbasic/forums/ Connect
VB 2010 Resources
Related Content Architecture Discovery and Validation with Visual Studio 2010 [DEV313] November 12, 13:30-14:45 – Paris 2 - Hall 7-1c Peter Provost Building High Performance Parallel Software [DEV401] November 12, 15: :30 – Berlin 1 - Hall 7-3a Steve Teixeira Pumping Iron: Dynamic Languages on the Microsoft.NET Framework [DEV04-IS] November 10, 17: :15 – Interactive Theatre 2 - Orange Harry Pierson Dynamic in Microsoft Visual C# 4.0: The Why's and How's [DEV402] November 12, 10: :00 – Helsinki - Hall 7-2a Alex Turner Parallel Computing for Managed Developers (Repeat) [DEV307] November 13, 09: :15 – Europa 1 - Hall 7-3b November 13, 09: :15 – Europa 1 - Hall 7-3b Steve Teixeira Using C# 4.0 & VB10 Interop Features with Silverlight, Office & Python [DEV03-IS] November 12, 15: :30 – Interactive Theatre 2 - Orange Alex Turner Microsoft Visual Studio Tips and Tricks (Repeat) [DEV301] November 13, 13: :15 – London 1 - Hall 7-1b November 13, 13: :15 – London 1 - Hall 7-1b Scott Cate
Complete an evaluation on CommNet and enter to win an Xbox 360 Elite!
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.