hen I was asked to write a few pages on what’s coming in the next version of Microsoft Visual Studio .NET (code named Whidbey), the biggest issue I had was how to limit this article to a few pages.
I opted to list a few categories and drill down into each. I’m not going to cover everything, just some key items in each area. Please note that not all of these changes are implemented in the PDC build that attendees are receiving, and that some of these features are still in the planning stages. That said, here are the categories that I’d like to discuss:
- New language features in VB, C#, C++, and J# .NET Framework:
- Enhancements to the Framework that make development easier
- Changes to the IDE that make work go faster and help develop more efficiently.
There is continued support for interoperability between languages. This means that you can continue to debug and inherit across languages, and all languages continue to have full access to the .NET Framework. That said, each product focuses on its core areas of development. For more information on language differentiation, see http://msdn.microsoft.com/vstudio/productinfo/whitepapers/default.aspx.
Core Language Enhancements
All languages in Whidbey support core enhancements.
Generics: The CLR includes a type-safe, high-performance, compile time-verified version of Generics, which allow you to author, test, and deploy code once, and then reuse that code for a variety of different data types with negligible performance impact to applications.
Partial Types: This allows you to break a class into multiple files, and is useful for classes that may be partially computer-generated (you can put the computer-generated portion in a separate physical file from the code that you write), and for easier maintenance of large classes.
Visual Basic Language Enhancements
Visual Basic .NET Whidbey radically improves developer productivity while continuing to provide full access to the .NET Framework. Visual Basic .NET language enhancements include support for multiple features, including:
My Classes: Greatly reduce code associated with common programming tasks
XML code documentation: Allows you to document code and have it used automatically by IntelliSense and other tools
Miscellaneous: Including features like operator overloading and support for unsigned data types
Visual C++ Language Enhancements
Whidbey unlocks the potential of Visual C++ on .NET. You can target the CLR without abandoning your investment in your C++ code-base. You don’t have to rewrite in another language to leverage .NET functionality and you don’t have to sacrifice C++ power and flexibility. Visual C++ includes .NET support for templates, Generics, and STL, among other features. The syntax has been refined. Of course, you’re also investing in advanced code-generation optimizations such as Profile Guided Optimization, tools for 64 bit development, and library features such as CRT security and Fusion.
Visual C# Language Enhancements
Visual C# Whidbey is centered on “code-focused RAD,” with emphasis on language features. Enhancements to Visual C# include:
Iterators: Constructs that simplify the creation of enumerator patterns
Anonymous methods: Allow you to create code blocks that can be encapsulated in a delegate and executed at a later time
Visual J# Language Enhancements
Visual J# Whidbey includes a number of new enhancements, including:
Browser controls: Allow you to migrate existing applet source code to run on the .NET Framework
New types: Add support for authoring Enums and Value types
New keywords: Adds support for assert and volatile keywords
Swing Framework: Adds new functionality
There are a large number of enhancements across the .NET Framework. Here are a few of my favorites.
Windows Forms have been enhanced in a number of ways. One of my favorites improves upon the No-Touch Deployment that was introduced in the first version of the .NET Framework. These enhancements allow you to create a Windows Form-based application and deploy it as if it were a Web form but with the power of the smart client. You can write your application, deploy it to a server, and have it (and any updates) auto-downloaded to the client computer on first use. From that point on, it exists on the client computer, allowing you to do cool things like running applications offline, rolling back to a previous version, listing it in the Windows Start Menu, etc. Enhancements to Code Access Security allow you to define what capabilities this application has. It’s safe and easy to deploy.
In addition to those capabilities, there are a slew of new controls including an Office-style toolbar, a sound component that can run in partial trust, Web browser controls, and new ways of laying out your controls for automatic positioning and resizing. There are a lot of enhancements to make asynchronous programming easier.
The Whidbey release of ASP.NET has a number of new features as well. Master Pages allow you to quickly share a layout across multiple pages, similar to visual inheritance in a Windows Form. Themes and skins allow you to standardize the look and feel of a Web site, and can be easily packaged, transferred, and applied to other Web sites.
Visual Studio .NET Whidbey adds native C++ smart device development (to go with the existing Visual Basic .NET and C# support). Additionally, Microsoft has added support for all the latest devices including the Smartphone, Windows CE .NET 4.2-based devices, and the newest versions of the PocketPC. This release also adds new classes for handling things like telephony, MSMQ and SMS.
One of the key features of Visual Studio .NET Whidbey is that for the third release, there have been no changes to the data access model. Access and use of ADO.NET got easier! Both Windows Forms and Web Forms provide a set of new controls that can be used for interacting with data?whether it comes from a database, middle-tier business object, or Web service. Databinding has been simplified, as has the design process of creating data-aware forms for both types of applications. ObjectSpaces eliminate the gap between data and object manipulation, allowing you to work with your data as objects.
Whidbey facilitates the creation of business-critical Web services that involve multiple trust domains, long-running operations, and peer-to-peer communications.
IDE and Tool Enhancements
Visual Studio .NET Whidbey is more than changes to languages and Frameworks?there are a host of enhancements to the IDE itself, as well as a number of new tool capabilities. Like the language enhancements, there are a number of core changes, and some that affect only specific languages.
Core IDE and Tool Enhancements
The core IDE enhancements include:
- Community Web services that are maintained on MSDN and accessed via the Visual Studio .NET IDE. These Web services allow you to extend your IDE over time with new starter kits, project templates, “my” classes, reusable code snippets, controls, etc. Basically, you can get enhancements to your development environment as they are made available?all within the shell.
- New extensibility allows you to extend your development experience in a similar way. You can create your own reusable code snippets, profiles, etc., and make them available to others.
- Documentation and Help have been greatly enhanced, making it easier to find what you’re looking for, with the addition of a large number of new samples that you can use immediately.
- Visual Studio .NET Whidbey ships with a new color-coded and intelligent XML Editor as well as a new XSLT debugger.
- There is Help in authoring common coding tasks. These tasks can be user-defined as well, allowing a team of developers to automate their own standard tasks.
- Debugging has added a concept called Debugger Visualizations. These allow you to view complex data types in appropriate viewers, and are extensible for any unique types you may create. For instance, a dataset viewer can allow you to view the dataset in a grid from the debugger.
- Building your application has been taken to the next level through the integration of MS Build. This engine has a documented file format and is XML-based, allows you to have fine-grained control over your build process, and integrates into the Visual Studio .NET IDE for those who build within the environment.
Visual Basic IDE Enhancements
Unique to Visual Basic .NET, you will see tools that enhance the RAD development process:
- Auto-correct for common programming errors, including syntax and semantic errors
- Edit and Continue is back in Visual Basic .NET. This iterative development and debug capability, when combined with the advanced error correction and code analysis available, provides the most powerful and flexible debugging experience ever.
- A better Command window experience, allowing for a more iterative development process.
Visual C++ IDE Enhancements
The Visual C++ Whidbey IDE includes improved IntelliSense, Caller/Callee browsing, easy importing of source code, inference rule support, property sheets, command line build capability, and easy targeting of 64 bit platforms and WinCE devices.
Visual C# IDE Enhancements
Visual C# has added some tools that enhance code-focused RAD development.
Refactoring: These tools allow disciplined code restructuring
Code Formatting: This allows you to format your code, defaulting to the .NET coding guidelines, and can be shared with teams.
Things I Can’t Cover
In addition to what I’ve discussed, there are a slew of other enhancements. I especially would like to call out two other major features:
- Integration with Microsoft Office 2003 System, providing a schema-based programming model and allowing you to use managed code with Word 2003 and Excel 2003.
- SQL Server “Yukon” (the next version of SQL Server) allows you to write stored procedures, table-valued functions, user-defined types, and more, in managed code, and debug seamlessly between TSQL and managed code.
I hope that you have a good idea of the type and scale of enhancements coming in the next major version of Visual Studio .NET.
For a product roadmap that includes Visual Studio .NET Whidbey and beyond, see http://msdn.microsoft.com/vstudio/productinfo/roadmap.aspx.