Visual Studio 2015

Welcome to the Visual Studio 2015 UserVoice site. This site is for suggestions and ideas for the IDE of Visual Studio (Community, Professional or Enterprise). You can also add suggestions for Team Services or Visual Studio Code. Or go to Connect to file a bug. Note that Application Insights has moved to its own UserVoice forum.

We also added an Announcements section where we will be posting special opportunities for you to participate in.

Read about current UserVoice statuses and their definitions in our article “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. Add async foreach to C# and IAsyncEnumerator to .NET

    • C# feature 1 (foreach-await):

    foreach (var item in AWAIT asyncEnumerable) { ... }

    • .NET interfaces

    public interface IAsyncEnumerable<T> : IEnumerable<T> {
    IAsyncEnumerator<T> GetAsyncEnumerator();
    }

    public interface IAsyncEnumerator<T> : IEnumerator<T> {
    Task<bool> MoveNextAsync();
    }

    • C# feature 2 (async-yield):

    async IAsyncEnumerable<XmlNodeType> TokenizeXmlAsync(XmlReader reader) {
    while (await reader.ReadAsync()) {
    yield reader.NodeType;
    }
    }

    • Why

    Imagine a scenario when you run a SQL query and read results row by row, but you don't won't to block a thread in your app because you are waiting on a reader to read and parse the next row from the network stream, and…

    6 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…)
      1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
    • Option to set the Task.ConfigureAwait default at project level

      When building async server/cloud code, every await call needs a .ConfigureAwait(false) call. If there was a default option at project level, the code gets a lot cleaner.

      6 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…)
        0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
      • Ability to create instance of Attribute when class is created or method is called

        When I mark method with some custom attribute I want to have an ability to set that an attribute instance is created when a method is called. Same thing with classes, when a class is constructed it should also construct an attribute instance (this could be configurable in attribute's attribute).

        6 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…)
          0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
        • Keyword "With"

          with(SomeClass someClassInstance = /* Get from somewhere */)
          {
          // Some work
          }
          with(SomeClass someClassInstance = /* Get from somewhere */)
          {
          // Some work
          }

          instead of

          {
          SomeClass someClassInstance = /* Get from somewhere */;
          /* Some work */
          }
          {
          SomeClass someClassInstance = /* Get from somewhere */;
          /* Some work */
          }

          6 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…)
            1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
          • String comparison operator that ignores case

            In C#, the == comparison operator is always case-sensitive when comparing string values, and there does not appear to be an alternate operator that can ignore case. Instead, you have to do something like this, which seems quite ugly and unnecessary for such a common type of string comparison:

            string.Equals(string1, string2, StringComparison.OrdinalIgnoreCase)

            By comparison, in PowerShell, the standard -eq operator ignores case when comparing string values, and there is an additional -ceq operator that allows you to force case sensitivity when comparing strings.

            Given that the need for two different string comparison operators was already identified and addressed in PowerShell,…

            6 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…)
              1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
            • Implement Python-like Array Slice Capability

              Languages like Python make it very easy to access elements in an array using slice notation.

              For example, consider this array:

              int[] myArray = {1, 2, 3, 4, 5, 6, 7, 8};
              Console.WriteLine(myArray[2]); //outputs "3"

              Accessing individual elements is straightforward with the indexer notation. However, to access multiple elements within the array is more complicated. To access the indexes 2 and 3 as a shallow copy of the array, I would have to:

              myArray.Skip(2).Take(2);

              In a language like Python, I can simply state:

              myArray[2:4] //which starts at index 2, and goes until index 4 but doesn't include it.

              The Python-like…

              5 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…)
                0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
              • Allow the use of mathematical symbols in identifiers

                When writing algorithms, I try to stay as close to the mathematical definition of an equation as possible.

                This mostly requires discipline on my part to define, and use, types and operator overloading, not succumb to premature optimization etc. etc.

                I realized the other day that C# code is stored in UTF-8, which has a lot of mathematical symbols.

                I would like to be able to write:

                var sₖ = new Matrix();

                var sₖᵀ = Matrix.Transpose(sₖ);

                var c₁= sₖᵀ * sₖ;

                Interestingly enough, C# already allows you to use non-ascii letters (like European accented characters) in identifiers. This is of…

                5 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 →
                • Read all git history of a file

                  Read all git history even if you move one file to another directory.

                  I can use git log --full-history filename to read all the history of the file in the console but I can´t use it with codelens

                  5 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…)
                    1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                  • If statement should automatically coerce nullable booleans produced by use of ?. in condition expression

                    Now I have to do this:

                    if (_Client?.Connected == true)
                    {
                    _Client.Disconnect();
                    _Client = null;
                    }

                    This would be better:

                    if (_Client?.Connected)
                    {
                    _Client.Disconnect();
                    _Client = null;
                    }

                    Can the compiler recognize that a bool is required instead of a null because of the if-statement? Now I have to add "== true".

                    5 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 →
                    • Create method stub at cursor's position

                      After you select the class/method from the dropdowns in the navigation bar, the method stub is appended at the end of the current file ( (A) in the attached picture).
                      I wish this could be changed, e.g., the code will be placed at the current position of the cursor ( (B) in the attached picture).

                      5 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…)
                        0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                      • struct Extension method should pass this by ref

                        When we make extension method for class or struct. We often want to use that method for change its internal value. But the Extension method for struct is pass by value. Which is... what the heck? Just think about Vector.Normalize() being extension method cannot do this kind of function and it copy by no reason. That's nonsense

                        This is actually should be called bug. and it should fix immediately

                        5 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…)
                          0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                        • Improve C# IntelliSense to open the window after a backspace should it find matches and match on case insensitive.

                          Improve C# IntelliSense to open the IntelliSense window after a backspace. If you fat finger a key and lose the window the only way to get IntelliSense window back is to go back and retype the "." for those of us that heavily use IntelliSense in other languages this would go a long way.

                          5 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…)
                            1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                          • Simplified Property Syntax - expanded w/o backing field

                            Please make it possible to declare an expanded Property without declaring a backing field. If the Property variable is referenced in a circular manor at present; the runtime will overflow, but is should be possible to detect at compilation and is intuitive syntax for this purpose. e.g.

                            public string MessageBody
                            {
                            get
                            {
                            return this.MessageBody;
                            }
                            set
                            {
                            this.MessageBody = value;
                            Timestamp = DateTime.Now;
                            }
                            }
                            public DateTime Timestamp { get; private set; }

                            5 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…)
                              0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                            • 5 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…)
                                1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                              • Create a program, to be used by command line, on TFS and Visual Studio, for code clone analysis.

                                Like FxCop, in order to make a code coverage analysis, for our projects, it's also required to make a code clone analysis. I know that it's possible on Visual Studio IDE, but for Agile projects, it's more powerful by command line.

                                5 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…)
                                  1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                • Allow better support for dependency injection

                                  As a practitioner of Dependency Injection I find C# a bit verbose when it comes to writing constructors that simply store the constructor arguments they take (which is considered to be best practice when it comes to writing services using dependency injection). Take a look at the following class, and you’ll see that there is a lot of wiring, just to get the dependencies in:

                                  public class MyService : IService
                                  {
                                  private readonly ITimeProvider timeProvider;
                                  private readonly IMailSender mailSender;
                                  private readonly IProfitCalculator profitCalculator;
                                  private readonly IUnitOfWork unitOfWork;

                                  public MyService(ITimeProvider timeProvider,
                                  IMailSender mailSender,
                                  IProfitCalculator profitCalculator,
                                  IUnitOfWork unitOfWork)
                                  {
                                  if (timeProvider ==…

                                  5 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 constructor to interface

                                    I think we need a posibility to add constructor in interface. I am very curious, why this simple feature isn't implemented yet. Why can't i write something like

                                    interface ITest
                                    {
                                    ITest(string s);
                                    }

                                    So all inherited classes will need to implement constructor that will take string as parameter

                                    5 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…)
                                      1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                    • Automatically generate ArgumentNullException through syntax

                                      When coding definsively in a large environment, checking arguments for null is a great help, and appears in many many methods. The procedure for checking for null arguments is always the same, and *it is not refactorable* because it takes the argument's name as a string when constructing the exception.

                                      Here is an idea for an easier way to automatically generate null-checks for arguments:
                                      public void SomeMethod(Banana arg1 != null, int arg2, object arg3 != null)
                                      The ' ARG != null ' syntax would automatically insert a check that is equivalent to
                                      if (ARG == null) throw new ArgumentNullException("ARG");

                                      This…

                                      4 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 support for BigInteger literals in C#

                                        It would be great if C# supported integer literals of type System.Numerics.BigInteger, similar to how F# does. For example:

                                        var test = 7i; //Test is a BigInteger

                                        This would be very helpful in arithmetic expressions that go beyond what we can normally do, such as `1i << 64 | 4i << 96` instead of `new BigInteger(1) << 64 | new BigInteger(4) << 96`.

                                        4 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…)
                                          1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                        • C# virtual constructor

                                          Ability to make a constructor virtual.

                                          class A
                                          {
                                          public virtual A(string msg) { }
                                          }

                                          class B : A
                                          { }

                                          // This would be possible
                                          new B("Message");

                                          // The B constructor would would be automatically implemented as:
                                          new A(string msg) : base(msg) { }

                                          4 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…)
                                            1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                          1 2 8 10 12 27 28
                                          • Don't see your idea?

                                          Feedback and Knowledge Base