Future Focus II: Call Hierarchy

The success of the first Future Focus post has made it easy for us to continue sharing our plans for the future of the C# language. The intelligent and thoughtful suggestions we received from the community about the Dynamic Lookup feature have had a significant impact on the C# team’s plans for future releases of C#. The quality of your input was very impressive, and we sincerely thank you for your contributions.

Last month we looked at a C# language feature called Dynamic Lookup. This month we switch our focus to the Visual Studio IDE as we investigate a new feature named Call Hierarchy. This feature will be implemented the same way for both C# and VB developers. We will therefore ask for comments from both communities.

Changes for Future Focus

Your suggestions on Dynamic Lookup influenced not only the C# language, but also Microsoft’s plans for how we share information on future releases with the community. The management here at Microsoft believes that other teams will benefit from feedback similar to what was garnered from the Dynamic Lookup post. As a result, we have decided to continue our Future Focus discussions on the MSDN Code Gallery.

The Code Gallery is a good place for these discussions because it is language and team agnostic. My blog is directly associated with the C# team, and hence it is not the right place to share a discussion of the Call Hierarchy feature, which will be of interest to both the C# and the VB teams. We hope that other feature teams will also share their plans for future releases, and we feel that the Code Gallery is appropriate neutral ground on which they can share their ideas.

Code Gallery as a Discussion Forum

The Code Gallery is a location where many types of resources can be shared. Most of the resources on Code Gallery are sample programs. But the Gallery can also be used to host general discussions such as the type that occurs when we ask for feedback on our future plans.

The Code Gallery has a number of useful tools inside it, but it may take you a moment to become familiar with its structure. From the main page of the Code Gallery you can access the various resources stored on the site. If you go to the C# and Visual Basic Futures resource page, you will be able to read about and comment on our plans for these languages.

The futures resource features a set of tags which you can use to navigate through the site.


The Home tab can be selected when you want to see an overview of all the discussions that will be hosted on the site. Right now you will be able to find two links, one to the Dynamic Lookup page on this blog, and one to the new page set up for a discussion of the Call Hierarchy on the Code Gallery:

DynamicLookup for C# (Jan 25, 2008)
Call Hierarchy for C and VB (Jan 25, 2008)

After reading about the Call Hierarchy, you will find links inside the article that point you to the appropriate discussion area. You can also click on the Discussions tab. There you will find one or more discussions, each marked by an icon:


Click on the text next to the icon in the the Code Gallery in order to enter the discussion. There you can provide the team with your feedback. On occasion, we may break out a discussion into a sub-topic on the Issue Tracker tab. There you will be able to drill into a particular issue in more depth, and cast votes for features that you like or dislike.

We ask that you refrain from starting a separate discussion on a particular topic unless there is a real need to do so. If you discover such a need, please use the tagging system to associate your new discussion with a particular topic. For instance, if you are starting a new discussion on the Call Hierarchy feature, then associate the “Call Hiearchy” tag with that discussion. I will try to monitor the site so I can offer help to people if they need or want it.

We Want your Feedback

I’m interested in hearing your feedback about both our plans for the future of C# and VB, and the way that we share this information with you. If you have comments on our plans for Call Hierarchy, please share them on Code Gallery. If you want to comment on the Future Focus project in general, and the recent move to Code Gallery in particular, please reply to this post. Thank you again for your suggestions, they are a valuable aid to the team as we work on the development of future versions of the C# language.

kick it on DotNetKicks.com

Comments (25)

  1. You’ve been kicked (a good thing) – Trackback from DotNetKicks.com

  2. Anon. says:

    I am highly opposed to dynamic lookup. It should be implemented at the library level, NOT the language level. Easier syntax (more properly "syntactic sugar") is not compelling enough of a reason to further pollute the language.

    Most of the code that I develop and review need to be pure managed code with no (direct) interop in order to run on multiple platforms. COM and various other forms of native interop are essentially out of the question. When COM is necessary, I write it in C++.

    However, more than likely, any objections that I make will ultimately ignored and it will be implemented.

    As for call hierarchy, it is rightly an IDE feature and will be implemented at the IDE level, not the language. Thus, I am neutral.

    Note though that at the MSDN Code Gallery you must log in to post. I will only post anonymously, so if you want further feedback, that restriction will need to be changed or comments will need to be posted elsewhere.

  3. ccalvert says:


    Thanks for providing feedback. We listen to it carefully, and seriously consider the views that you express. The dynamic lookup feature will change as a result of feedback from the community, but the current plan is still to include it in the next version of the product.

    I’m sorry about signing in being necessary on Code Gallery. I’ll look into our options, but I don’t think we have the same level of control there that we do on these blogs.

    – Charlie

  4. Kaveh Shahbazian says:

    Will C# have syntax extension macros? It is a well known practice in Lisp world. In .NET there are some successful implementations like ones in BOO ans Nemerle. Of course what BOO and Nemerle provides are different than Lisp ones; yet they are very useful tools. Those syntax extensions are type-safe. Is there any plan to implement that in C# 3.5 or 4.0?

    (There are many other features that I like to have in my C# toolbox. Yet this one is the most important one to me and many of other features that I like to have; can be implemented easily via a stable well-designed macro system.)

  5. zzz says:

    Instead of this feature I’d rather see very easy way to open Reflector or have equal feature in VS so that if I’m calling to assembly I have no source for and it throws up some weird error I can quickly right click the call in VS and have Reflector drill in to see what’s going on there on the disassembly to C#/IL level without having to open up separate program and find where this method is!

  6. Thomas Krause says:

    First of all it is great that you plan to share more of your ideas with the community.

    I only have one problem with the code gallery:

    Is there an easy way to get notifications for future language future posts?

    The "wiki", "discussion" feeds on the top right are too often updated. I only want to keep track of the language future posts themself and not every post in the forum or every edit made in the wiki. Of course if you’ll link to future posts here on your blog (even if they are not directly c# related), this will be more than enough for me.

  7. ccalvert says:


    I will announce every C# related future’s post here on this blog, and will use the Future Focus tag to mark it. That way you can subscribe to the Future Focus RSS tag on this blog, and be automatically notified when a new post goes up.

    – Charlie

  8. Thomas Krause says:

    Thanks, I’m akready subscribed to your blog. Would you consider the current future focus c# related? I don’t care about VB for example, but everything I use to program in C# (like VS) is interesting for me and propably for most readers of your blog.

  9. zzz says:

    I’d like to see some justification over spending any effort toward this feature given that to me it reads like exactly the same feature *you already have* in Reflector, developed by MS employee correct? And that app does so much more that’s useful in debugging that it’s almost criminal to not have the functionality more integrated given everything else tends to be so well integrated.

  10. Gaurav says:

    that is very good plan to move to code gallery …i think…

    gr8 idea ..charlie..

  11. ccalvert says:


    My focus remains on C#, and most of what I write up here will be about C#. If it makes sense for C# and VB to work together on a project, as it did in the case of the Call Hierarchy feature, then I’m happy to combine our efforts. But this is primarily a C# blog.

    – Charlie

  12. Welcome to the forty-first Community Convergence. The big news this week is that we have moved Future

  13. Rob Grainger says:

    Generally, this is a move in the right direction. I concur with the idea to include much more Reflector-like functionality directly in the IDE.

    One of the areas the Eclipse IDE towers over Visual Studio is the great code-browsing tools: code outlining, call hierarchies, etc. Look and learn.

  14. ccalvert says:


    We definitely want to extend the code-browsing tools in Visual Studio. I have to be very careful about either accidentally pre-announcing something, and about promising something that might slip from the schedule. I can, however, say that at this time we intend to do more work in this area. Certainly I can affirm that we hear you loud and clear. You are making a good point, and the PM’s who drive this part of the product hear you very clearly and appreciate your feedback.

    – Charlie

  15. ccalvert says:

    Thomas and others who ask about the VB and C# issue as it touches Future Focus and my role in general. This blog and my focus is primarily on C#. If it really makes sense for me to talk about VB and C# at the same time, then I will do so just because it is the practical thing to do. But I’m like those electronic sheep, I dream in C#, not in VB.

    – Charlie

  16. Eye On .NET is periodical listing series for .NET(Blogs, Articles, Media, Events and Announcing) I hope

  17. Wardy says:

    I thought the tools were slowly pushing towards more visual representations of objects rather than a flat text file which is "structured" tools like the class designer would be extended to show embedded snippets that represent the currently clicked on object … or am i going totally out in the wrong direction here ?

    I wish bloggs were in C# and not english … i might understand them better 😉

    I would like to see some tools that allow more fluid programming for things like databases, eg dump a table on the class designer to see it generate a class that has methods to allow the table to be grabbed, updated, deleted with properties that reflect the table itself.

    Fairly usefull sort of stuff, or what about tools that promote good reuse of code for example an application often only works with 1 database and the connection string to that database is in the configuration file so why not offer an object that is much like the current command object but that you just throw a query at and it dumps you back a generic list or something ? This way you could execute queries that return complex xml with embedded objects (nested rows) in them dynamically.

    If that was drag and drop, I would get bored at work for lack of things to do 😉

  18. Ricardo Lacerda Castelo Branco says:

    I would like to see Static Extension Methods. It would be very usefull for creating special factories. For example:



  19. rdmiller says:

    (I am having a problem posting in that forum — I am signed in, and have a "sign out" button, but instead of a "post" option I have a "sign in to post" link which does nothing but bring me back to that page.)

    I think that this call hierarchy feature should not be treated as a C# enhancement.

    For example, consider how aspx pages can generate C# calls.  Also, we can have projects which make calls into other projects.  And then there’s remoting, and dynamically loaded assemblies, and sub classes generated using System.Reflection.Emit and other forms of indirection which can also be important.

  20. rdmiller says:

    (I am having a problem posting in that forum — I am signed in, and have a "sign out" button, but instead of a "post" option I have a "sign in to post" link which does nothing but bring me back to that page.)

    I think that this call hierarchy feature should not be treated as a C# enhancement.

    For example, consider how aspx pages can generate C# calls.  Also, we can have projects which make calls into other projects.  And then there’s remoting, and dynamically loaded assemblies, and sub classes generated using System.Reflection.Emit and other forms of indirection which can also be important.

  21. Andrew says:

    It is kind of interesting to finally get this information in VS, but it really isn’t that useful very often.

    It misses many important instances, the tricky ones, where I really want to know.  There isn’t much that can be done about that, though.

    I’d say just keep it simple.  Most other IDEs have a way to "find all references to this function", which is the most importannt one anyway.  Showing me the call graph for all potential data, not just the pieces I have now, isn’t terribly helpful.  Add it anyway, but there are probably more interesting/useful/long negelected features that could be done instead of this.  It’s not like VS has a lack of shortcomings.

  22. Rob Adrian says:

    I have suggested a code comment feature that would help to explain complicated code in pictures instead of words.  I would like to see the ability to embed a visio diagram into the code comment header of a class( or method?? ). Simple a new tag with intellisense <vision url=" " [browse] />  This would present with a [+] diagram or some such thing that would expand and collapse.

    Just an idea.  As an aside, I second the gentleman with the idea of embedded reflector for odd error investigation in compiled assemblies.



  23. visual studio 6 says:

    this feature used to be called caller/callee graph in c++ visual studio 6. why does it take so long to implement for .net languages?

  24. White pride worldwide.

    if (&&*&&)






  25. Steven Loewenthal says:

    The Future Prediction Web Blog is a Social Blog About Technology and Human Development