Hi! I am Amit Mohindra, a Program Manager on the Visual C++ team. Earlier in the month my colleague Sumit Kumar had talked about some of the exciting IDE features in the next version of Visual Studio. Today I will just add to that list a few more features that we have done in the next version of the IDE to help you be more productive.
Over the years one of the pain points for our customers has been the upgrade cost associated with a new release of Visual Studio . The cost associated with upgrade from Visual Studio 2008 to Visual Studio 2010 especially for Visual C++ customers was steep because of breaking compiler changes and a totally new project and build system based on MSBuild.
In Visual Studio 11 we have eliminated this cost for you by supporting project (asset) compatibility between Visual Studio 2010 and Visual Studio 11. What this means is that you will be able to open and work (build etc.) in Visual Studio 11 with your Visual Studio 2010 projects without needing to upgrade your project files.
The upgrade wizard is gone.
The upgrade wizard does not pop-up when you load a Visual Studio 2010 project in Visual Studio 11. It just loads . You can build the project using Visual Studio 2010 tools in Visual Studio 11 using the multi targeting feature, which I will explain more below. This means while you adapt to using the new compiler and your 3rd parties vendors provide you with binaries compatible with the Visual Studio 11 compiler you can still leverage the new Visual Studio 11 IDE without disrupting your ship cycle. Just set the platform toolset property to v100 in the property pages (requires Visual Studio 2010 to be installed side-by-side with Visual Studio 11). Since there is no upgrade while you are using the Visual Studio 2010 tools (v100) to build you can continue load the project/solution in Visual Studio 2010 as well.
You might be thinking “wait!!!!” if I have more than 200 native projects I don’t want to be changing the platform toolset property for each project.
We have solved that problem in Visual Studio 11 by providing a way for you to update your toolset right from the solution file. Right clicking on your solution file brings up a context menu from which you can choose to update the toolset for all your native projects.
Don’t get scared by the word “Upgrade”, this option only updates the toolset property for each of your native projects in the solution to use Visual Studio 11 build tools (v110). Note that we are actively working on improving the usability experience around this feature.
Note this feature is just not limited to solutions with just Visual C++ project but is valid for mixed solutions as well which might contain some Visual C++ projects and say some C# projects. In the coming weeks you will hear more about this.
Visual Studio 2010 and previous releases for C++ offered a way of creating project templates using an old .vsz/.vsdir format. This format is quite old and does not support the functionality of publishing the templates on the extension gallery for other customer to download and consume. Visual Studio 11 for C++ supports the ”vstemplates” format for authoring your custom project and item templates that will allow for any new templates to leverage the infrastructure to publish the templates online on the extension gallery.
You could either hand author your custom “vstemplate” files using the schema or if you are working on a project you could use Visual Studio to export it to a template as shown below.
Just fill out the details for your template and click finish in the wizard.
Now go to File->New->Project in Visual Studio 11 and your template shows up.
Once you have a template you can also upload the template to the extension gallery by creating a VSIX. Instructions on how to create a VSIX are listed here.
You can learn more on VSTemplates here.
Both of the features above have been requested by you over the years and we are bringing these to you in the next release of Visual Studio. Please share your feedback regarding these features and we will strive to make them better. Please note that the descriptions and screenshots are from our early internal builds. These features are still under development and could potentially change or not even be included in our final product.
I am a bit scared that the native MFC support will be discarded in upcoming Windows 8. I wanted to know if there is any effort to enable the MFC in future versions of Visual Studio to be able to support the new Windows 8 ARM processor architecture. I am a bit concerned because of MFC's age that it will not be extended to support the new ARM architecture of Windows 8. I remember having ARM based Embedded VC++ Version 3 in 2003 / 2004 which has already a major part of the MFC ported to ARM architecture. Can you tell me if there is any information internally in MS about this upcoming "problem" ?.
I just wanted to help to point out that already a large part of the MFC is ARM compatible and it would maybe need only a few more parts to be converted to give the whole MFC full support for the ARM platform.
With all these wonderful changes to the IDE, I wonder if you will be making the project settings dialog resizeable?
@Jon, unfortunately we will not be making the project setting dialog resizable in the upcoming release. Thanks for the feedback, something we will keep in mind when we look at the dialog for a future release.
I'm glad that vNext can use VS10 project files.
I'm glad that there is a way to create templates with commonly used configurations.
I guess I'm glad that the next release is coming up soon since requests are being postponed to the next release.
But I would politely ask the Visual Studio team to at least widen the C++ properties dialog.
That cannot take more than two tries and 4 hours.
The resize request has 48 votes from
For example, just a few more pixels allocated to the left tree would remove the scrollbar caused by the long text "XML Document Generator". A 20% increase in the whole dialog would help considerably.
VC++ sqlclr support like cs in denali tools in Pro verson. Fix intellisense.
You should offer documentation on how to avoid having side-by-side versions of compilers, headers and libraries when users install new components. For instance, if you install the Windows SDK 7.1 on top of Visual Studio 2010, then you have two sets of compilers (since the SDK now includes them), two slightly different sets of header files and libraries, and a devilishly confusing job when it comes time to deploy your program because you have no idea which versions of libraries are compatible.
That's great! This is a great feature, and currently, our project E-XD++ Extension Library (http://www.ucancode.net) is builded with Visual Studio 6.0, this feature will help us much I think.
(Apologies if this is a duplicate. I think I hit the MSDN-blogs comment timeout thing where it just refreshes the page instead of posting your comment.)
"The upgrade wizard is gone."
Presumably you will still see the upgrade wizard if you load a project made for VS2008 or earlier, since there's no mention of compatibility with them?
It seems like a pain to having to have VS2010 and vNext installed side-by-side to build solutions that mix the two project types. (And where will that end? Will we potentially need to have five IDE versions side-by-side in the future?) I suppose it helps with short-term migration issues, meaning you don't have to update everyone in the company to a new IDE version at once, but it's not a long-term solution for the fact that some external projects target older IDE versions (sometimes several releases behind) for years after the new ones come out.
Couldn't the new versions of the tools understand the older project formats directly? That seems a lot better than having to install multiple copies of a massive IDE, plus the associated hassle it causes with asking you to choose a JIT debugger, making sure the right tools and env-vars are in place in the right situations, etc.
It's better than nothing, and it will be a short-term help in some situations, but it also seems like a big kludge.
As for that C++ project settings dialog, how many years of ignoring our complaints is it going to take for you to work out how to handle WM_SIZE? It's not rocket science. That dialog has been causing us grief for such a long time.
Heck, when I was migrating some projects and doing a lot of changes via that dialog, I got so frustrated that I wrote a little hack which found & resized the window & controls myself. If I can do it, without access to the Visual Studio source code, why on earth is it taking Microsoft so long to make such a trivial change? It is completely ridiculous.
Is there some religious objection to resizeable dialogs within the company that we should know about? :)
are you trying to pull our collective legs?
That dialog has been criticized vociferously since at least VS7. It contains a tree view and a property grid, so making it resizable should boil down to flipping a dialog property, with minimal testing.
Yet you have failed to do so for a whole decade!
That is most ridiculous and pathetic.
Why do people care if a window is resizable? I'm more interested in what Windows 8 brings in terms of a new modern API for programming Windows(WinRT) and if it will run on previous versions. Seeing major C++11 features implemented would be nice as well.
Thanks, Amit, for all the new info.
I am blind and I use Visual Studio to program with the help of my screen reader software. One problem I have and which you can address easily is that I want a shortcut key which will take me quickly from one function/method to the next or previous one in the file. I find it hard to have to cursor up a lot of times or cursor down a lot of times until I arrive at the next or previous function/method in the file. A shortcut to jump to the next/previous function would be very welcome. VB used to have such a shortcut (CTRL+up and CTRL+down) but it was only in VB 6 I think. How do sighted people find the next/previous function in a file quickly? Perhaps you use code-folding? I don't like code-folding though. It is too confusing to use with a screen reader as you do not know easily what code in the file has been hidden and what has remained, and you do not know easily know if there is more hidden code you haven't expanded yet. At least for me, using code-folding is hard. Is there another way of jumping from method to method? I don't like to use the Class Viewer to do this either.
Also, can you add a shortcut key that will take me to the next/previous change in indentation? I want this so that I would be able to easily find the beginning or the end of code blocks. Implement a shortcut that will move forwards or backwards in the source file untill the indntation has changed. This wuold be so useful to me. Sighted people can see where a block starts or ends quickly by looking at the indentation. For tmeI have to cursor up or down multiple times and listen to the screen reader. Very slow.
Finally, please please please, implement the Format Document command for Visual C++ too. IN VB and C#, you can format the whole file by pressing CTRL+k, CTRL+d. But for C++ projects this is not possible. You have to instead press CTRL+a to select all text and then press CTRL+k, CTRL+f to format selection. Why is it that after so many years you haven't implemented the same Format Document command in C++ projectgs? How do sighted programmers fix the formatting of their files? Do you do it by hand. Implementing this command should be very easy since it is available in all other languages except C++
@BlindProgrammer I sincerily hope that VS Team will fix those issues mentioned by you and you'll be able to work more easily with your projects.
Knowing me, knowing you, a-ha.
@BlindProgrammer: If you can find the opening brace of the function, you can press Ctrl+] to jump to the matching (closing) brace - not quite what you're after but still easier than lots of cursor up/down.
@Amit: Why? Is it too hard for MS to make a window resizable?
Every window that might display a scrollbar should be resizable.