Code Focused Development in VS 2010

In a blog post in November, I mentioned a feature called “Quick Search” – one of the code focused features of Visual Studio 2010.  We have been lagging behind some in this area in the past and we wanted to focus on this as a key pillar for Visual Studio 2010.  Today, I’d like to share some more details of our code focused development investments and features.   

Highlight References

Highlight References is a simple but easy way to quickly understand a scoped piece of code and navigate to references.  The feature is activated automatically after a short delay – all references to the symbol under the cursor are highlighted.  Navigating to the next reference is easily done by pressing Ctrl + Shift + UpArrow (or DownArrow for the reverse direction.)  In the example below, you can see this feature in action; you may also notice that it infers which overloads bind to the current selection rather than a pure text match.

Quick Search

Quick Search was the code focused feature I mentioned previously.  It works for all C++, C#, and VB symbols and all file types.  It’s a very lightweight way to do incremental searches, quickly filter the results and get powerful search heuristics like substring.  Let’s take a look at how I might use Quick Search.

If I was looking for an event handler and couldn’t quite remember its name but knew that I used the typical naming convention, Quick Search can help.  My first step is to find all method signatures that contain the word “Click” by typing “Click” into Quick Search.

At that point, I may remember that it also contains “Enter”; by added the letter “E”, I’m able to quickly filter to everything that contains both “Click” and “E”, treating the space as a wildcard search.  I’ve now reduced the results to a short list I can choose from.

Quick Search even supports camel-case matches.  So, for example, if I type in capital, “SPF”, Quick Search will filter the results to only those that are a camel-case or exact match!

Call Hierarchy

Another scenario we’re focusing on is reviewing dependencies.  For example, if I make a change to a method, I might want to know all the instances where it’s being called.  In VS 2010, we’re improving the call browser experience in C++ and also bringing a new call hierarchy tool to C# and VB.  These features let you easily navigate all callers and callees of a method (see below.)

The call hierarchy tools also allow you to see all overrides of a method and any implementers of interface methods.  For instance, if I want to see who implements the MakeSound() interface method, I can invoke call hierarchy to see that there are two implementers, in Cat and in Dog.

Consume-First Development

Many features in Visual Studio, such as IntelliSense and Quick Info work best when an API that a user is consuming is already defined.  We recognize, though, there are times you need to code against an API that has yet to be defined completely.  For example, in test-driven development (TDD) we see the test-first pattern.  So, in VS 2010, we’re making it easier to do consume-first development.

I had previously talked about the “generate from usage” feature which generates code stubs for types, methods, properties, and constructors inferred from a symbol’s usage in code.  In the screenshot below, you can see “generate from usage” at work.

Generating the constructor will generate the following code:

However, we’re also investing in a “consume-first” mode for IntelliSense that allows you to easily toggle the commit behavior for IntelliSense.  In Visual Studio today, you may have had the experience of having the IDE auto-complete an identifier you didn’t want because it didn’t yet exist (think generic method return types.)  In the case below, if you typed “Puzzle”, IntelliSense preselects “PuzzleTest”.  Hitting “space” or Enter will insert “PuzzleTest”.

Instead, you’ll be able to hit Ctrl+Alt+Space to toggle on the “Consume-first” mode.  Now, when you type “Puzzle”, “PuzzleTest” is still included in the list but is won’t be actively selected; what you’ve just typed will be what’s inserted. 

These are some examples of the kinds of things we are doing in Visual Studio 2010 to make your jobs easier and more productive. 


Comments (43)

  1. Doug Holland says:

    Great blog post Soma!!!

    I think it would be great if you could share some thoughts on when another CTP / beta might be available.

    hint hint hint 🙂


    – Doug

  2. Anirudh says:

    These improvements seem nice, though some free IDEs have had features like this for a while now 🙂

  3. Somasegar says:

    Hi Doug,

    In the next few months we are focused on doing a lot of the feature work and will have a better idea then about when we could share a build with you all.


  4. Andre says:

    THIS is the kind of features I’m looking forward to and NOT a WPF shell. So please don’t ruin everything by making the IDE slower then it already is.

    Just yesterday I had VS6 and VS2008 open, compiling a large C++ project in VS6 and VS2008 was minimized doing nothing. Went away and when I came back VS6 was done and VS2008 crashed. VS2005 also crashes everytime I close it (.NET BroadcastEventWindow…).

    If I would be the CEO of Microsoft I would fire a dozen of people in DevDiv, what you guys turned VS into is just pathetic.

  5. Any thoughts on auto-documentation?

    Reverse engineer all the UML diagrams for me, and allow me to select a variable level of drill-down for my documentation?

    The old staple of the ’70s, a rules-based pretty-printer…

    Seems to me that VS is in the ‘mature product’ part of the product lifecycle curve now, so some of these add-ons might get a look-in?  

    Do they feature in the wish list anywhere near the top? And are they moving up or moving down?

    Many thanks.

  6. Daniel says:

    I am looking forward to trying out the new features when VS 2010 comes out. I like the searching and IntelliSense improvements. Great article!

  7. Chris says:

    I think VS2008 is the best release of VS so far, really nice performance, and I look forward to VS2010.  The more you can use of WPF the better, Expression Studio 2 is a great example of what you can achieve from WPF.  Performance wise, startup time is a bit slower than VS2008, but acceptable, and well worth the better UI as a result.

    Keep up the good work!

  8. Mr Somasegar –

    While we are great admirers of the upcoming MSDN tools (e.g., VS2010) and we are all eagerly looking forward to it, MS seriously needs to fix current problems in CodePlex for the all developers. For example, download of SQL Server 2008 Sample databases and even other MS developer  items like IronPython 2.0 samples. The chronic problems of the CodePlex download mechanism is UNACCEPTABLE. To have a great product like SQL Server 2008 be stymied by incompetent engineers who can’t fix the download of the sample databases is unforgivable.

    Please look into it.

    With thanks,

    Supriyo "SB" Chatterjee

  9. Gopinath says:

    It is really nice to see these features in visual studio. I work on Java and try VS (mostly C#) for fun.. Most of the features you have explained are available in Eclipse (an IDE for Java) way long back.. I always miss those features when working in VS..

  10. Jean-Marie Pirelli says:

    Thanks for the insight on new features.

    VS is a great product, but it is always surprising to see that it is lacking a lot of helpful features that competing IDEs have. How about getting to subclasses of a class quickly ? To implementers of an interface ? Even getting to usages of an item involves what looks like a full-text search.

    I use Resharper to complement VS and this is almost a required buy to be productive.

    For a simple developer like me, MS reasoning of only providing bare-bones features is hard to understand.

    Do you do it to give ISVs some breathing room ?

    Best regards,


  11. Ed says:

    I imagine for the ReSharper developers to accomplish what they have took 5 times the work and brilliant problem solving than it should have because of the ugly, incomplete, COM based, buggy, 15 year old Visual Studio extensibility model.

    Perhaps Microsoft should simply buy ReSharper and their devs from Jet Brains and turn them loose to build the C# VS package.

    If that isn’t doable, the 2nd best thing you could do would be to put a switch into VS that enables us to JUST TURN OFF ALL OF THE VS FEATURES for specific file types so my computer quits wasting cycles on them because my third party add-in (e.g. ReSharper) is doing a better job, thank you.

  12. gOODiDEA.NET says:

    .NET 7 Good Rules to Log Exceptions State Machines With Enumerations Periodic Execution in .NET String

  13. gOODiDEA says:


  14. Hitesh Davey says:

    Hi Soma,

    MS VS team is doing good work on developer’s productivity side! That’s great! I am being a fulltime developer; I find it difficult to adopt C# programming. The only reason is C# is a CASE-SENSITIVE language. So I would like to suggest MS VS dev team to provide a project level option which indicates something like "OPTION CASE SENSITIVE OFF" in C# (By default, let this option be ON).

    This project level indicator will defiantly ease developer’s pain during C# coding! I wish you will take a note of this request and I hope to see this feature implemented in VS 2010 ver.

    Even if you put this feature request for developers survey, I am sure more than 90% of developers will agree to have a feature like this!


    Hitesh Davey

  15. Dave R. says:

    Wow, there seems to be a lot of negativity here! I’m looking forward to VS2010’s improvements and I believe they will counter a lot of the problems that we’ve experienced in 2005 and 2008. I just hope the help system doesn’t take longer to appear than it takes to open a web browser and Google the answer!

    With regard to Intellisense improvements, I can see a definite copying of third-party efforts here, but that’s cool. Could I make a couple of suggestions:

    – Highlight references should give me the _option_ of picking up all references, not just the specific overload (i.e. it would let me navigate all WriteLine calls in the example).

    – Make a different shortcut for activating the ‘Consume First’ completion mode. Isn’t it just quicker to press Escape to cancel the drop-down?

    Keep up the good work and here’s hoping that VS2010 will be more efficient and more productive for us all.

  16. Ayman Shoukry says:

    Hello Andre,

    Thanks for your feedback! We are be very much interested in investigating the crashes you have been seeing. Please feel free to contact me directly at aymans at microsoft dot com. I will be more than happy to connect you with the right folks to investigate the issue.

    Thanks and looking forward to your email.



  17. We have announced a list of new IDE features for managed languages in Visual Studio 2010:

  18. kfarmer says:

    @Hitesh:  Won’t happen, and I for one would refuse to allow it if it were my decision.

    If you want VB, use VB.  If you want C#, use C#.  Don’t try to make one into the other. The choice of language between those two is not particularly important. 🙂

  19. Keith Patrick says:

    I know this is asking a bit much, but I’d love to see a way to specify default region names for auto-gen’ed member stubs (like consume-first) rather than drop the stub immediately after where the usage is (i.e. Default Region for Constructor: "Constructors"

    Default Region for Field: "Private Fields"

    Default Region for Import: "Using Declarations"

  20. David Clary says:

    All I care about is the God-awful Ribbon that MS has ruined all of their "productivity" software with, and is apparently planning on destroying Windows 7 with.

    Please, tell me there’s no piece-of-crap Ribbon in VS2010, and that you didn’t go insane and get rid of all the menus?

  21. Mark Gordon says:

    The negativity on this blog is justified! Visual Studio has been out too long for the lack of "meaningful" features and bugs to still exist in this package. Microsoft is and has always been too fluff and bloat focused with VS.

    Most products stabilize after several releases and this package is in a constant state of choas or better said SUCK. Even the WPF IDE in 2010, which is needed like a hole in head, will not be finished at the time the product ships. Whatelse is new!

    Moveover the VS DATABASE language support and RAD features are still lagging pathetically FAR behind DOS development environments. Furthermore, important features like a true data centric language is NOT going to be included in 2010 which is utter NONSENSE.

    I can’t wait for the demise of Visual Studio and .BLOAT even thou that may not happen solely because of MSFT’S monopoly! Microsoft must be paying their cheerleaders a small fortune to spin this mess.

    And by the way I happen to strongly agree with the poster above that wants the ability to turn off case sensitivity in C#. Case sensitive languages are legacy, much like the .BLOAT framework (I used the framework term very loosely as this is not really a framework but merely api wrappers) under the hood.

  22. Paul Cornell says:

    Learn more about features such as Highlight References, Quick Search, Call Hierarchy, and Consume-First

  23. Sam says:

    Mark the problem is you, not 2010 or C#. If you don’t like microsoft’s products and just want to perform your regular cheerleading against visual studio, you should rather quit these blog posts and make your own IDEs and programming languages. lets see how many people in this world agree with your legacy views and strange old views.

    @Hitesh: C# is not VB. Stop trying to make one like the other in your mind. C# programmers don’t like VB because it is NOT case-sensitive in addition to the various other verbose and un-necessary syntax it carries with it. However, both work fine with most .net technologies – so there is no need for you to move to C# if you don’t like it.

  24. Is there any chance we finally get a searchable "Add References…" dialog where we can filter for what we actually look for?

    This would be an immense productivity booster.


  25. John says:

    I agree with Sam about Mark Gordon, he should go cheerlead somewhere else.  His posts on the blogs are the most arrogent, rude, insulting, unconstructive i’ve read in a while, and gives c++ developers a bad name.  Why not go use other tools if you are so unhappy about VS?  Why do you keep bashing something you obviously are not happy with?

  26. VSDeveloper says:

    Thanks, Somasegar, VS is getting more powerful with each new version and updates. I’m expecting more sample codes and sample projects to identify the usage and power of new features and enhancements in VS2010.

  27. Sam says:

    Here is the funny thing, Mark Gordon likes legacy stuff like VB and Foxpro and then he states: "Case sensitive languages are legacy" for C#. Give us a break from your double standards and conceited outlook!

    Most advanced languages in the past and present have case-sensitive approach and it makes sense for these languages. C# properties and local class variables are so easily understood because of case-sensitivity. 2010 will definitely be a good product as long as the improvements keep coming.

    Soma, where can we post ideas and suggestions for Office products? I would like to suggest that Office products have a search bar like in Expression blend to find commands easily or narrow down the ribbon to easily find commands. I’m pretty sure there is something like that already, but having it in-built into Office would be great!

  28. Mark Gordon says:

    @Sam I’m not sure which is more fun debating politics with a liberal or VS with a cheerleader.

    Man don’t you guys get it .NET is entirely based on LEGACY code the only thing new are the wrappers hiding the truth. Worse yet the .BLOAT wrapper create nothing but overhead in the application. .BLOAT is not a framework, new or some great technology innovation! It is smoke and mirrors! For example "Nativewindow" has been around since the begining of time and is the foundation for all .BLOAT usercontrols.

    The classbrowser completely sucks in VS and is almost as usless as refactoring, not too mention C++ intellisense is buggy and C99 is no longer a priority. Moreover the best data technology MSFT ever had for middle tier data components was VFP and they decided not to implement the core library into VS because THEY developed LINQ which they feel is better, yet LINQ can not even be used natively in the middle tier without helper objects due to the poor data context implementation besides that fact it now takes 100’s of lines of extra code to implement some of the same functionality we had natively in VFP.

    With all the areas that should be improved Microsoft in their ultimate wisedom decided to overhaul the UI and bloat it with WPF. Exactly what we need something new to learn that does that same thing. Sounds to me VISTA is infecting Visual Studio. But man it probably will look great on powerpoint presentations for conferences and marketing material.

    @John C++ programmmers that just go along with the spin and advocate using this abortion of a development tool "as is" are doing more harm then any negative comment I post. Just keep patting Microsoft on the head and avoid the reality of the situation that will do everyone a lot of good. Keep up the good work with enough sucking up you just might earn your MVP!

  29. Sam says:

    @Mark: LINQ to SQL is not LINQ’s sole purpose. I have used LINQ for simple data access scenarios and it works without any pain or issues. If you want to do more heavy lifting try ADO.NET Entity Framework or N-Hibernate. Why dont you give an example of any other company or open source stuff out there thats doing anything you are talking about and satisfies you. I am confident that with time Microsoft is going to improve upon Entity Framework. VFP is not a good option/solution for an application as a whole. You cannot build a good application by just focusing on Data Access. WPF and presentation is just as important as Data Access. Without good presentation – data is useless or meaningless.

    At the end of the day, it really doesnt matter what microsoft does internally to have their stuff working as long as a developer is satisfied that he/she can accomplish the task with ease and with confidence. Thats what matters. So your statements like "wrappers hiding the truth" carries no significance to the .net community.

  30. Mark Gordon says:

    @Sam N-TIER application scenarios is where LINQ falls apart not with simple data access scenarios.

    Moreover LINQ is really nothing more then generating SQL select statements that run on the sql server box. Which is ironic given this is the same argument against stored procedures in SQL Server! Bascially we have new technology behaving in the same fashion as 1990’s two tier paradigms. This is as pathetic as the lack of seperation in webforms which is why MICROSOFT is scrambling to copy the ruby MVC framework model and implement it in VS, given they can’t develop anything better on their own.

    In most situations EDM is not the "right" solution for numerous reasons but having said that it does have it’s niche. Moreover it still has stability issues and not ready for "prime time". There are better 3rd party ORMS out there that are "production ready".

    I’m not talking about using VFP as a whole, mainly for middle tier development however there are numerous situations where VFP was the "BEST" solution especially for medium size business LOB applications. Moreover, the VS class browser in terms of functionality is not even in the same league as the VFP class browser, the VS class browser is horrible! It is obvious your comment regarding VFP is baseless and you have no idea what you are talking about when it comes to VFP.

    I’m tired of all the cheerleaders carrying on about how VFP and VB are legacy when the entire foundation for .BLOAT is built upon LEGACY code! How is writing 100’s or 1000’s of lines of C# code to reproduce native functionality found in VB or VFP building applications with ease or being productive?

    You wrote  "Without good presentation – data is useless or meaningless." you have got to be joking me right. I can tell you buy 100% in the symbolism or substance argument. Therefore my friend if that is how you code then VS is the right development tool for your needs. By the way please let me know when you need to buy a car I will slap a new coat of paint on a beat up clunky and you should be very satisfied don’t even worry about the engine that paint job is all that is important.

  31. Sam says:

    @Mark: Name one 3rd party production ORM tool that works perfect for all scenarios. There are none. Thats why you could not name any. EDM is work in progress and so is LINQ. You can’t expect everything to be best at first release. Btw, I have worked with VFP back in 90s, it doesn’t even qualify to be in existence in the present day – and hence it is not. I don’t see any company/individual out there crying for VFP except you. And, no I’m not joking. Presentation is just as important as data. I never said one has more importance over the other. Its like 2 sides of the same coin. The presentation part in WPF is very important for applications. Microsoft has got that right – an there is no argument about it. The data part – Entity Framework and LINQ is work in progress.

    Yout other allegation about writing 100s or 1000s of lines of code to do data access is your ignorance. Investigate and learn how to write DAL and you won’t need to write more than a few lines of code.

    As for stored procedures – thats not going away. You can cry as much as you want. Stored procedures with datareader/datatable for data access is the FASTEST performant way to read data from SQL Server or any other database. Many performance intensive websites use this approach and cannot do with things like N-Hibernate, EDM or LINQ.

    As for your car analogy, try selling a beauty V8 without paint and lets see what you get…

  32. You’ve been kicked (a good thing) – Trackback from

  33. Publicación del inglés original : Viernes, 19 de diciembre de 2008 20:34 PST por Somasegar En una entrada

  34. Welcome to the 48th Community Convergence. The C# team continues to work hard to get out the next version

  35. Greg says:

    VS is a good development environment.  MS has done a good job of providing a decent development tool.  VS is suffering from a lack of maturity in lots of areas mainly because new technologies are introduced every 2 years and forced into VS.

    VS should be split into categories with extra emphasis on the fundamental ones.


     – Compiler, machine code generation and compiler diagnostic messages

           – Code quality/speed/size hasn’t been touched

             in 10 years since VS6 included Watcom’s

             code generator back end

     – Debugger, data inspectors

     – Profiler (code, function level and machine instruction level profiling like was build into VS6.)

     – Editor (text and code editor)

        – Code refactoring

     – Winforms GUI designer, web page designer

    Beyond fundamental:

    – SQL connection, dbobject inspection, and database handling tools

     – TSQL SQL code editor with refactoring support. This is an especially important area lacking in functionality.  

     – Object designer, database diagramming tools, etc

     – Metadata inspectors, class browser and tools based on reflected object data

    Other and tools of lower importantce (placed here as they are the least mature and not widely used given that 3/4ths of development is on existing legacy systems:

     – WPF

     – WWF

     – Silverlight

     – WCF and extensions beyond .NET 2.0 web services

    Generally, focusing on things that help TSQL developers (editor/refactoring) as well as legacy system developers would be most beneficial.  

    Addressing the fundamental areas would do much to quell the frustration with VS since VS has largely been focused on integrating the most recent buzz technology from MS instead of making the overall tool work better.

    MS should consider focusing on a set of core languages

    and core technologies and let the cutting edge technologies (i.e., with a short 2-3 year lifespan) be put as add ons to vS.

    Core languages:

      C# and C++

      Silverlight for feature rich, near winforms web pages

      A much simpler ASP replacement for basic web page layout letting silverlight do the heavy GUI tasks

    Core technologies

      .NET framework

      Silverlight run time



      TSQL tools

  36. Paul Cornell says:

    In this 19-minute video, you’ll learn about the new code editor in Visual Studio 2010. See:

  37. Tony Zoght says:

    Had to use Visual Studio to do some C# .NET development, I am a Java veteran using Eclipse for quite some time. Again, some of these features are already in place n Eclipse since 2003, 7 years to catch up, why is that ?

  38. Sanjay says:

    Tony Zoght’s said it – though I’ve used both Eclipse and VS.NET on and off, I’ve been with Eclipse for quite a while now and had expected these features to already be there in VS.NET – was quite surprised to know that they’re getting introduced now. Maybe Microsoft believes ‘slow and steady wins the race’ 🙂

  39. But thanks for this post – really informative overview of these new elegantly implemented features.

  40. S. Somasegar says:

    Hi Sanjay,

    Thx.  Sometimes, I do think "better late than never" :).


  41. Visual Studio 2010 Beta 1 Release

  42. Fleeb says:

    When I first learned to use Eclipse, I was like… "What on earth? Why don’t VS have these stuffs."? I am expecting things such as "Implement Accessors", "Implement Interface", "Create Constructors", and these kinds of stuff built-in to VS2010. Eclipse had these for a long time already. I am not saying Eclipse is perfect. In fact, there are things in VS that I also would like to see in Eclipse.

    Currently, I am evaluating a Beta version of VS 2010, which will help me in my buying decision for the standard edition. Unfortunately, what I have makes me somehow undecided yet 🙁

  43. ai says:

    is thebest aclipse and netbeans is you have visual basic