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. Expression Trees and Lamda Expression can pass to WCF services as parameters

    As we Know,We can't send Expression Trees and Lamda Expression as parameters via WCF services.If we have this feature we can send Predicates,Selectors,... to other project LAYERS and so beneath layers should not know very much of above layers.

    30 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 →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.
    - The Visual Studio Team

  2. Add catch block after using {} statement

    For example i can write
    using(var sr=new StreamReader())
    {
    .....
    }
    catch(IOException ex) //block for exceptions inside using
    {
    }

    30 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 →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  3. Fix Razor integration

    Razor integration is actually worse than it was in 2010 which is very disappointing, I was imagining all the bugs fixed!

    1. Fix no razor intelisense or understanding inside Javascript blocks. I realise its complex but it worked almost in 10 now it is completely broken.

    2. If you cant fix it at least don't pollute my Errors list with hundreds of useless errors that actually aren't errors, reclassify as Warnings or let me do that.

    3. Typing " in a razor statement blocks UI thread for on average 6,5 seconds (over 10 tries), this is ABSOLUTELY shocking and shows…

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

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  4. decltype in C#

    There is a good feature in C# - var keyword for type inference (http://msdn.microsoft.com/en-us/library/bb384061.aspx).

    It allows you to write something like this:
    var a = newMyClass(); // a has type MyClass

    There is the same feature in C++11 - auto keyword, but in c++ you :
    auto a = new MyClass(); //a has type MyClass*

    But in C++11 you also have decltype operator which means the type which have some expression.

    So my suggestion is to add decltype analog to C# to write:

    var a = new MyClass<int, MyClassB>.InnertClass();
    var listOfA = new List<vartype(a)>();
    // listOfA will have…

    29 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 →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  5. infoof operator returning MemberInfo

    The idea of an infoof operator is, to simplify reflection.

    Example for a Property:

    infoof(MyClass.MyProperty) returns PropertyInfo

    Examples for Methods:

    infoof(MyClass.MyMethod)
    infoof<gen0T, gen1T>(MyClass<gen0>.MyMethod<gen1>, paramType)

    Examples for ConstructorInfo:

    infoof(MyClass)
    infoof(MyClass, param1Type)
    infoof<genT>(MyClass<genT>)

    Where typeof returns a Type for a class, the infoof returns a ConstructorInfo for a class.
    The infoof operator returns all other MemberInfo's, except of Type.

    I'm sad of enumerating members, validating by name string and by enumerating generic arguments and parameters to get a member I need to invoke or qualify.

    This way, doing reflection would also become strong typed.

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

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  6. E4X Syntax Support in C#

    E4X offers a very simple and elegant syntax for assigning in-line XML data and XML data access and manipulation. The .NET Framework has some very powerful classes and assemblies for XML manipulation (System.XML, LINQ to XML). If the power of the .NET XML tools could be combined with the simplicity of E4X, this would not only simplify XML data usage, it would reduce the developer workload and offer a very attractive addition to .NET languages and Visual Studio! In addition, E4X could effectively be a wrapper for the already powerful .NET classes.

    For example (using proposed C#), assigning XML data: …

    28 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 →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.
    - The Visual Studio Team

  7. Enhance IntelliSense to show implemented interfaces and base class when hovering over an object (Quick Info)

    Showing this information (with the class description that is already available) would make it much easier to see what kind of object you are working with. It is very annoying to have to go to the definition to see this information.

    This will also let you easily see that you are working with an object that implements something like IDisposable.

    28 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 →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we havenÕt acted on it. Looking at the VS Ò15Ó plans, weÕre not going to take action on this item, so weÕre going to close it. If the suggestion is still relevant, please either take a look to see if thereÕs another suggestion thatÕs similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  8. Make CodeAnalysis in VS2012 support rulesets containg relative hint paths

    I am trying to use a relative path to a CodeAnalysis custom rules folder in a ruleset file as described here: http://blogs.msdn.com/b/codeanalysis/archive/2010/03/26/how-to-write-custom-static-code-analysis-rules-and-integrate-them-into-visual-studio-2010.aspx

    However, it seems that relative paths aren't working (I tried in VS2012 only).

    Please see here for details: http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/485cbddd-3489-4043-9563-d042643a6c63

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

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  9. 27 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 →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  10. Enable Generics for DataMemberAttribute, ServiceContractAttribute, and OperationContractAttribute

    Currently DataContractAttribute and CollectionDataContractAttribute both allow the use of generics and formatting the Name to account for the generics proplery. Example:

    [DataContract(Name = "{0}Item")]
    public class GenericItem { }

    [CollectionDataContract(Name = "{0}Items")]
    public SpecialCollection : Collection { }

    However, this does not work for the DataMemberAttribute, ServiceContractAttribute, OperationContractAttribute. I understand the need to have a concrete type so that a service can be exposed properly and is compatible, but even if you have a concrete type with these 3 attributes, it still does not work... the problem is that the code that generates the naming does not account for Generics.

    26 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 →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  11. Optimize for IReadOnlyList/IReadOnlyCollection in System.Linq.Enumerable

    Certain extension methods of Enumerable that currently optimize for IList (like Count, Last) could do the same for IReadOnlyList and IReadOnlyCollection.

    24 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 →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.
    - The Visual Studio Team

  12. Allow instance variables to be declared with scope of just a property declaration

    I often use instance level variables as backing storage for properties.
    I also try to lazy load these as often as possible.
    ie in the property getter if the instance level variable is null I retrieve the data, set it into the instance-level variable and then return the variable:

    private Customer customer;

    public Customer Customer
    {
    get
    {
    if (customer == null)
    {
    customer = Repository.GetCustomer();
    }
    return customer;
    }
    }

    However, if I need to refer to the Customer elsewhere in the class I have to remember to access it through the getter otherwise it will not be instantiated.…

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

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  13. Datatype date should be available

    There should be a datatype "Date" additional to existing datatype datetime.

    23 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 →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  14. Add Rx and Ix Query Comprehension Syntax Keywords

    Please add new keywords in query comprehension syntax to support useful Reactive Extensions (Rx) and Interactive Extensions (Ix). Here are just a few that come to mind:

    Observable.Publish & Enumerable.Publish
    Observable.Replay & Enumerable.Replay
    Observable.Concat & Enumerable.Concat
    Observable.Zip & Enumerable.Zip
    Observable.CombineLatest
    Observable.Take & Enumerable.Take
    Observable.TakeUntil
    Observable.Do & Enumerable.Do

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

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  15. improve c# intellisense

    Intellisense does not seem to act any differently when you are typing an argument for a method.

    Eclipse's intellisense was able to suggest items based on their type and the current argument that your cursor was in when calling a method.

    Visual Studio will suggest items based on previous usage or currently typed characters, regardless of whether it makes sense.

    For example, I have a enum type called "LogType" and a delegate called "LogTextDelegate." I also have a method with the prototype
    void Log(string text, LogType type)

    If I type the following, Visual Studio keeps suggesting "LogTextDelegate" instead of the…

    23 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 →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  16. Return type generic inference

    Java has support for inferring type arguments based on the return type:

    List<T> newList() { return new List<T>(); }
    List<int> theList = newList();

    The above (Java) snippet doesn't work in C#; it forces me to do:
    List<int> theList = newList<int>();

    It woudl be nice to get this sort of type inference implemented in the C# compiler! Of coruse, the follow should produce an error:

    var l = newList();

    (Although perhaps if the compiler were psychic, it would be able to infer that, as well.)

    =)

    21 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 →
  17. Allow for single-interface type instantiation

    Apart from ordinary object instantiation, C# already supports anonymous types: var x = new { ID = 5 }

    Now ... why not support one level higher?
    What I mean is given there's an interface IPerson, it'd be nice to be able to do this:

    var x = new IPerson { ID = 5, Name = "X", CanUpdate = () => true };

    This will open doors to some exciting opportunities like much easier Null Object creation and so forth.

    21 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 →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  18. Add possibility to use keyword CONST to method parameters like FINAL in Java

    Add possibility to use keyword CONST to method parameters like FINAL in Java.

    private void ToDo(const int year)
    {
    ....
    year = 1045; // Compilation error !!!

    ...
    }

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

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  19. Allow M<T> to M<U> functions in LINQ query syntax

    The LINQ query syntax is a good way to express monadic computations in C# and VB. Something that's missing from the query syntax, though, is a way to call functions from M<T> to M<U> (where M is the monad in question) without leaving the query.

    An example using LINQ to Objects, where M<T> is IEnumerable<T>:

    var firstQuery =
    from x in xs
    select x.a

    var secondQuery =
    from y in firstQuery.Reverse()
    select y.z

    Could more concisely and clearly be written as:

    var query =
    from x in xs
    select x.a
    Reverse()
    select y.z

    The exact syntax is unimportant - "call…

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

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  20. Conditions with multiple values check

    It's annoying when you want to check variable with multiple values
    if((number == 1 || number == 5 || number == 6) && number != 10)

    With suggested syntax it will look like this
    if((number || {1,5,6}) && number!=10)

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

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

Feedback and Knowledge Base