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. 

NOTE: The Applications Insights forum has moved to the Azure feedback site.

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. Improve Intelisense XML Comment Syntax for ValueTuples

    C# 7 ValueTuples are nice, but it is a little messy trying to figure out how to document them in the Intelisense XML comment headers.
    It would be useful to be able to use something similar to the parameter syntax on Tuples, especially for return tags.

    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 "Change Signature..." for ValueTuples

      While using ValueTuples, I am finding that I am in need of the equivalent of change signature from method signatures but for tuples to change the order of values.
      It gets quite messy trying to change the order of a return tuple. You have to manually locate every reference to make sure the order matches and modify it if it does not.

      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 →
      • Implicit interface for all public members of class

        It's a common situation when you create interface with all public members of class just to have possibility to stub/mock class in the unit tests. Usually these interfaces also used in constructor injection.

        BEFORE:
        public class UsersRepository : IUsersRepository
        {
        public void CreateUser(object user)
        {
        ...
        }

        public void DeleteUser(int userId)
        {
        ...
        }
        }

        public interface IUsersRepository
        {
        void CreateUser(object user);

        void DeleteUser(int userId);
        }

        public class SomeOtherClass
        {
        IUsersRepository _usersRepository;
        SomeOtherClass(IUsersRepository usersRepository)
        {
        _usersRepository = usersRepository;
        }

        ...
        }

        public void SomeUnitTestMethod() {
        var usersRepository = MocksGenerator.GenerateStub<IUsersRepository>();
        }

        It would be great, if this interface can be generated…

        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 →
        • 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 →
          • Ensure Verbatim String Literals Have the Same Values on Different Platforms

            Verbatim string literals currently have a fatal flaw, making their use in cross-platform development dangerous. For verbatim string literals with line breaks, the characters in the string depend on the source control line break settings, which by default are different on different platforms. This can cause things to behave differently and tests to fail, and can be very hard to diagnose because the differences are in non-printable characters. The spec should be changed to ensure that verbatim string literal line breaks always use the same line break character sequence, CR, LF, or CRLF, regardless of the actual line breaks in…

            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 →
            • Create a new operator for NON integer division

              It sucks that integer division is the default, but it's unsufferable when you're working with dynamics...
              Please, implement a new operator to force float division even when the operands are integers:

              int ./ int = double

              or at least a compiler directive to force the / operator to work in it's most intuitive way...

              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 →
              • Visual Studio Student

                This Language Turkish Program Yüklenmesi Çok uzun Sürmekte Aynı Şekilde Çok Takılarak Yüklemekte

                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 →
                • change the items access mechanism in arrays

                  i have been thinking about the way items are accessed in arrays (using the indexer) and i realized that the use of the standard for loop causes an unnecessary recursive operation.
                  When you access the member 10, the indexer goes to the position 9 (starting at 0) and returns it's value, but when you access the member 11 (the next iteration), the indexer goes to position 10 (also starting at 0) and returns it's value.
                  So when you access a member after 10, the indexer goes to that position several times.

                  I think that is better to use something to…

                  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 →
                  • vs2017黑色主题,ctrl+f后 被查找的字符串,高亮显示,颜色不明显(包含滚动条处)。

                    vs2017黑色主题,ctrl+f后 被查找的字符串,高亮显示,颜色不明显(包含滚动条处)。

                    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 →
                    • The ability to generate a class diagram from code in Visual Studio for Mac

                      Like the feature for the VS2017 windows version where you can generate a class diagram from code, but then for the Mac version as well

                      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 →
                      • Add "?=" operator.

                        a ?= b; is same as if(a==NULL) a = b;

                        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 →
                        • Add the notion of friend to modify a protected or private member

                          Allow the notion of friend specifier in c#.
                          The main idea is to allow a method or the set of the property to be called by only one external function only making it inaccessible for anybody else but the specified class.methods and the member function.

                          public class ObjClass
                          {
                          List<object> items = new List<object>();

                          public object[] Items
                          {
                          get => items.ToArray();
                          [Friend( Session )]
                          protected set => items = new List<object>( value );
                          }
                          }

                          In the example above, only the object Session and the object methods can access the set modifier.

                          The current internal requires the impacted object to…

                          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 →
                          • Override enum ToString()

                            Add an attribute that will override an enum's ToString().

                            For example:

                            enum Genre
                            {
                            Fantasy,
                            Horror,

                            [EnumString("Sci-Fi")]
                            SciFi
                            }

                            calling ToString() on those would output:
                            Fantasy,
                            Horror,
                            Sci-Fi

                            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 →
                            • Make classes public by default when creating new classes.

                              Whenever I create a new file/ class, it creates it as just "class Name..."

                              Most of the times I change it to public.

                              It would make life simpler if I only had to change it when I don't need public.

                              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 →
                              • Fix inline function name refactoring in c# (Dark theme)

                                The changes to the rename refactoring in visual studio 2017 (F2 by default) are in my view a backward step from visual studio 2015 and although it looks very cool it is much more difficult to use. I would suggest this is a case of form over function.

                                The main problem I have is that it is impossible to see where the cursor is (dark theme) when renaming and the cursor is allowed to exit the inline renaming. Therefore when wishing to add a character/word into the middle of a function it invariable means several guess / attempts before you…

                                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 →
                                • dynamic types in C#

                                  if i declare a dynamic type and keep on changing its types, can you allow va intelisense of type which i assign till i assign a new type value?

                                  dynamic t = "hello";
                                  c.w(t.ToUpper);

                                  t = false;
                                  if(t)
                                  {
                                  }

                                  t = 10;
                                  t.getBytes();

                                  suggestion is like allowing opposite of var declaration, where i can allow to assign new value as well as getting the respective properties n methods intelliense!!

                                  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 →
                                  • Return null in ref returns in C#

                                    Ref Returns Docs says:
                                    "The return value cannot be a null. Attempting to return null generates compiler error CS8156, "An expression cannot be used in this context because it may not be returned by reference."
                                    If a method with a ref return needs to return a null value, you can either return a null (uninstantiated) value for a reference type or a nullable type for a value type."

                                    So I have to do this:
                                    static string[] Students = { "Ali", "Hani", "Shady", "Hala" };
                                    static string s;

                                    static ref string FindStudent(string Name)
                                    {
                                    for (int i = 0; i <…

                                    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 →
                                    • Ranged Data Types In C#

                                      I suggest to improve current numeric types by adding a way to set a value range. This can be done by some attributes, but it will be easier to give it a syntax like this
                                      C#:
                                      [5,10]int i;
                                      VB.NET:
                                      Dim i As Integer[5,10]
                                      The compiler must not allow I to have any value < 5 or >10.
                                      One can omit one limit:
                                      [,100]byte
                                      [13,]int
                                      This will make it easy to write auto-properties like this:
                                      C#:
                                      [18,30]int Age {get; set;};
                                      VB.NET:
                                      Property Age As Integer[18,30]

                                      Another Syntax Suggestion:
                                      C#:
                                      <5,10>int i;
                                      VB.NET:
                                      Dim i As Integer<5,10>

                                      36 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…)
                                        6 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                                      • ?. short circuit assignment

                                        Instead of writing

                                        private StoBatch selectedBatch
                                        {
                                        get => selectedArea?.SelectedBatch;
                                        set { if (selectedArea != null) selectedArea.SelectedBatch = value; }
                                        }

                                        I would like to write

                                        private StoBatch selectedBatch
                                        {
                                        get => selectedArea?.SelectedBatch;
                                        set => selectedArea?.SelectedBatch = value; }
                                        }

                                        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 →
                                        • it'll be good if the breakpoint were traveled through in linq codes

                                          it'll be good if the breakpoint were traveled through in linq codes

                                          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 →
                                          ← Previous 1 3 4 5 40 41
                                          • Don't see your idea?

                                          Feedback and Knowledge Base