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. Validation for primary constructors

    Primary constructors were a great addition to the language but the fact is it's kinda ugly how validation is performed (so far I'm doing it with validation methods, one for property, scattered all over the class).

    I'd like to propose something similar to Java Initialization blocks. That block of code would be added to the constructor that is generated because of primary constructor feature. Something along these lines:

    public class SuperDuperClass(int a, string b)
    {
    //This block of code would be added to the primary constructor
    {
    if (a < 0) throw new Exception("...");
    if (b == null) throw new…

    3 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 →
    • Open Source the Web Platform Installer (or create an empty extensible shell)

      It would be great to (re)use the WebPI as an install configuration tool. Yes, it supports custom feeds, but how about if it were available empty and unbranded (or brandable)?

      1 vote
      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  ·  Install  ·  Flag idea as inappropriate…  ·  Admin →
      • Extensibility for Release Management

        Provide a way to extend Release Management. i.e. One could provide an external storage for configuration variables through an interface. So that sensitive and/or dynamic information can easily plug into release template.

        19 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  ·  Release Management  ·  Flag idea as inappropriate…  ·  Admin →
        • Created the right kind of links between WIT

          In backlog, links created between Product Backlog Item and Bug are Parent/Child , but "AffectedBy/Affects" should be the more suitable realtionship.

          Project should allow to configure the relation type between two kind of WITs

          In UI, user should be able to choose the kind of relationship when likning two WIT via Drag n Drop

          3 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…)
          • Fix text editor

            I've been using TFS for a month now for a scrum project and boy has it been a pain in the ***. TFS is okay but it would be great if they could fix the buggy text editor used for writing user stories and acceptance criteria. when viewing work items from the product backlog work item list, the user stories description displays HTML tags used to format the text where it should only be displaying the description only, this makes it hard to read the description from the list.

            3 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…)
            • Memory and CPU consumption of cccheck.exe

              Hi there,
              we are using the latest version of the code contracts to increase our software quality.

              Now i found, that the cccheck.exe consumes a lot of Memory and CPU time (pls see attached copy of the task Manager).

              I found a thread on a MSDN Forum (http://social.msdn.microsoft.com/Forums/en-US/0873a84e-f0d6-4a03-a21c-715a23840e55/cccheck-excessive-memory-processor-usage?forum=codecontracts), that describes exactly the same problem. The first post was from 2010...now is nearly 2014!

              PLEASE Microsoft, fix this. I like the code contracts. But on my machine other programs have to run too ;-)

              Thank you!

              31 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  ·  Extension  ·  Flag idea as inappropriate…  ·  Admin →
              • Don't load pdb files until I actually need them (i.e. when I break in code in that module)

                I have to debug a large application that uses several dozens of modules, and whenever I debug it, if I have the option "Always load symbols located next to modules" set, I get half my system memory used up with symbols I don't need. If there were a way to delay loading those until I actually break in the debugger or step into a function in a particular dll, that would be very helpful.

                Basically, the current scheme wastes memory and load time, and the only alternative is to load none of them by default and manually pick the ones…

                2 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  ·  Debugger  ·  Flag idea as inappropriate…  ·  Admin →
                • Allow source control plugins to be autodetected on per-project basis

                  Complex solutions often span multiple projects hosted in different types of source control.
                  Switching between source control plugins is a pain in such cases. Same applies when Scc information is not available, and there are different solutions with different source control systems.

                  It would be nice to have all plugins available all the time and let themselves decide if they are applicable to individual project, or, maybe even folders or files, and not switch setting each time manually in Visual Studio options.

                  All other major IDEs like Eclipse and IDEA have that functionality for ages.

                  0 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  ·  IDE  ·  Flag idea as inappropriate…  ·  Admin →
                  • i think it would be lovely if you could point me to where i can get ground up instruction for using this software.

                    i think it would be lovely if you could point me to where i can get ground up instruction for using this software.

                    1 vote
                    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  ·  .NET  ·  Flag idea as inappropriate…  ·  Admin →
                    • pattern matching for c#

                      I find myself often writing small functions that look like this:

                      public int DoSomething(string userInput)
                      {
                      if (string.IsNullOrEmpty(userInput))
                      {
                      return -1;
                      }

                      if (userInput.ToUpper().Equals("SOME_VALUE"))
                      {
                      return -2;
                      }

                      // actual code goes here.
                      //usually, this calls a different, well named function, which doesn't do assumes the above checking was already done
                      this.DoSomethingInternal(userInput);
                      }

                      what would be preferable is to have pattern matching built in, which would make for significantly easier to read code:

                      public int DoSomething(string userInput)
                      match(string.IsNullOrEmpty(userInput)) => -1
                      match(userInput.ToUpper().Equals("SOME_VALUE") => -2
                      {
                      //actual code
                      }

                      1 vote
                      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 →
                      • Add overload to ExecuteReaderAsync to pass CommandBehavior in Microsoft.Bcl.Async

                        The Microsoft.Bcl.Async NuGet package is very useful in .NET 4.0 projects, it even contains extension methods for things like SqlCommand to add functions like "ExecuteReaderAsync()". However one issue with the library is the extension method "ExecuteReaderAsync()" does not contain a overloads that maps to the overloads in .NET 4.5 that take in a CommandBehavior (http://msdn.microsoft.com/en-us/library/hh204867(v=vs.110).aspx and http://msdn.microsoft.com/en-us/library/hh204861(v=vs.110).aspx)

                        The current work around is to add an additional extension method via

                        static class ExtensionMethods
                        {
                        public static Task<SqlDataReader> ExecuteReaderAsync(this SqlCommand command, CommandBehavior behavior)
                        {
                        return ExecuteReaderAsync(command, behavior, CancellationToken.None);
                        }

                        public static Task<SqlDataReader> ExecuteReaderAsync(this SqlCommand command, CommandBehavior behavior, CancellationToken token)
                        { …

                        3 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  ·  .NET  ·  Flag idea as inappropriate…  ·  Admin →
                        • Ability to get PropertyInfo dynamically passing the property itself (a delegate to the getter), rather than the property name.

                          To get a PropertyInfo instance a property name should be specified. It'll be great to have a way of getting PropertyInfo given a delegate like Func<object>, which will return the property.

                          Example:

                          internal class Sample
                          {
                          public int PropA { get;set;}

                          public void SomeMethod()
                          {
                          PropertyInfo info = GetPropertyInfo(()=>this.PropA);
                          // Some other code, using the "info" variable
                          }

                          public static PropertyInfo GetPropertyInfo(Func<object> property)
                          {
                          // This is the method I'm asking about.
                          }
                          }

                          3 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 →
                          • Backward/forward compatibility for websites

                            Hands off guys, but the one thing I want to tell is, C# 6 has thrilling features but when coding a asp.net website in c#, if any one wants to use these new features, what should they do? I mean the web hosters have framework 4.5 We don't want to miss those features just because the web hosters don't have the required frameworks. Not all can have private servers. The feeling you get when you eagerly try out new features and when you want to deploy and you are rejected because the framework doesn't support is a very bad one.…

                            1 vote
                            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  ·  .NET  ·  Flag idea as inappropriate…  ·  Admin →
                            • file .ltrar

                              convert .ltrar file so everyone can read it without visual studio installed on there machine.

                              1 vote
                              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  ·  Visual Studio Test and Lab Management  ·  Flag idea as inappropriate…  ·  Admin →
                              • allow structural subtyping with interfaces

                                It has always been a major frustration that it's not possible to do:

                                class Matrix<T> where T:IAddable
                                {
                                }

                                That is have a class accept any sort of type that can possibly add. I'd love to be able to create objects of type `Matrix<int>` or `Matrix<double>` and actually use the methods that both implement.

                                With TypeScript this is possible because it uses structural subtyping (if they look the same, then they are the same). Doing this with just interfaces in C# wouldn't be too major of a change, and would allow you to create really truly powerful interfaces that utilize…

                                3 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 →
                                • Add null-propagating member-access operator (?.) to VB.NET

                                  I've heard a similar feature is possibly in the pipeline for C#, and would love to see it in VB.NET as well. I'd love to reduce:

                                  If points IsNot Nothing Then
                                  Dim next = points.FirstOrDefault
                                  If next IsNot Nothing AndAlso next.X IsNot Nothing Then
                                  Return next.X
                                  End If
                                  End If
                                  Return -1

                                  ...to:

                                  Return If(points?.FirstOrDefault()?.X, -1)

                                  17 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 - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →

                                    Hey Mike,

                                    We’ve gotten a tremendous amount of feedback from users that this feature would be valuable. We’d really like to do it in the next version and are fleshing out the design now. It’s a feature that we’d do for both VB and C# at the same time.

                                    At the moment the most commonly imagined syntax is ‘?.’ well technically the operator itself is just ? and it modifies whatever comes after so all of these cases would potentially result in null if the expression to the left of the ? is null:

                                    ’ Null-propagating member-access.
                                    list?.Member

                                    ’ Null-propagating object index or delegate invocation.
                                    list?(0)

                                    ’ Null-propagating dictionary-access.
                                    list?!key

                                    ’ Null-propagating XML element-, attribute-, and descendent-access.
                                    list?.
                                    list?.@attribute
                                    list?…

                                    (for C# we’d also need to consider ?→ for null-propagating pointer dereference)

                                    The design seems mostly straight-forward though we still need to think about possible interactions with the Await operator…

                                  • Provide encrypted store for passwords required for deployment

                                    To fully automate deployments right through to Prod environments you need a way to secure service account passwords that can be accessed by the deployment agents

                                    2 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  ·  Release Management  ·  Flag idea as inappropriate…  ·  Admin →
                                    • Please add a quick way to surround text with HTML tags

                                      The current way of surrounding text with HTML tags is cumbersome in Visual Studio. Please add a quick way to wrap text with any HTML tag (similar to textmate example described here - http://stackoverflow.com/questions/191463/how-do-i-wrap-a-selection-with-an-html-tag-in-visual-studio)

                                      3 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  ·  Editor  ·  Flag idea as inappropriate…  ·  Admin →
                                      • Manage profiles to group windows settings by argument/context

                                        Manage profiles in order to group windows settings by argument/context

                                        Example:
                                        - when i debug i want to view "call stack" at bottom and i don't want to see Solution Explorer window
                                        - when i edit a WPF form i don't want to view "call stack" but i need to view "Toolbox" Windows on the right of VS.

                                        So I'd like to configure
                                        - Debug profile: call stack windows at bottom, no Solution Explorer, ...
                                        - WPF Edit profile: Toolbox window on the right, Breakpoints windows on bottom, ...

                                        VS automatically loads Debug profile (se up windows for me) when…

                                        1 vote
                                        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  ·  IDE  ·  Flag idea as inappropriate…  ·  Admin →
                                        • Better "KeyNotFound" Exception

                                          Actually, KeyNotFound exception returns "the key was not found in the dictionnary".

                                          Adding the key value we try to retrieve to the exception makes debugging easier

                                          3 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  ·  Debugger  ·  Flag idea as inappropriate…  ·  Admin →
                                          • Don't see your idea?

                                          Feedback and Knowledge Base