Do not upgrade to VS 2010 if you use C++/CLI. I rolled back to using VS 2008 SP1 after I tried to use VS 2010 without IntelliSense. It completely kills my productivity to code without IntelliSense. If you also find this frustrating, please vote and/or leave a comment here.
For a variety of reasons, the VC++ team changed how data was stored for browsing and IntelliSense. Instead of using a custom .ncb file format, they switched to use .sdf SQL Server Compact database files. I would think that the Extensible Storage Engine might be a better match, but that is off topic. The problem is that in order to ship on schedule, they had to prioritize features and somehow C++/CLI IntelliSense support got dropped.
My team at work is working on the next major version of our desktop software and we would like to target the .NET 4 Client Profile. New features/components are written in C# or F# if possible, but the vast majority of code is still C++/CLI that has to be maintained. Lack of C++/CLI IntelliSense is keeping us from upgrading to VS 2010 and moving to .NET 4.
I was hoping that there might be an announcement at the Microsoft Professional Developers Conference (PDC) last week about a Service Pack 1 (SP1) for VS 2010, but I didn’t see anything. That is probably why I’m ranting about this now in my blog when I’ve been frustrated by it since April when VS 2010 shipped. Does anyone know if C++/CLI IntelliSense will be in a VS 2010 SP1?
Visual 2010 Goodness
Multi-processor compilation support in VS 2010 significantly reduces my compilation times. I don’t remember the exact numbers, but I think it was about 25 minutes to 12 minutes.
It is possible to target the .NET 4 Client Profile in VS 2010 C++/CLI by unloading the project and editing the .vcxproj file manually. Simply add these lines to <PropertyGroup Label="Globals">:
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
This is possible because VC++ project files are standard MSBuild files now. I initially figured that out simply by looking at a C# .csproj file.