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

    A cross between the dot operator and the opposite of the ?? operator. "If null, then use null; else, continue with the dot operator."

    Current code: return a == null ? null : a.b;

    New code: return a.?b;

    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 →
    • 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 →
      • 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 →
        • Add a Code Viewer that Doesn't take X Minutes to load

          Some times I need to quickly look at a code file and can't wait five minutes for Visual Studio to load on my Six Core Machine. So I open it in NotePad. There really should be a lean C#/C++ what ever quick launch code viewer that launches automatically when I click on a C# File. Visual Studio should only open solutions and projects. Not loose code files.

          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 →
          • 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 →
                  • 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 →
                      • Named variable arguments with params Dictionary<string,T>

                        C# functions can have variable positional arguments, like this:

                        int MyFunction(int arg1, int arg2, params int[] restOfTheArgs)

                        You can also give parameters' names at the callsite:

                        var x = MyFunction(arg1:42, arg2:99)

                        But one thing you can't do, is make variable named arguments, analogous to Python's **kwargs. The 'params' syntax could be straightforwardly generalized to this case, though. It'd be nice to be able to define a constructor like:

                        JsonObject(params Dictionary<string,object> keys)

                        And call it like:

                        new JsonObject(key1: 123, x: "asdf")

                        This would also be useful for functions like string.Format - eg, you could write

                        string.Format("{greeting}, {who}!", greeting:"Hello", who:"world")

                        instead of…

                        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 TryParse() method for MailAddress object

                          Currently the only way to know if an email address is valid is to either create a complex regular expression, or try to add an email address to the MailAddress object, and catch any thrown exceptions.

                          I wrote an extension method against the string object to validate if the string is a valid email address.

                          public static class MailAddressExtensions
                          {
                          public static bool IsValidEmail(this string input)
                          {
                          try
                          {
                          if (string.IsNullOrWhiteSpace(input))
                          return false;
                          new MailAddress(input);
                          return true;
                          }
                          catch (FormatException)
                          {
                          return false;
                          }
                          }
                          }

                          Another option would be to implement a method to allow extension methods on an…

                          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 →
                          • Group Extensions Methods together for better Intellisense (ie foo.Linq.Single())

                            Adding extension methods like Linq make intellisense almost unusable... just too many options with no organization.

                            So how about an attribute on the using statement (ie)

                            [ReferenceAs("Linq")]
                            using System.Linq;

                            [ReferenceAs("MyHelpers")]
                            using HelpersLib.Extensions;

                            This will group all the extension methods together so instead of:

                            foo.Where(..)
                            foo.ToCleanInt()

                            You have...

                            foo.Linq.Where(..)
                            foo.MyHelpers.ToCleanInt()

                            So instead of hunting through 50 different extension methods, you could narrow them down easily.

                            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 →
                            • static

                              Static indexers like:
                              public class MyClass
                              {
                              public static string MyClass[int index] { ... }
                              }

                              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 →
                              • Make ToDictionary report the offending key in case of duplicates

                                Right now the message we get is "An item with the same key has already been added.".

                                I would find it really helpful if it could include the key that it was trying to add.

                                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 →
                                • Provide internal methods to Interface contracts.

                                  I'm in the process of rewriting engine code for a game. And something that keeps appearing is the need to describe interfaces with internal methods. Often, game code must build objects that meet an interfaces contract, and that contract often includes the provision of internal methods such as Render().

                                  C# interfaces currently don't provide this feature, and it's a real shame, because it makes sense to build against these contracts with internal methods, and not having to resort to using inheritance.

                                  There is no reason a contract can't say 'provide an internal method for Render() because all Models require it…

                                  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 →
                                  • repeat keyword

                                    working with loop. sometimes you need to repeat something again. in this case you have to reduce/increase the counter or use goto statement.

                                    i was thinking that using repeat keyword would be nice.

                                    foreach(var v in list)
                                    {
                                    // do something
                                    if(...)
                                    {
                                    repeat; // iterate and dont go for next element of list.
                                    }
                                    }

                                    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 →
                                    • if (var item = someObject as someClass) {...}

                                      Combine "is" and "as" - extend "if".

                                      instead of
                                      if (someObject is Someclass)
                                      {
                                      var item = someObject as someClass;
                                      ....
                                      }

                                      simplify to
                                      if (var item = someObject as SomeClass)
                                      {
                                      ...
                                      }

                                      the expression would fail if item is null (i.e. someObject is not someClass).

                                      Or use separate keyword for such construct.

                                      Possible implementations : treat definition with assignment as expression, or just extend "if" expression syntax.

                                      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 →
                                      • lazy

                                        I would like to see lazy properties in C#. This is a common pattern for me:

                                        public class MyClass
                                        {
                                        public string MyProperty
                                        {
                                        get
                                        {
                                        return _MyProperty.Value;
                                        }
                                        }

                                        private System.Lazy<string> _MyProperty = new System.Lazy<string>(() =>
                                        {
                                        return "Some string";
                                        });
                                        }

                                        This could be simplified with a keyword "lazy":

                                        public class MyClass
                                        {
                                        public lazy string MyProperty
                                        {
                                        get
                                        {
                                        return "Some string";
                                        }
                                        }
                                        }

                                        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 we remove Tuple object item1 or item2 and puts our custom name

                                          its very hard to under stand every time in Tuple like item1 or item2 which one belong to which column or property, menas every time we need remember like on first string datatype is belong to name or id etc.
                                          if we can put our custom name for tuple object like we can do in generic list name , id , mobile number etc that we will we very helpfull to understand .

                                          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 9 11 13 27 28
                                          • Don't see your idea?

                                          Feedback and Knowledge Base