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. 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 →
    • Access the automatic property hide field

      Adding a specific keyword allows automatic property access to automatically generated fields.
      example:
      using Autofac;
      public static class EasyResolutionExtensions
      {
      public static TService ResolveSet<TService>(this IComponentContext context, ref TService service) where TService : class
      {
      return service ?? (service = context.Resolve<TService>());
      }
      }
      public class MyClass
      {
      private readonly ILifetimeScope _scope;
      private MyClassOne One => _scope.ResolveSet(ref field);
      private MyClassOne Two => _scope.ResolveSet(ref field);
      public MyClass(ILifetimeScope scope)
      {
      _scope = scope;
      }
      }

      public class MyClassOne
      {
      }
      public class MyClassTwo
      {
      }

      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  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
      • Visual Studio 2017, C#, Mono Cross Platform Linux?

        So what is the method to use Visual Studio 2017 (or 2015) to develop & build a cross platform desktop GUI application with Linux? The advertising all indicates Xamarin is the way to go...You go to Mono website and the current pages indicate to no longer use monodevelop on Windows, and point to downloading / install Xamarin to VS. I know Xamarin is now Microsoft and built on Mono, so that sounds reasonable. OK, install Xamarin to VS2017 - except nothing there indicates that it works with Linux / Mono... just Android / Apple, etc.

        Listed in the Extensions section…

        108 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 →
        • Static properties/methods on interfaces or abstract static properties/methods on abstract classes

          (before generics this didn't make any sense - with generics, however, it is fairly reasonable!)

          Example:
          Subscription to multiple messages on a message bus:

          public interface IMessage
          {
          }

          void Subscribe<T>(Action<T> callback, string routingKey, string exchange) where T : IMessage
          {
          channel.QueueBind(myQueue, exchange, routingKey);
          callbacks.Add(typeof(T), callback);
          }

          Could actually become

          public interface IMessage
          {
          static string Exchange { get; }

          static string RoutingKey { get; }
          }

          void Subscribe<T>(Action<T> callback) where T : IMessage
          {
          channel.QueueBind(myQueue, T.Exchange, T.RoutingKey);
          callbacks.Add(typeof(T), t => callback((T)t));
          }

          or maybe
          void Subscribe<T>(Action<T> callback) where T : IMessage
          {
          channel.QueueBind(myQueue, typeof(T).Exchange, typeof(T).RoutingKey);
          callbacks.Add(typeof(T), t => callback((T)t)); …

          9 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 →
          • C# error resistant multithreading – (via visibility and unprotected access protection)

            C# error resistant multithreading – (via visibility and unprotected access protection)
            Making multithreading less error prone: Reducing/Eliminating and detecting unprotected variable access (avoiding many common race conditions)

            Proposal for new C# functionality.

            Multithreaded code is easy to get wrong. A couple of the main concerns are:
            1. Race conditions due to unprotected variable access are easy to introduce/detect
            2. Deadlocks due to lock ordering
            3. Livelocks, lock contention, etc.

            This proposal addresses areas related to problem #1. It does this by helping to make multithreading decisions about which synchronization objects are protecting which code elements more visible. Currently when using…

            12 votes
            Vote
            Sign in
            Check!
            (thinking…)
            Reset
            or sign in with
            • facebook
            • google
              Password icon
              I agree to the terms of service
              Signed in as (Sign out)
              You have left! (?) (thinking…)
              4 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
            • Allow class variables visible only within a single method or property

              the glaring example would be a class property with a backing field.
              The backing field, usually should only be visible within the property, not within the class.

              public int MyProp
              {
              int _myProp;
              get
              {
              return _myProp;
              }
              set
              {
              return _myProp;
              }
              }

              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 "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 →
                • 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 →
                  • 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 →
                      • Add partial enum support

                        // auto generated
                        partial enum PartialEnum
                        {
                        ...
                        }

                        ...
                        // user code
                        partial enum PartialEnum
                        {
                        ...
                        }

                        10 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 →
                        • 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 →
                            • New access modifier for unit testing

                              Having an access modifier specifically for unit testing would allow for clearer intent and avoid missuses in some use cases.

                              For instance, when you have a protected or private constructor for which you just need to do some unit testing, you add the internal keyword to it.
                              The problem then is it makes your object instanciable elsewhere in the assembly which could work against its intent and purpose and raise some maintenability issues in the long run.

                              6 votes
                              Vote
                              Sign in
                              Check!
                              (thinking…)
                              Reset
                              or sign in with
                              • facebook
                              • google
                                Password icon
                                I agree to the terms of service
                                Signed in as (Sign out)
                                You have left! (?) (thinking…)
                                1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
                              • 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 →
                                          ← Previous 1 3 4 5 40 41
                                          • Don't see your idea?

                                          Feedback and Knowledge Base