MS recently announced the availability of VS 2012 SP1, which adds support for compiling executables compatible with Windows XP. I've been holding off upgrading my IDE, but now with XP support I'm looking forward to it. Does anyone have upgrade or usability experiences you would like to share? I've read that VS 2012 is a bit lacking in the c++11 department, but for the most part I'm not that crazy about it.
There's been some inevitable grumbling:
- Some people don't like the new UI.
- There's issues with VS2012 silently upgrading the .NET framework, but no version change. So, if you worked around a bug, and if the upgrade changes the behavior, you could have a new bug from the act of upgrading.
Obviously, there's hits on the net with spot installation or specific system issues, but otherwise it's par for the course.
Thought I would update this as I've been using it for about a week now and I've been testing most of the features out. Note that this is in regards to the Pro edition, but I discuss the express edition later on.
SDKs With the latest .NET version, Silverlight, 32 and 64bit compiler configurations, I can finally get rid of all the 3rd party dependencies I had to use with VS 2010. Shaved a clean 10GB off my dev system.
Past Projects VS 2010 projects had no problem converting over and for the most part, the file formats are the same. Only some new project settings were introduced, such as targeting the Win XP CRT.
IntelliSense The IntelliSense feels very responsive this time around. Unlike VS 2010, it also picks up XML based commenting. It would have been nice if they had the auto-complete on pressing enter like they do with .NET projects instead of having to hold and press \-space.
User Interface The UI has changed and many have voiced their concern about the "grey" factor, but I kind of like it. It's simple and feels more spacious. I don't particularly feel lost and I didn't lose any time jumping straight into development. Perhaps the hardest thing to get use to at first is the thin window border. Typical window apps use a thick border with a recognizable caption bar. It's a little different here.
Code Analysis You can profile your CPU and GPU as well as measure your concurrency performance. Overall the tools are more of a recording device for the task manager, but the profiler does provide some statistics about function overhead and the concurrency visualizer does help you fine tune your threads. The GPU graph is a laugh at best. Dedicated tools like nVidia's NSight or AMD's APP are much better alternatives as far as graphics development goes.
The code metrics is an interesting addon, although as with most things software engineering related the reports should be taken with a grain of salt. It compares code complexity based on some known factors like code coupling and cohesion. It also offers you an LOC report, which while not a great metric, it's still nice to know (throw a party when you hit 1mil) and you don't need to resort to 3rd party tools to figure this out.
Now, code analysis is a really cool feature. Even John Carmack spoke about it. Visual Studio will compile your project and build a report, which provides a list of logical warnings that would otherwise pass a compiler test. It also provides warnings about null safety, stack overflows, etc. There are some false positives, but overall it's a great tool to provide a quick and simple automated code review before spending the resources to do a real one. The only annoyance is that it will reanalyse the entire project everytime you run it and it can take quite a bit of time. It would have been nice had they cached the results and reanalyse only the files that changed.
Blend for Visual Studio If you're in the WPF scene, you're probably familiar with Expression Blend. VS 2012 comes with Blend for free. I haven't used it much and there appears to be a bug where you can't create a new project (ha ha...), but it's a great tool for prototyping. I may get more involved with this later, but for now I prefer to code my XAML by hand :ph34r:
Team Foundation Server I have never been a fan of source control software from Microsoft. Visual source safe has left a permanent scar on me that will never heal. This is the first time I heard of their TFS line, which is a product designed to help track issues, schedule tasks, provide source control management, provide reports, etc. (abbr. ALM: Application Lifecyle Management [know your buzz]). TFS frontend is embedded into Visual Studio, so all you need is a TFS server to start using it. Microsoft decided to release a free express edition of TFS that you can download and use with a small team. It's a beast of a server that requires a well equipped PC to run. It also takes an abnormal amount of time to install. Overall I wasn't too impressed with it, but I haven't used it extensively yet. It does tightly integrate with VS, but I personally have grown to like Jira + Greenhopper + SVN + AnkhSvn. These are products that excell well at what they do. TFS feels like a general solution to everything, but excelling in neither.
As far as free ALMs go, this is probably the best out there and is a solid choice for small teams (5 or less ppl).
Express Edition I haven't used the express edition, but what I gather from the Visual Studio blog, almost every feature available in the pro edition is now available in the express edition. TFS, code anlysis, 64 bit compiler. The only thing I gather that's different is the pro edition supports plugins, uses a single install and executable for all project types, has slightly better debugging tools, and reduces the weight of your wallet. For code enthusiasts, this is pretty much an acceptable tradeoff considering what you're getting for free. Might be the start of an interesting trend for MS.
Cons While the IDE is good for the most part, there are a few annoyances I have.
They are still using filter views with C/C++ projects. I cannot stand filters and the "Show All Files" option does not work when you store your VS project files in a separate directory, which is common when writing portable software. I wish MS would fix this to be more like their .NET project management.
Code metrics does not work when the C++ project targets Windows XP.
The fact that there is a Windows XP target is confusing to begin with. Why you would ignore the 40% Win XP market share is not logical.
Thanks for the informative read.
I'm used to Visual Studio -been using it for over a decade-, but with each version I grow more impatient to switch to something else. Something less invasive, less bloated, and that won't actively try to tie me to .Net. I perfectly understand that Microsoft is a for-profit organization and it's their legitimate interest to 'push' people towards their own technologies. But with every new year, software release, and technology... those pushes become more aggressive. We're already at the stage of "you'll have it, or it won't work". And you are forced to have it, even if you don't care to use it. That's what I dislike. The choice is taken away from me.
Were you to suggest an alternative to VS, where would you point people to?
MS does tend to get carried away from time to time. They originally dropped support for developing desktop applications in their express editions until a massive public outcry forced them to think differently. Then they tried to exclude win XP support until once again the devs complained until they fixed it (just recently actually). There are perhaps quite a few features in VS2012 that's not for me, but overall I still find it the best IDE out there.
The only alternative I would ever recommend is Eclipse. I use it for building C++ Android apps, but I still implement and test a desktop version using Visual Studio because it's just so much more productive. Eclipse is feature rich so you have access to all the bells and whistles, but because it's built on Java tech it's quite a resource hog. You have subclipse for integrating with SVN and Mylyn for ALM, both of which are solid plugins. There's also a Lua plugin (although by the looks of it no longer worked on) that makes it easier to develop lua scripts. Configuring C++ projects is a bit nightmarish because the UI is not all that good and there are bugs with its intellisense in that it won't update if you edit an existing include path. You have to create a new one to force a refresh. It gets annoying because Eclipse will report a bunch of missing files and will fail to compile. Considering it's free and supports a wide array of features though, it's not all bad.