Visual Studio IDE

Announcement: This forum has been migrated to provide our customers one convenient and responsive system for all feedback. You can now suggest new ideas, browse and vote on existing ideas in the Visual Studio Developer Community. To learn more about the migration to Visual Studio Developer Community please check out the release blog post.

We’d like your suggestions and ideas to help us continuously improve future releases of Visual Studio, so we’ve partnered with UserVoice, a third-party service, to collect your feedback. Please do not send any novel or patentable ideas, copyrighted materials, samples or demos for which you do not want to grant a license to Microsoft.

This site is for feature suggestions; if you need to file a bug, you can visit our Developer Community website to get started.

Note: your use of the portal and your submission is subject to the UserVoice Terms of Service & Privacy Policy and license terms.

We look forward to hearing from you!
- The Visual Studio Team

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 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.

    165 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    12 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  2. 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.

    113 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    8 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  3. 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.

    2,638 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    34 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  4. 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.

    169 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    10 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  5. Allow Extension Properties

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

    1,694 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    15 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  6. Add mixins to C#

    Adding mixin functionality enables true duck typing within the language and makes things like IOC and Dependency Injection so much easier. It's the next logical progression from the dynamic type.

    217 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    8 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  7. Bring back DirectX to C#!!!!

    DirectX should be brought back to C#/VB.Net - it was such a good and powerful tool and since it has been scrapped I found it very difficult to develop any form of sound system software! DirectX or at least a better alternative!

    185 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    10 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  8. 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…

    557 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    12 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  9. Make Intellisense snappier

    Intellisense for VB, C#, C++ should be faster.

    248 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  10. 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();
    }

    161 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    45 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  11. Make namespace configurable for folder

    The namespace for new files created are automatically determined by the folder structure.
    This often creates a problem if you wish to make a logical group of files (by placing them in a folder) that is not supposed to be a new namespace.
    Creating the folder and moving the files is not a problem, but the trouble starts as soon as someone uses 'add class' on the folder.
    Now the new file does not sit in the same namespace as the other files in the folder.

    One example would be to use a folder to store partials of a big…

    243 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    13 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  12. 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.

    106 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    7 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  13. 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.

    138 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    23 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  14. 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.

    182 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    14 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  15. 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 */ }

    3,388 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    34 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  16. 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…

    121 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    9 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  17. Add support for ISupportInitialize on object initializers

    Quite often, it's necessary to validate an object state when it's initialized. With constructor arguments, this is easy to do as it can be done at the end or begining of ctor code. With object initializers, it's nearly impossible, as there's no way to know programatically when the object initialization is finished.

    There's a built-in mechamis for this that is being used in WinForms and WPF: the ISupportInitialize interface. The initialization code generated by both toolkits checks to determine if the object implements the interface. If it does, it will call BeginInit() before invoking all property setters, and EndInit() at…

    252 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    6 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  18. Return Multiple values from functions effortlessly without creating new classes for everything

    When you think of it, its silly that methods by default can only return one value, but can take many arguments. Often times you want many return values, but it would be too painful to create classes/structs for each set, so often developers decide to then use ref or out parameters.

    Instead what if method/function calls could return many values without the need to define a class/struct.
    This example is a bit contrived but this shows the power of the fact that error information and values can easily be returned al at once.

    Syntaxt like:

    private {int index, bool IsError=false,…

    353 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    53 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  19. 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.

    157 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    4 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  20. C# REPL - execute one-off C# code on the fly from within VS

    This suggestion is migrated to Developer Community. Please use below link to view the current status.
    https://developercommunity.visualstudio.com/content/idea/351177/c-repl-execute-one-off-c-code-on-the-fly-from-with.html
    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…

    736 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    under review  ·  8 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

Feedback and Knowledge Base