Visual Studio IDE

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, you can visit our Developer Community website to get started. 

For suggestions for improvements to other developer products, see these sites:

To review the current UserVoice statuses and their definitions, please review our “What Does the Status of My Feedback Mean?” article.

We look forward to hearing from you!

- The 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 support and comment on it.

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

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

  • Hot ideas
  • Top ideas
  • New ideas
  • My feedback
  1. Support more than one .NET language within a project

    I would like to use C# or VB.NET along side F# within the same project without being forced to place that code in it's own project. The language of each code file would be determined by it's file extension as it is now. They all compile to IL, so it shouldn't be a problem to link them all together into one DLL.

    For backwards compatibility with existing .csproj, .vbproj and .fsproj files, there would probably need to be a new project format -- something like .netproj that would support multiple language code files.

    174 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 →
    • Caller Info attribute [CallerMemberNamespace]

      Just have seen the "Future Directions for C#" video.

      The Caller Info attributes

      [CallerFilePaht]
      [CallerLineNumer]
      [CallerMemberName]

      are very helpful, but missing the

      [CallerMemberNamespace]

      attribute.

      163 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…)
        9 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
      • Support for immutable objects

        Use some ideas of F# for C#. For instance, it would be very nice to have support for immutable objects, like immutable lists etc. with low costs for list changes. Also, a keyword to declare a class explicit as immutable would be helpful.

        163 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…)
          12 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
        • New VS option to have fully qualified using definitions inside the namespace

          It would be nice it there were an option to specify if using definitions, added inside a namespace, should be added fully qualified or shortened using the "Quick Fix" command.
          Current it's only possible to add shortened usings, which leads to a strange sorting order for sub-namespaces (and doesn't give that good of an overview what namespaces are used in that scope).
          Also the current Visual Studio 2015 feature removes the empty line that separates the using definitions and the class documentation comment, that should probably just be fixed.

          For details and some screenshots of the current behavior see: https://social.msdn.microsoft.com/Forums/en-US/visualstudiogeneral/thread/8673cc0c-679c-493a-baa3-611a33acdc18/

          159 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…)
            2 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
          • Add an 'Ignore space...' for all format options

            Autoformat can be great, but it can also greatly work against when you have some exceptions.

            Please add option to turn off all whitespace autoformatting.

            I never hit accidentally the space button, and I'm also perfectly well to press the space button when I do want a space.

            159 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 →
            • Add support for Java style "throws" keyword

              In Java, "throws" keyword is used in method signatures, informing about the exceptions may arise from this method.

              public void ReadFile() throws IOException, FileNotFoundException { ... }

              When developer use this method, Java compiler forces the developer to implement an exception handling strategy, surrounding this method with try-catch, or adding these exceptions to the new method's signature..

              public void UseReadFile()
              {
              try {
              ReadFile();
              }
              catch(IOException ioex)
              { ... }
              catch(FileNotFoundException fnfex)
              { ... }
              }

              public void UseReadFile throws IOException, FileNotFoundException
              {
              ReadFile();
              }

              157 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…)
                45 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
              • Allow to have custom delimiters in raw string literal

                C++11 (and some others languages) allow you to define custom delimiters for litterals string. It allows you to copy and paste xml, html , ... easily in you code without have to double " .
                For inst(taken from wikipedia on c++11)

                R"(The String Data \ Stuff " )"
                R"delimiter(The String Data \ Stuff " )delimiter"

                156 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…)
                  4 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                • C# Script window similar to LinqPad

                  I want to be able to write scripts to try out things that I would normally create a console application for. It should be really easy to reference projects from the solution that I have currently open and all editor features should be enabled, such as refactoring and intelisense.

                  Ideally after I have written code in a script I would then be able to easily move it into one of my projects.

                  151 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…)
                    4 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                  • New projects treat compiler warnings as errors by default

                    All new project templates will set the "treat warnings as errors" flag to true by default.

                    143 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 →
                    • Provide simple syntax to create a weak-referenced eventhandler

                      The by far most common memory leak people introduce in .NET apps are caused by event handlers added to longer-lived objects. For instance an event on a static instance, or on an instance who's lifetime is the entire app lifetime (like app view model or app settings).
                      Listening for events on this from a shorter-lived object, makes this short-lived object hang around in memory until the app stops running. A common scenario is the INotifyCollectionChanged event listened to by a XAML control, with data coming from a collection provided by some app state. This will cause a very memory-consuming object…

                      129 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…)
                        4 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                      • Add Type Provider to C#

                        F# 3.0 introduced a new feature call "Type Provider" that speed up development when accessing internet web services such as Azure Market, OData and many other. the "Type Provider" integrate the web service data into a type-safe .Net classes including IntelliSense.
                        support!

                        a good document about it can be found at http://research.microsoft.com/apps/pubs/?id=173076

                        Please add this feature into C# compiler

                        126 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…)
                          2 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                        • Enable turning off Roslyn Code Fixes

                          I would like to speed up Visual Studio 2015 by disabling the analysis of my sourcecode by Roslyn (code analysis, code fixes, analyzers, etc) when I am working in C# projects. In previous releases of Visual Studio there were two options in the Tools menu >> Options >> Text Editor >> C# >> Advanced:

                          - Underline errors in the editor
                          - Show live semantic errors

                          I am a user of ReSharper, so I do not need this functionality. The reason I think Roslyn is causing the slow-down is that when I use the same version of ReSharper in VS2013, I…

                          125 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…)
                            4 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                          • Allow multiple inheritance from classes

                            If you inherit from a class in the framework or another third party library it would be great, if I could add stateful methods and properties - not extension methods. The easiest way would be multi inheritance. C++ can do so, so C# should allow this too. To add a simple Method for logging you have to write code over and over again.

                            123 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…)
                              23 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                            • Support for Macros in Debugging Command Line Arguments and Executable path for C# solutions

                              I am working on an Excel addin written in C#.

                              One thing that is very painful is that there is no support for Macros in the command line arguments and executable path in C# debugging panel.

                              i.e. when you are working on an Excel addin, typically you need to launch Excel.exe with your addin on the command line arguments.

                              What I would really need is to be able to enter

                              1 - $(EXCELPATH) in the Start External Program textbox and I would set ExcelPath somehow externally.

                              2 - $(TargetDir)/Myaddin.xll as command line arguments

                              Unfortunately for C# solution, these macros/envvars are…

                              120 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…)
                                2 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                              • make dedicated C# syntax for IEnumerable<T> type definitions

                                Just like Nullable<int> can be written as int? I would like to be able to write int* in stead of IEnumerable<int>. This would of course also work for reference types like a custom defined Person class. IEnumerable<Person> would then be equivalent to Person*.

                                IEnumerable<T> has become a very important type within the .NET framework and in my opinion it would make sense to include some minor syntax in the C# language to avoid to have to write the types rather long name for example when defining method parameters and return values that are enumerable. The 'var' keyword isn't allowed everywhere…

                                116 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 →
                                • Create a StackSaver class to facilitate State Management

                                  Today the C# compiler is capable of creating a State Machine for us when a method returns IEnumerator or IEnumerable.
                                  But, the state machine itself can be useful for void methods, but that's not all. Methods written that way must have a specific return type. I think it can be better if a class is created that "saves the stack values" and returns to the caller when the "YieldReturn" method is called (it can have a void version and a generic version for the return type).

                                  Its usage could be like:
                                  var stackSaver = new StackSaver(someDelegate);
                                  At any point I…

                                  113 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…)
                                    9 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                  • Don't create asterisk for new lines within block comments in C#

                                    In languages like C and C# you can create block comments like this /* ... */. When you press enter within one of these VS thinks it is being helpful by adding an extra space and asterisk like this:

                                    /*
                                    *
                                    *
                                    */

                                    This is really anoying! Every time I press return I then have to press backspace twice as well!

                                    I am aware that this can be turned off unchecking the "Generate XML documentation comments for ///" option, but there are two things wrong with that: First I do want to create XML documentation and second the wording of…

                                    110 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…)
                                      9 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                    • Intellisense in XML Documentation For <exception>, <see> and <seealso>

                                      I'm often adding <see cref="Type"> or <see cref="Type.Member"/> elements to the /// comments in C# code. When writing them, I have to type (or copy-paste) the full name of the type/member I'm referencing.

                                      There should be Intellisense similar to when writing actual code available when using the <exception>, <see> and <seealso> tags.

                                      108 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 →
                                      • Improve Asynchronous Programming Model

                                        The asynchronous programming model introduced in .NET with the async/await keywords was a step in the right direction and a great improvement over previous design, but there are a few fundamental and disruptive qualities to it that need addressing:

                                        1) Zombie-code. This is the biggest issue with .NET asynchronous programming model currently. Once asynchronous code finds its way into your code base, all code referencing it (and being called from it) must also start to incorporate asynchronous keywords and functionality. This results in a phenomenon which has been described as "Async Zombie Infection." It would obviously be great/ideal not to…

                                        104 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…)
                                          24 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                        • String Enum for both C# and VB

                                          The underlying type for an Enum is integer based; but I was wondering if it were possible to have a Enum that were String based. Not sure if it's even possible make sense; but it would save some time creating wrapper classes for String constants.

                                          104 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 →
                                          • Don't see your idea?

                                          Feedback and Knowledge Base