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. Double indentation for multiline code

    Some code appears on more than one line, for example the inputs of "Add" are split across line 1 and 2 in (note I replaced spaces with "-" because this website removes spaces at the beginning of a line):

    public Int32 Add(Int32 x, Int32 y, //Line 1
    --Int32 z){//Line 2
    --return x+y+z;//Code between the curly braces
    }

    When this happens, I would like Visual Studio to make the second line to use double indentation? Otherwise it becomes hard to see at a glance where the run on lines of code ends and the code inside of the curly braces begins.…

    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 call to event that is null to optionally not throw exception

      Allow call to event that is null to optionally not throw exception. If we could do something like:

      public event Callback Foo();

      public void SomeMethod()
      {
      Foo?(); // Does not continue call if null
      }

      I think this would be useful for a lot of places where a null-check is required, just like the ?. operator. It also preserves the ability to throw an exception if that it is desired.

      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 →
      • 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…)
          2 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
        • Privide the csi as an integrated extension to VS Code

          Seamlessly integrate the revived CSI (C# Interactive) REPL with VS Code and CoreCLR so that I can do REPL F# and C# development with the REPL and VS Code on any OS

          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…)
            0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
          • Automatically cast null when assigning to a nullable type

            At present, when assigning null to a nullable type variable you have to cast it as the nullable type, e.g.

            DateTime? nullableDate = string.IsNullOrEmpty(someDateString)
            ? (DateTime?)null
            : DateTime.Parse(someDateString);

            It would be nice if the cast wasn't required e.g.

            DateTime? nullableDate = string.IsNullOrEmpty(someDateString)
            ? null
            : DateTime.Parse(someDateString);

            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…)
              0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
            • add file type to advanced search

              please add file type to advanced search, when i want somethings in c# files why show me js file or other type,

              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…)
                0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
              • Allow ?. operator to be used in assignments

                The ?. operator is great for reading values from classes

                var a = c?.Foo;

                It would be great if it could also be used for assigning values as well.

                c?.Foo = 4;

                My feeling is that this should be really easy for properties, since the setter gets generated as method set_Foo(...), and thus c?.set_Foo(4)

                I would also think it it would be doable for normal field members, since it should just be like

                var tmp = c;
                if (tmp != null) {
                tmp.Foo = 4;
                }

                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…)
                  0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                • Exceptions within async partial void method() cause the app domain to crash

                  C# allows you to write code as follows...

                  public partial class MyCodeGeneratedClass
                  {
                  public async Task MyCodeGeneratedMethod()
                  {
                  HttpClient client = new HttpClient();
                  Console.WriteLine(await client.GetStringAsync("http://msdn.microsoft.com"));
                  MyCustomCode();
                  }

                  partial void MyCustomCode();
                  }

                  partial class MyCodeGeneratedClass
                  {
                  async partial void MyCustomCode()
                  {
                  HttpClient client = new HttpClient();
                  Console.WriteLine(await client.GetStringAsync("http://msdn.microsoft.com"));
                  throw new Exception("Boom");
                  }
                  }

                  Calling MyCodeGeneratedMethod in a console application, brought down the app domain.

                  In the case of partial methods the return type must be void and you cannot have ref or out parameters. With the proliferation of async methods in libraries, this limitation is now much…

                  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 →
                  • Support labels on loop control statements

                    Allow break and continue statements to specify which loop they refer to, rather than always binding them to the innermost loop. For example:

                    FileLoop:
                    foreach (string fileName in fileList)
                    {
                    . . string[] lines = getLines(fileName);

                    . . for (int lineNum = 0; lineNum < lines.Length; ++lineNum)
                    . . {
                    . . . . foreach (string word in splitLineToWords(lines[lineNum]))
                    . . . . {
                    . . . . . . if (word == targetWord)
                    . . . . . . {
                    . . . . . . . . Console.WriteLine(fileName + " has the target at line " + (lineNum…

                    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…)
                      3 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                    • intellisense in cross-platform (android...)

                      Develop intellisense (help in writing code) for cross-platform (Java, Android, ..) in C# coding.

                      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…)
                        0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                      • Use xml config files in VNext instead of JSon

                        I just tried out the CTP 4 of Visual Studio 2014 and tried to create a VNext Web Application.

                        And instead of a web.config file it has a JSon file that cannot even read.

                        Xml is so much easier to read and collapse.

                        I won't use it because it is MVC also, but at least with a Config file I could read and edit I might use the product.

                        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…)
                          0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                        • create pathof keyword, similar to nameof keyword

                          nameof(MyProperty.ReferencedObject.Name) solves "Name".

                          pathof(MyProperty.ReferencedObject.Name) would solve "MyProperty.ReferencedObject.Name".

                          That would be useful in expressions.

                          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 →
                          • Add AssemblyLicenseName and AssemblyLicenseText Attributes to the System.Reflection namespace

                            System.Reflection already contains a lot of Attributes that can be applied to Assemblies, like AssemblyCopyrightAttribute or AssemblyDescriptionAttribute. For open source projects it would be nice to have Attributes like AssemblyLicenseName and AssemblyLicenseText, which could be used make the name and content of a license available via reflection.

                            Many open-source licenses (even non-copyleft licenses like BSD) require the user of the software to redistribute the license text. Authors of open-source libraries often either put the license text in a simple textfile or (as a comment) in every sinigle code file. Users of such libraries have to manually copy the license text…

                            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…)
                              0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                            • add C# ability to use using namespace in any scope

                              currently, using namespace is limited to file or other namespace scope. Allow it to be used in methods, and any compound statement

                              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…)
                                0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                              • Add implicit property declaration

                                TypeScript has a great feature (described also here: https://www.stevefenton.co.uk/2013/04/stop-manually-assigning-typescript-constructor-parameters/) that spares a lot of time when writing classes. My suggestion could be a syntactic sugar by adding the possibility to use one of the following keywords when declaring constructor formal parameters: public, private, protected, privateset, protectedset, base as the following example demonstrates:

                                abstract class Animal
                                {
                                public Animal(public int age, protected string race; protectedset string name)
                                {
                                ....
                                }
                                }

                                Would automatically add following properties (and set default value if provided):
                                public int age {get; set;}
                                protected string race {get; set;}
                                public string name {get; protected set;}

                                While:

                                class…

                                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…)
                                  0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                • REGEX exact match improvement

                                  Kindly asking you to implement the small improvement to c# regex
                                  the idea is following
                                  .{,3} - up to 3 symbols match
                                  .{3,5} - between 3 to 5 symbols match
                                  .{3,} - 3 and more
                                  .{3} - exactly 3 symbols
                                  I need the next mentioned improvement (!)
                                  .{3|4|5... etc.} - exactly 3 or 4 or ...

                                  for instance match like this (.{3}(?:.{2})?) is not pretty useful because when quantity of symbols is 4, the match of 3 symbols is still present!
                                  I need matches with exactly 3 OR 5 symbols... OR ... etc (if mentioned in mask) and no matches…

                                  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…)
                                    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                  • Interactive Window Code Completion with Tab-Tab

                                    In the Interactive Windows (C#/F#) it would be great to have the Intellisense complete the code block by pressing TAB-TAB like in a normal code editing window.

                                    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…)
                                      0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                    • Permit limited simplified LINQ in foreach loops

                                      foreach(var blah in someEnumerable
                                      where blah.Property > 10
                                      orderby blah.OtherProperty)

                                      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…)
                                        0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                      • Can you add console input (like Console.ReadLine()) to C# interactive?

                                        Please add support to console input to C# interactive.

                                        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…)
                                          0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                        • 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 30 31
                                          • Don't see your idea?

                                          Feedback and Knowledge Base