Visual Studio IDE

Announcement: Last fall, we migrated this forum to Visual Studio Developer Community to provide you one convenient and responsive system for all feedback. As the final step in the migration, this forum will be closed off completely on June 1st, 2019. We encourage you to visit Visual Studio Developer Community where you can now suggest new ideas, browse and vote on existing ideas, and engage with Visual Studio teams.

We’d like your suggestions and ideas to help us continuously improve future releases of Visual Studio, so we’ve partnered with UserVoice, a third-party service, to collect your feedback. Please do not send any novel or patentable ideas, copyrighted materials, samples or demos for which you do not want to grant a license to Microsoft.

This site is for feature suggestions; if you need to file a bug, you can visit our Developer Community website to get started.

Note: your use of the portal and your submission is subject to the UserVoice Terms of Service & Privacy Policy and license terms.

We look forward to hearing from you!
- The Visual Studio Team

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. Drag and drop one or more classes in Solution Explorer to a project folder

    Drag and drop a class from a solution cs file to a new file. If a single cs file exists for several classes they should be able to be extracted through a drag and drop mechanism by simply selecting on the classes in solution explorer and then moving them to an alternate location or folder.

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  2. Add methods to clone an object tree or a part of it

    Creating objects similar to others already existing is a common pattern that requires a lot of typing and bore just to map the properties of one into the other.
    There should exist an extension method on the "object" object that could allow to create an object just cloning another one, with it's entere tree, or even better, until a determinate level of depth.

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  3. Use "private override sealed" to fully seal-off methods

    This would seem to be non-breaking.

    C# doesn't allow override to change the visibility (public/protected/private) of a virtual method. In reality there does not seem to be a problem with allowing the visibility to be reduced. In particular it would make for more "clean" code if "public virtual" (in particular) and "protected virtual" could be overridden with "private override sealed".

    If there is a concern regarding the larger overall reduction in visibility, consider limiting it to sealed-only.

    Right now an ugly kludge is required to "seal off" a virtual method through the use of "sealed" and then throwing an exception…

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  4. In C#, F12 when on an override Definition should go to parent

    Hitting F12 on the use of a method (property, etc) should go to the method definition. Hitting F12 when on the method definition should go to the next higher method definition on the class derivation chain if the method is an override. This "walking up the derivation chain" should continue until the virtual (as opposed to override) definition is finally reached. Alternately, introduce a shortcut mapped "GoToParent" which perhaps might have a wider application. Although it does seem like if one is already on the definition, the next logical thing to do for "GoToDefinition" would be to go to the…

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  5. Fix inappropriate generation of compiler error CS1612

    Unfortunately this error can be inappropriately generated when assigning to a property (i.e. invoking a property setter). An immutable struct can still have a valid property setter, as long as the property setter doesn't actually assign to any fields in the struct. For example,

       public struct Relay {
           public Relay(Func<string> getText, Action<string> setText)
           {
                   this.GetText = getText;
                   this.SetText = setText;
           }
           private readonly Func<string> GetText;
           private readonly Action<string> SetText;

     …

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  6. Warn user when declaring variable in loop

    By accident I sometimes put a variable declaration in a loop - eg

    foreach(var thing in things)
    {
    var x = "something: " + thing.whatever;
    }

    There I should have declared the variable first outside the loop. I think this is probably a common mistake - and can take a while to debug because you often just don't see it.

    Visual Studio should show a warning / underling the text and alert the user.

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  7. 0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  8. "throw return" pattern as alternative to "async-await"

    What I think would be a nice addition to C# would be recognize return as a special keyword of throw, so that you can completely unwind the stack upto the point where UI entered and return a value without raising an exception. This would allow a user to start an async task, add a few continuations to this task, then "throw return" back to the top of the stack to the UI...without using the async keyword at all. Example:
    void XYZ_Click(…) {
    if (DeeplyNestedFunction() == 1) {
    ...
    }
    else {
    ...
    }
    }

    int DeeplyNestedFunction() {
    if (...) { …

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  9. (Chinese)希望能够新增加一个控件。它可以打开unity3d文件,但只有启动后的3d画面,前面的可以自由添加,这样可以赋予unity3d多样性

    (Chinese)希望能够新增加一个控件。它可以打开unity3d文件,但只有启动后的3d画面,前面的可以自由添加,这样可以赋予unity3d多样性

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  10. Shortcut for creating tasks

    Map this:

    static Task MethodAsync() {
    Task A = new Task(() => {
    Console.WriteLine("A:begin");
    for (int i=0; i < 10000; i++) {
    Console.WriteLine("A:{0}", i);
    }
    Console.WriteLine("A:end");
    doneA = true;
    });
    A.Start();
    return A;
    }

    Into this:

    static TaskNew MethodAsync() {
    Console.WriteLine("A:begin");
    for (int i=0; i < 10000; i++) {
    Console.WriteLine("A:{0}", i);
    }
    Console.WriteLine("A:end");
    doneA = true;
    }

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  11. Bitarray CopyTo long or uint

    Add a BitArray.CopyTo(uint[]) and BitArray.CopyTo(ulong[]) overloading.
    I have the problem that i have a BitArray with 48bit, which can have all bits to true. If i want to copy it to a ulong it's not a simple converting. A uint or a ulong are a naturally representation of a BitArray.

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  12. Add a default namespace prefix in visual studio options

    Currently, it is possible to define a base namespace for each project in a solution individually. However, I believe it would be extremely nice, to define a default namespace prefix for all projects in a solution/future solutions.
    RIght now it happens ever so often that you forget to change your namespace and you have to do it afterwards.

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  13. Add a default namespace prefix in visual studio options

    Currently, it is possible to define a base namespace for each project in a solution individually. However, I believe it would be extremely nice, to define a default namespace prefix for all projects in a solution/future solutions.
    RIght now it happens ever so often that you forget to change your namespace and you have to do it afterwards.

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  14. 0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  15. Incorporates "comprehension expressions" like python in C#

    Comprehension expressions are powerful when you work with lists. They are very simple to use and with less code it's able to solve many difficult problems.

    So, here is some examples of comprehension expressions:

    var L = new {1, 2, 3, 4, 5};
    for(var i = 0; i < L.length; i++)
    ... L[i] += 10
    ...
    Result:
    [11, 12, 13, 14, 15]

    Now with comprehension expression:

    var L = new {1, 2, 3, 4, 5};
    L = {n + 10 for n in L}

    Result:
    [21, 22, 23, 24, 25]

    Another sample using filter:

    var M = new [,]
    { …

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  16. Allow to initialize multiple fields to the same value in one statement at constructor call

    When using http://github.com/zoomicon/ZUI I would like to write:

    FloatingWindow window = new FloatingWindow()
    {
    Content = display,
    Title = IconText = title
    };

    but I have to write:

    FloatingWindow window = new FloatingWindow()
    {
    Content = display,
    Title = title,
    IconText = title
    };

    instead. For consistency, I'd prefer that it supported such assignment. Now it thinks IconText is some external field or similar

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  17. 0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  18. loosen c# langauge to allow static functions in namespace and port python math libraries to .net

    personally, I think python and javascript sucks as a language... I wish somebody would find a way to map the python and javascript api's into .net so we could get rid of them and use a real program language for everything...

    if you have to make c# a little less object oriented and more functional to do that...its worth messing the c# language up to do it just to get rid of the sucky python and javascript languages that everybody loves to hate...

    biggest flaw of c# is that it doesn't suck enough to complete with sucky languages like python…

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  19. Allow new in C# without giving Type

    see https://zoomicon.wordpress.com/2015/08/23/suggestion-allow-new-in-c-without-giving-type/ for a description of this suggestion

    Instead of

    List<CultureInfo> result = new List<CultureInfo>();

    in C# I’d prefer to be able to write

    List<CultureInfo> result = new ();

    inside the () one would be able to pass contructor parameters and also they should be able to use

    SomeClass v = new (someParam) { someProperty = …, otherProperty = … };

    syntax, that is be able to initialize properties of the class

    The idea is to allow syntax like:

    SomeClass v = new (someParam) { someProperty = …, otherProperty = … };

    and

    Type v = new (…){…};

    which is…

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →
  20. Elite Pakistani Escorts in Sheikh Zayed Road【+971-524553990】

    This suggestion is migrated to Developer Community. Please use below link to view the current status.
    https://developercommunity.visualstudio.com/content/idea/351785/elite-pakistani-escorts-in-sheikh-zayed-road971-52.html
    We are here to Serve You Excellent Pakistani Escorts in Sheikh Zayed Road We Provide Hot stunning Young Models +971-524553990 for satisfaction you will get all your dream comes true while having fun with these Independent Pakistani Call Girls in Sheikh Zayed Road, Hire an Amazing Service such a Wonderful Naughty Girls who are ready to Offer you Elite Service Call us Now. https://www.vipindian-escorts.com/pakistani-escorts-sheikh-zayed-road/
    #PakistaniEscortsInSheikhZayedRoad, #EscortsInSheikhZayedRoad, #PakistaniCallGirlsInSheikhZayedRoad, #CallGirlsInSheikhZayedRoad,

    0 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C#  ·  Flag idea as inappropriate…  ·  Admin →

Feedback and Knowledge Base