Visual Studio IDE

Announcement: Last fall, we migrated this forum to Visual Studio Developer Community to provide you one convenient and responsive system for all feedback. As the final step in the migration, this forum will be closed off completely on June 1st, 2019. We encourage you to visit Visual Studio Developer Community where you can now suggest new ideas, browse and vote on existing ideas, and engage with Visual Studio teams.

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. let enumeration types generated from C# code implement IEquatable<> and IComaprable<>

    When you create an enum in C# (with code like public enum FooBar { Alpha, Beta, Gamma, }), the resulting type does not implement the generic interfaces IEquatable<FooBar> or IComparable<FooBar>. Why not?

    If this was changed, enums could be used as parameters of the above types, or in constructing generic types where type parameters are constrained to be IEquatable<T>, and so on.

    (Enums already implement the non-generic IComparable through the non-generic base class System.Enum.)

    17 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  2. Allow for straightforward interface combination and instantiation

    A) Why not support straightforward interface instantiation, like this:

    interface IA { int X { get; set; }; }
    var a = new IA { X = 1 }

    You have gone so far to support anonymous type instantion, why not support this useful feature?!

    B) Also, defining an interface that combines other interfaces is already supported but cumbersome:

    interface IA { ... }, interface IB { ... },
    interface IC : IA, IB { ... }, class C : IC { ... }, var c = new C();

    Why not support something like this (type-wise):

    interface IA { ...…

    17 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  3. define null coalescing assignment operator (??=)

    instead of having to type:

    nullableInt = nullableInt ?? 0;

    let me do this:

    nullableInt ??= 0;

    17 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    5 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  4. Implement 'var' type inference for lambda expressions in C# similar to equivalent functionality in VB.Net

    VB.Net allows local variables to be initialized with a lambda expressions using type inference, as long as the parameter types are specified. For example:

    Dim f = function(x as Integer) x = 1

    In this case 'f' is inferred to have an anonymous function type described as "<Function(Integer) As Boolean>" that can be implicitly cast to any matching delegate type, such as Predicate(Of Integer) or Func(Of Integer, Boolean).

    Currently C# does not support this functionality. That is to say, the line:

    var f = (int x) => x == 1;

    results in a compile error (Cannot assign lambda expression to…

    16 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  5. C# Regex Literals - Seamless Regular Expression integration with .NET Framework and C# Language Grammar

    Create a seamless integration of the .NET library code base and language grammar with regular expressions, through new methods signatures and the lexical definition of regex literals.

    I want to able to write regex literals like:

    /[a-z]/cim // standing for new Regex("a-z", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline)

    I want to be able to write the following code:

    Instead of: "some string".Split(new char[] { ' ', '*' })

    It could be: "some string".Split(/[\s\*]/)

    And the same could work for Replace(), IndexOf(), Substring() and so on.

    Especially for replacing scenarios, a especial 'g' flag (or 'a') would mean global/all matches, for replacing…

    16 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  6. PopBrowseContext

    The command View.PopBrowseContext is no longer working, which is unfortunate, because I've used it a lot in the past. The command View.NagivateBackward is not the same thing!

    16 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  7. 16 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  8. Add Windows API support in C# .NET

    Using Windows API without manual import for each function.

    16 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  9. 16 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    4 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  10. Graying unreachable code blocks

    Provide heuristic that will be detecting unreachable code blocks and grayed them in editor

    16 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  11. End-of-line XML comments (in C#)

    So we could write compact comments for variables and still get the incredible advantage of intellisense tooltips.
    For example that would look like:

    int variable; /// <info>comment for variable</info>
    int anotherVariable; /// <info>comment for anotherVariable</info>
    int thirdVariable; /// <info>comment for thirdVariable</info>

    That would be so useful for long list of variables, and for enum members

    16 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we havenÕt acted on it. Looking at the VS Ò15Ó plans, weÕre not going to take action on this item, so weÕre going to close it. If the suggestion is still relevant, please either take a look to see if thereÕs another suggestion thatÕs similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  12. Allow nested comments

    It probably violates some standard but I find it extremely annoying that I can't nest comments without breaking them. Example:

    code line #1
    code line #2 /* This is comment #1 */
    code line #3

    Now I want to comment out all these lines like so:

    /* Comment #2
    code line #1
    code line #2 /* This is comment #1 */
    code line #3
    */

    The result is that comment #2 is ended by the ending of comment #1, and I get syntax error for the remaining lines.

    Is there a reason for this definition of the /* */ syntax?

    15 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  13. 15 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  14. Make events first class values in C#

    I would like to see events as first class values in C#. I want to be able to pass the event itself to methods and do something with it.

    Not having this language feature causes some clumsiness in several areas, like for example weak event handlers. Some pseudo-code:

    myObject.MyEvent += new WeakEventHandler<MyEventArgs>(
    HandlerToExecute, eh => myObject.MyEvent -= eh);

    With events events as first class values, this could be more like:

    WeakEventHandler.Create(myObject.MyEvent, HandlerToExecute)

    Making use of type inference and getting rid of the lambda that just feels like I'm repeating myself, but that is currently needed in order to be able…

    15 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.
    - The Visual Studio Team

  15. Generics parameters with generics parameters

    Allow generic parameters to have generic parameters:
    e.g. class A<T> where T : <T1>

    so we can create it like: A<IList>
    It can be very usefull if we'd like to write haskell-monad-style code:

    interface IMonad<T,TMonad> where T : class
    where TMonad : <TMonad1>, IMonad<T,TMonad>
    {
    TMonad<TResult> With<TResult>(Func<T,TMonad<TResult>> f);
    TMonad<TResult> With<TResult>(Func<T,TResult> f);
    }

    example implementation:

    class Maybe<T> : IMonad<T,Maybe> where T : class
    {
    private T _o;

    public Maybe(T o)
    {
    _o = o;
    }

    public Maybe<TResult> With<TResult>(Func<T,Maybe<TResult>> f)
    {
    if(_o == null) return new Maybe<TResult>(null);
    return new Maybe<TResult>(f(_o)._o);
    }

    public Maybe<TResult> With<TResult>(Func<T,TResult> f)
    {
    if(_o == null) return new Maybe<TResult>(null); …

    15 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we havenÕt acted on it. Looking at the VS Ò15Ó plans, weÕre not going to take action on this item, so weÕre going to close it. If the suggestion is still relevant, please either take a look to see if thereÕs another suggestion thatÕs similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  16. 'and', 'or' operators instead of &&, ||

    I really wish to use real keywords 'and' and 'or' instead of using ugly and obscure symbols && or ||. It will make code much more readable.
    For instance in c/c++ you can overcome this issue using <ciso646>.

    15 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  17. Add C# project macros like those in C++ to enable better pre/post build scripts

    The available macros for C# projects is very limiting. Creating a post build script that runs the correct version of regasm.exe, for example, is much more difficult than it should be and requires hard-coding directories.

    Macros like the ones available for C++ projects (SDK directory, version, etc...) should be included.

    15 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  18. 15 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we havenÕt acted on it. Looking at the VS Ò15Ó plans, weÕre not going to take action on this item, so weÕre going to close it. If the suggestion is still relevant, please either take a look to see if thereÕs another suggestion thatÕs similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  19. Support Microcontroller Programming with C# and VB.net Like microchip PIC Family and Atmel

    we are an Interface programmers , we would like you to add Microcontrollers programming in the next version to let us developing hardware programming side by side with software interfcae programming.

    15 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  20. Add Release-Only try-catch to C# and other languages

    Deploying an event-driven software, it's a common practice to encapsulate top-most function calls and/or event handlers with general try-catch blocks to deliver an error description to the user instead of just having him/her see the software exiting unexpectedly when unexpected exceptions occur.

    Unfortunately, during debugging it is most annoying to reach these log entries or message boxes instead of having Visual Studio halt at the position where the exception is *thrown*.

    At the time of writing it is possible to designate particular exception types to halt the debugger when they are actually thrown (this is done in VS2010 > Debugging…

    14 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    4 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

Feedback and Knowledge Base