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. control + First Letter short cut Key for Properties (was available in vb6)

    Can we have short cut keys for the Properties of an Object, It was even available in VB6, Since from 2003 missing this functionality a lot.

    Would be great if we can have this functionality asap

    6 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - Visual Basic  ·  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. Typedef for .NET

    Typedefs in C/C++ world are a very useful tool, and something similar is really missing in .NET languages.

    Typedefs are used to
    - Shorten complex type definitions
    - Abstract from the actual type in some cases
    - Specify the exact usage of a type

    An example of the last usage is what I am facing now. I have different kinds of IDs - database-defined ID, user-defined ID, imported ID, etc - and they all are basically integers, so it is trivial to make a mistake of assigning one to another without a proper look-up. What I'd love to have is…

    6 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  3. vb.net: make generated code-artefacts like class, sub, fields, methods: public, protected or private

    The default-behaviour if you type something new or unknown in your code and you work with:
    - "generate class"
    - "generate property"
    - "generate field",
    - "generate method"
    do some random things.

    Often you get a "Class MyClass..." without specification of "public", "private", or "protected".

    A Class-Field becomes a "Dim myField"... instead of a "Private myField"

    More and more frameworks using reflection to work and it's not really clear whats the default of an empty directive or a dim instead of private
    does.

    It is not really easy to see those things if you search issues in your code...
    So…

    6 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  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. 6 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  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. 6 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  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. Better variant support in vb.net?

    I have been fooling around with devices in VB.NET and I have found out that variant support for c++ dll modules is poor at best in VariantHelper. Would it be possible to have an advanced version of variants in vb.net much like vb6? It is annoying when some modules such as native c++ dlls require full-fledged variant and will not work with the object data type. Can you please tell me if this will be implemented in a future version as a possible datatype?
    I would equate this similar to var functionality in C# but a little more complex. If…

    6 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  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. Extension Methods should be allowed to be defined in Classes

    Why are we only allowed to add Extension Methods to modules and not classes?
    1. Modules are a vb6 hangover and have no real place in vb.net
    2. The compiler converts Modules to Classes anyway so why the restriction in the IDE? This is a pseudo restriction.
    3. You cannot have a Partial Module.

    The *Only* time I am forced to use a Module is for Extension methods. I *Never* ever use Modules (same as I never use the VisualBasic Namespace) in my code anywhere.

    Example:
    This is allowed.

    <System.Runtime.CompilerServices.Extension()>
    Module mFooExtensions

    <System.Runtime.CompilerServices.Extension()>
    Public Sub Append(this As System.Text.StringBuilder, ParamArray strings()…

    5 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  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. Add native IN (or AMONG) and BETWEEN operators to VB

    Instead of
    If x = 3 OR x = 8 or x = 12
    I should be able to type:
    If x in {3, 8, 12}

    And instead of
    If x>=2 and x<=10
    I should be able to type
    If x between 2 and 10
    (similar to SQL).

    5 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  9. Make the declaring matching operators (such as =/<>) optional

    When defining an operator such as:
    Public Shared Operator =(value1 As Binary, value2 As Integer)
    Return value1.ToInt32() = value2
    End Operator

    The compiler should automatically default the matching "<>" to "Not =" thus avoiding the now mandatory declaration:
    Public Shared Operator <>(value1 As Binary, value2 As Integer)
    Return Not value1 = value2
    End Operator

    5 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  10. 5 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  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. Ability for inline multiple variables assignment

    It 'll be nice to write something like

    a = b = c = 6

    instead of

    a = 6
    b = 6
    c = 6

    5 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  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. Exception-type list after the Catch keyword

    Try
    ....PossibleException()
    Catch aException, bException, cException
    ....MessageBox.Show("a or b or c ERROR")
    End Try

    In addition, I'd like to propose a reserved keyword wich can represent the Exception object of the current Try-Catch block for example with the following built-in and hidden declaration:
    CurrentException As Exception

    Try
    ....PossibleException()
    Catch aException, bException, cException
    ....MessageBox.Show(CurrentException.Message)
    End Try

    4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    6 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  13. Compile time properties such as Name and Type acessible via '.#'

    I suggest a new selector, .#, so we can access compile time information, such as elements names, unamed object types, etc, in a more practical way.

    Suggested properties:

    .#Name - the element name
    .#Type - the element type
    .#ElementType - the element type of a List item
    .#Ref - "address" of a method (may be used instead of AddressOf)


    'example 1 -- preventing hardcoding an element name
    If PropertyChangedName = Target.Strength.#Name Then
    ...
    End if


    'example 2 -- mannualy creating an anonymous type element
    Dim Enemies = (
    from N in EnemyList
    Select New With {
    .Name = N.Name,
    <lots…

    4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  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. ByRef overloading in VB

    The following "Add" methods in C# can't be called by VB codes directly.

    public class CCRawList<T> : IList<T>
    {
    ...
    public void Add(T item)
    {
    Add(ref item);
    }
    public void Add(ref T item)
    {
    if (count == Elements.Length)
    {
    Capacity = Elements.Length * 2;
    }
    Elements[count++] = item;
    }
    ...
    }

    So, please implement a new syntax for VB like this to perform ByRef overloading:

    Add(ByVal item) ' equals to Add(item); in C#
    Add(item) ' equals to Add(ref item); in C#

    4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  15. Dyn keyword to declare dynamic object

    Along with Dim keyword there have to be Dyn to declare dynamic object and get rid of using option strict off for the whole file.

    3 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  16. WCF Data services currently does not support datatimes like Time, Timespan, etc. Maby it should.

    WCF Data services currently does not support datatimes like Time, Timespan, etc. Maby it should. Or at least some way to convert on the fly.

    4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  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

  17. The "Is" keyword let be a real reference in the Select block.

    Select Case i
    Case 1, 5, 10 To 20
    FuncSpec()
    Case IIf(Is Mod 2 = 0, Is, Nothing) ' the "Is" keyword is a read-only reference of the "i" variable
    FuncEven()
    Case IIf(IsPrime(Is), Is, Nothing) ' the "Is" keyword is a read-only reference of the "i" variable
    FuncPrime()
    Case Else
    FuncOther()
    End Select

    'Advantages:
    ' - branching by any kind of case (not only by equality or range or comparison operator)
    ' - no need to convert to If block (what is redundant and less readable)

    4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    5 comments  ·  Languages - Visual Basic  ·  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. Namespace intellisense

    When entering a name space with the namespace keyword there should be intellisense support!

    for exemple Namesace myProject.

    should list the namesaces that have been previously created such as
    myProject.Space1
    myProject.Space2
    etc.

    4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - Visual Basic  ·  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. using the API of Master Data Services(SQL Server2008)inASP

    How I can create Model, Entity & Attributes in MDS via Web-Application and how I can work with attribute values (select, update, edit or delete the values)

    4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  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. 4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  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