Visual Studio

Welcome to the Visual Studio UserVoice site. Let us know what you would like to see in future versions of the Visual Studio suite of products. This site is for suggestions and ideas. If you need to file a bug, visit the Visual Studio Connect site: http://connect.microsoft.com/visualstudio.

ASP.NET Runtime/Web Tooling suggestions have moved! All your ideas, including your votes, have been transferred and are searchable in the ASP.Net Uservoice forum. Please submit any new ASP.NET Runtime/Web Tooling suggestions, or vote on existing suggestions by going to http://aspnet.uservoice.com.

We look forward to hearing from you!

Thanks – Deon Herbert
Visual Studio Team

Terms of Service and Privacy Policy

I suggest you ...

You've used all your votes and won't be able to post a new idea, but you can still search and comment on existing ideas.

There are two ways to get more votes:

  • When an admin closes an idea you've voted on, you'll get your votes back from that idea.
  • You can remove your votes from an open idea you support.
  • To see ideas you have already voted on, select the "My feedback" filter and select "My open ideas".
(thinking…)

Enter your idea and we'll search to see if someone has already suggested it.

If a similar idea already exists, you can vote and comment on it.

If it doesn't exist, you can post your idea so others can vote on it.

Enter your idea and we'll search to see if someone has already suggested it.

  • Hot ideas
  • Top ideas
  • New ideas
  1. Debug Lambda expressions

    Allow Quick Watch and other Debug functions to work with Lambda expressions.

    "Expression cannot contain lambda expressions" makes this powerful language feature second-class within the IDE.

    Especially for data intensive applications being able to write Lambda expressions in the Quick Watch, Watch, Immediate Windows and debug evaluation is a must have.

    8,902 votes
    Vote
    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      I agree to the terms of service
      Signed in as (Sign out)
      You have left! (?) (thinking…)
      under review  ·  62 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
    • Add "?." operator to C#

      Add the "?." operator to C# and make it chainable like CoffeeScript so we don't have to write null reference checks for every nested property. An example would be:
      myObject?.Items?.[0]?.DoSomething()

      5,363 votes
      Vote
      Sign in
      Check!
      (thinking…)
      Reset
      or sign in with
      • facebook
      • google
        Password icon
        I agree to the terms of service
        Signed in as (Sign out)
        You have left! (?) (thinking…)
        204 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

        We are seriously considering this feature for C# and VB, and will be prototyping it in coming months. Syntax in C# would be

        e?.x // member access
        e?.M(…) // method invocation
        e?[…] // indexing

        Semantically this will be similar to

        (e == null) ? null : e.x

        etc., except that e will only be evaluated once of course.

        If the type of e.x (etc) is a non-nullable value type S, then the type of e?.x is S?. Otherwise the type of e?.x is the same as that of e.×. If we can’t tell whether the type is a non-nullable value type (because it is a type parameter without sufficient constraints) we’ll probably give a compile-time error.

        Thanks for all the great comments!

        Mads Torgersen
        C# Language PM

      • I wish catch multiple exceptions in the same catch

        For example:

        try
        {
        // smth}
        catch (RemoteException, NamingException , CreateException e)
        {
        // smth
        }

        1,611 votes
        Vote
        Sign in
        Check!
        (thinking…)
        Reset
        or sign in with
        • facebook
        • google
          Password icon
          I agree to the terms of service
          Signed in as (Sign out)
          You have left! (?) (thinking…)
          54 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
        • Add non-nullable reference types in C#

          Non-nullability checks have to be manually encoded hundreds of times in any large real-world project, and they are not compile-time-enforced. There are code contracts in .Net 4.0, but their usage is still very verbose, and only partly compile-time-enforced.

          What I wish is a pendant to the null-lifting operator ?, for instance, !, so that one could write:
          void MyMethod(string! s){ /* s cannot be null :) */}

          Or, the way ReSharper does it:
          void MyMethod([NotNull] string s){ /* s cannot be null :) */}

          1,441 votes
          Vote
          Sign in
          Check!
          (thinking…)
          Reset
          or sign in with
          • facebook
          • google
            Password icon
            I agree to the terms of service
            Signed in as (Sign out)
            You have left! (?) (thinking…)
            46 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
          • Allow "default" values on automatic properties

            When using auto-properties, I should be able to set a default value without having to create a constructor, like I can with a field:

            Something like:
            public bool IsActive = true { get; private set; }

            1,321 votes
            Vote
            Sign in
            Check!
            (thinking…)
            Reset
            or sign in with
            • facebook
            • google
              Password icon
              I agree to the terms of service
              Signed in as (Sign out)
              You have left! (?) (thinking…)
              69 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

              It is our plan to add this feature to C#.

              The syntactic form of it will be to put an initializer at the end of the auto-property declaration, just like for field initializers:

              public int X { get; set; } = x;

              The initializer directly initializes the underlying field – it doesn’t go through the setter. For that reason, it is now meaningful to allow getter-only auto-properties:

              public int Y { get; } = y;

              For getter-only auto-properties, we would generated the backing field as readonly.

              Thanks for all the great comments and suggestions! We looked at the feedback in our design discussions, and ended up deciding that this was the best approach all up.

              Mads Torgersen, C# Language PM

            • Update standalone FxCop to support .NET 4.5 and Portable Libraries

              Please update the standalone version of FxCop to be on par with the latest edition of the Code Analysis in VS 2012 to support developers using the Professional Edition SKU. This implies support for .NET 4.5 and for Portable Libraries.

              1,127 votes
              Vote
              Sign in
              Check!
              (thinking…)
              Reset
              or sign in with
              • facebook
              • google
                Password icon
                I agree to the terms of service
                Signed in as (Sign out)
                You have left! (?) (thinking…)
                48 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
              • Expand Generic Constraints for constructors

                Currently when declaring a generic constraint on a Type parameter
                ie.
                public void DoSomething<T>() where T : new() { /* do something */ }

                You can't specify that T has a constructor with specific parameters:
                ie.
                public void DoSomething<T>() where T : new(string, int) { /* do something */ }

                997 votes
                Vote
                Sign in
                Check!
                (thinking…)
                Reset
                or sign in with
                • facebook
                • google
                  Password icon
                  I agree to the terms of service
                  Signed in as (Sign out)
                  You have left! (?) (thinking…)
                  15 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                • Greatly increase support for GPU programming in C#

                  -Support GPU programming in C# -both general and graphical- on at least equal level with C++. On every Microsoft platform.
                  -Design the future versions (or successor) of DirectX with C# in mind.

                  995 votes
                  Vote
                  Sign in
                  Check!
                  (thinking…)
                  Reset
                  or sign in with
                  • facebook
                  • google
                    Password icon
                    I agree to the terms of service
                    Signed in as (Sign out)
                    You have left! (?) (thinking…)
                    17 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                  • Improve code analysis

                    Improve code analysis
                    - Detect when first line of if block and else block are identical (same for last line)
                    - Detect methods used only one time - Method is a candidate for in-lining
                    - Detect constant defined in class used only one time
                    - Detect private property with backing variable having get { return backingVariable; } set {backingVariable=value;} - convert to autoproperty
                    - Detect public property used only within the same class - make it protected/private
                    - Detect public method used only within the same class - make it protected/private
                    - Detect class used only by one other class…

                    824 votes
                    Vote
                    Sign in
                    Check!
                    (thinking…)
                    Reset
                    or sign in with
                    • facebook
                    • google
                      Password icon
                      I agree to the terms of service
                      Signed in as (Sign out)
                      You have left! (?) (thinking…)
                      11 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                    • String interpolations in C#

                      Enable string interpolations in C#.

                      The interpolation should happen during compile time, so there are no performance penalties paid during runtime.

                      The Boo implemenation is a good place to start:
                      http://boo.codehaus.org/String+Interpolation

                      These should work:

                      var a = "Now is $(DateTime.Now)."
                      var b = "Tomorrow will be $(DateTime.Now.AddDays(1))"
                      var c = "This list has $(list.Count()) items."

                      718 votes
                      Vote
                      Sign in
                      Check!
                      (thinking…)
                      Reset
                      or sign in with
                      • facebook
                      • google
                        Password icon
                        I agree to the terms of service
                        Signed in as (Sign out)
                        You have left! (?) (thinking…)
                        43 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                      • INotifyPropertyChanged

                        Provide a way for INotifyPropertyChanged to be implemented for you automatically on class.

                        Provide a way for INPC to be done on auto properties (that you mark in some way)....so that you don't have to unroll the auto property into a field, and raise yourself.

                        702 votes
                        Vote
                        Sign in
                        Check!
                        (thinking…)
                        Reset
                        or sign in with
                        • facebook
                        • google
                          Password icon
                          I agree to the terms of service
                          Signed in as (Sign out)
                          You have left! (?) (thinking…)
                          16 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                        • Enable HLSL, DirectX and graphics development toolset for the C# language.

                          Visual Studio only provides hlsl compilation tools for C++ projects, while C# projects which also use hlsl are left without this facility. This is a glaring inconsistency in the tools provided to each language. C# is meant to be a first-class language yet the DirectX tools which are built in to Visual Studio are not equally provided to C#, this is an unnecessary and arbitrary limitation.

                          Developing DirectX applications with C# is becoming easier and there are now more tools than ever to work with this combination of technologies, including SlimDX and SharpDX, both fully capable managed DirectX frameworks (wrappers).…

                          495 votes
                          Vote
                          Sign in
                          Check!
                          (thinking…)
                          Reset
                          or sign in with
                          • facebook
                          • google
                            Password icon
                            I agree to the terms of service
                            Signed in as (Sign out)
                            You have left! (?) (thinking…)
                            5 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                          • Basic Refactoring Functionality needed

                            Right now when I want to make a section of code a method or make some simple refactoring, its not in the box. Rename is there, but its local to the page and doesn't go deep enough. The top 5-10 refactoring types should come in the box.

                            Merged from another idea: Improve the refactoring tools like code generation, rename, etc.

                            487 votes
                            Vote
                            Sign in
                            Check!
                            (thinking…)
                            Reset
                            or sign in with
                            • facebook
                            • google
                              Password icon
                              I agree to the terms of service
                              Signed in as (Sign out)
                              You have left! (?) (thinking…)
                              14 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                            • C# support static extension methods like f#

                              C# support static extension methods like f#

                              454 votes
                              Vote
                              Sign in
                              Check!
                              (thinking…)
                              Reset
                              or sign in with
                              • facebook
                              • google
                                Password icon
                                I agree to the terms of service
                                Signed in as (Sign out)
                                You have left! (?) (thinking…)
                                10 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                              • C# REPL - execute one-off C# code on the fly from within VS

                                I'd like to see a full read/eval/print loop for C# built into Visual Studio - much like F# Interactive, or Ruby's "irb".

                                When debugging, this would let you interact with the current state of the debugged application - like the Immediate Window does now, but more powerful (e.g. with support for lambdas).

                                When in design/editing mode, this would work a lot like LinqPad, but integrated into the IDE. It would let you evaluate expressions and execute multi-statement code blocks. This would let developers interactively experiment with their application classes ,.NET framework classes, and third-party APIs while writing code in Visual…

                                400 votes
                                Vote
                                Sign in
                                Check!
                                (thinking…)
                                Reset
                                or sign in with
                                • facebook
                                • google
                                  Password icon
                                  I agree to the terms of service
                                  Signed in as (Sign out)
                                  You have left! (?) (thinking…)
                                  under review  ·  3 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                • Allow Extension Properties

                                  I would like to be able to write extension Properties, not only extension methods.

                                  391 votes
                                  Vote
                                  Sign in
                                  Check!
                                  (thinking…)
                                  Reset
                                  or sign in with
                                  • facebook
                                  • google
                                    Password icon
                                    I agree to the terms of service
                                    Signed in as (Sign out)
                                    You have left! (?) (thinking…)
                                    6 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                  • allow extension methods to be defined in instance classes

                                    Currently, extension methods can only be defined in a static class. It would be very helpful if an extension method could also be defined in an instance class, so that this was possible:

                                    public class Foo
                                    {
                                    public void DoBar()
                                    {
                                    new Qux().GetBaz("corge").DoGrault();
                                    }

                                    private static Baz GetBaz(this IQux qux, string s)
                                    {
                                    // Get Baz from qux here...
                                    }
                                    }

                                    This simply enables a more fluent syntax for private helper methods. This can improve readability of the code compared to a more procedural-looking use of normal static helper methods.

                                    The current workaround is to define a new internal static…

                                    375 votes
                                    Vote
                                    Sign in
                                    Check!
                                    (thinking…)
                                    Reset
                                    or sign in with
                                    • facebook
                                    • google
                                      Password icon
                                      I agree to the terms of service
                                      Signed in as (Sign out)
                                      You have left! (?) (thinking…)
                                      7 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                    • Bring back incremental C# compilation

                                      When coding Java in Eclipse, the compiler incrementally compiles the project in the background every time a file is saved. This way, when the user clicks run, the launch is instantaneous, rather than the long build process that comes with C#. This makes it easier to develop and test small changes, which in turn makes it easier to find and fix bugs.

                                      The C# compiler originally had this functionality, but it was removed when .NET 2.0 arrived as it could sometimes cause problems. However, given that it been proved possible in an equivalent language by the Eclipse team, coupled with…

                                      322 votes
                                      Vote
                                      Sign in
                                      Check!
                                      (thinking…)
                                      Reset
                                      or sign in with
                                      • facebook
                                      • google
                                        Password icon
                                        I agree to the terms of service
                                        Signed in as (Sign out)
                                        You have left! (?) (thinking…)
                                        8 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                      • XML comments schema customization in C#

                                        Allow to customize the XML tags recommended for use in XML inline comments for documentation.

                                        Just as in VB, a CSharpXMLDoc.xml could be saved in AppData to pass C# editor the customized XML elements.

                                        287 votes
                                        Vote
                                        Sign in
                                        Check!
                                        (thinking…)
                                        Reset
                                        or sign in with
                                        • facebook
                                        • google
                                          Password icon
                                          I agree to the terms of service
                                          Signed in as (Sign out)
                                          You have left! (?) (thinking…)
                                          13 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                        • Compliable strings

                                          If you're writing a tracing and logging component you may well want to pass the current method name to your logging component. Rather than hard code it (then forget to change it when you change the method name) you can use reflection and the MethodBase class to retrieve the name:
                                          System.Reflection.MethodBase currentMethod = System.Reflection.MethodBase.GetCurrentMethod();
                                          System.Diagnostics.Debug.WriteLine(currentMethod.Name);
                                          System.Diagnostics.Debug.WriteLine(currentMethod.DeclaringType.Name);
                                          System.Diagnostics.Debug.WriteLine(currentMethod.DeclaringType.Namespace);

                                          In C # 4.5 you can use attributes System.Runtime.CompilerServices.CallerMemberNameAttribute, System.Runtime.CompilerServices.CallerFilePathAttribute and System.Runtime.CompilerServices.CallerLineNumberAttribute for such purposes.

                                          Frequent use of reflection dramatically reduces performance. Using special attributes is a contentious issue. Because attributes inherently are declarative. They obviously do not provide full support for the…

                                          267 votes
                                          Vote
                                          Sign in
                                          Check!
                                          (thinking…)
                                          Reset
                                          or sign in with
                                          • facebook
                                          • google
                                            Password icon
                                            I agree to the terms of service
                                            Signed in as (Sign out)
                                            You have left! (?) (thinking…)
                                            7 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                          ← Previous 1 3 4 5 29 30
                                          • Don't see your idea?

                                          Feedback and Knowledge Base