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. Value propagation

    Dim i, j, k as Integer = 0 '-> All variables are integers and initialized with 0

    i = j = k = 2 '-> All variables are receiving the value 2

    1 vote
    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 →
  2. Add a way to "inherit" sealed classes

    At this moment we can extend classes using:
    - inheritance (only unsealed classes)
    - extension methods

    But for sealed classes we cannot add fields or properties, and we can not shadow existing methods (I know that it is not possible to override methods in a sealed class).

    So it should be nice to have a "shadow" inheritance to make it possible to extend a sealed class.

    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 →
  3. 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 →
  4. Can you add in Visual basic an instruction by which we can grab the COM port names AND the DEVICE names that are linked to the Com ports?

    With My.Computer.Ports.SerialPortNames we can grab the port names such as Com1, Com2, etc but it would be a blessing to get the names of the devices connected to the ports as well.

    1 vote
    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 →
  5. Allow VB arrays with non zero lower bounds (as in VB6 and VBA)

    A modern language restricting arrays to have 0 lower bounds?

    By passing this limitation with .NET arrays (created with the Array.CreateInstance method) creates a A LOT of incompatibilities in mixed-language programming.

    1 vote
    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 →
  6. Bring #define (for cource-code-defined text substitution macros) to Vb.Net (and C#)!

    I propose to add a keyword that behaves like C's #define. To define pre compiler text substitutions in code. Hopefully this will also allow advanced users to define their own keywords and to unofficially add shortcut for vb' expressive syntax. It would improve productivity because code can be effectively 'compressed', meaning that developers would have to type less to get more!

    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 →
  7. Extend the With statement in Visual Basic

    Take the following code:

    object1.prop1 = object2.prop1
    object1.prop2 = object2.prop2
    object1.prop3 = object2.prop3

    Using the current With statement, I can rewrite this to:
    With object1
    .prop1 = object2.prop1
    .prop2 = object2.prop2
    .prop3 = object2.prop3
    End with

    To minimize the amount of typing, I'd like a second objectExpression in the With statement:

    With object1, object2
    .prop1 = .prop1
    .prop2 = .prop2
    .prop3 = .prop3
    End with

    0 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 →
  8. Allow lower Bound of arry indexes

    IN VB6 it was possible to declare arrays like Dim XY_array(5 to 11) as. In many cases this allows to avoid errors with an optimal matching data model.

    2 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 →
  9. In Visual Basic.Net there should be an NotCreatable Keyword in Class Definition

    Currently i'm writing a lot classes with the following constructor

    Public Class SecurityDefinitions

    ''' <summary>
    ''' Verhindert das Erstellen einer Instanz dieser Klasse.
    ''' </summary>
    Private Sub New()
    End Sub

    Better would be:

    Public NotCreatable Class SecurityDefinitions

    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 →
  10. Increment (++) and Decrement (--) Operators in VB.net

    The whole purpose of the .net framework is the methods should be common to all languages. In the case of System.Int32 you are not allowed to use the follow in VB:-

    TestValue++ or ++TestValue

    So if I had an array the following is impossible in VB but possible in C#:-
    TestValue = TestArray(Index++)

    So instead I have to write the following:-
    Index += 1
    TestValue = TestArray(Index)

    Please enhance VB to include Increment (++) and Decrement (--) Operators in VB.net as per the MSDN info on c# below:-
    https://msdn.microsoft.com/en-us/library/xzcawzfw(v=vs.100).aspx

    77 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 →
  11. 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 →
  12. #Enable Warning warning1, ... [As Error]

    I want to set different custom Option Strict between VB code files.
    But #Enable Warning can't treat warnings as error.
    So, I have designed a new syntax that enable error checks:
    #Enable Warning warning1, ... As Error

    1 vote
    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 →
  13. Let escaped identifiers be a means to address case-sensitivity issues

    Way back in July 2013, Raja Venkatesh expressed an exasperation in his post, "VB with other language(C#) interoperability", where he says: Guys developing webservices in C# many times use same variable name as string, property, enum etc. with just the case as different. ... The client code generated in my tool in VB language fails to compile stating "Variable already declared" as VB is case in-sensitive.

    I'm thinking maybe an escaped identifier (an identifier delimited by square brackets) could help in matters where case-sensitivity is an issue when using external code.

    Might it be possible for the compiler in resolving…

    1 vote
    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 →
  14. Allow for a (C++ style) reference to a Structure (value-type)

    In C++, one could have a reference to a structure like so: myStructType& myRef = myStructInstanceOfInterest;. To do something like that in VB today, there are these two ways:

    1. via ByRef parameter of Function or Sub
    2. as the target of a With statement

    The performance benefits are significant, especially as demonstrated by the With statement (see "Avoiding Requalification" at https://msdn.microsoft.com/en-us/library/aa289513(v=vs.71).aspx). (In its way, the With statement is indeed wonderful, considering a C# programmer would need to use unsafe, fixed, and pointers to do the exact same!). Living with the ByRef parameter option means taking performance hits especially…

    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 →
  15. Enable/Disable Unchecked Integer Arithmetic within the same Assembly

    Right now, the only option in VB is to go all-or-nothing via the advanced compiler option "Remove integer overflow checks".

    One way to achieve this could be to add an Option statement,

    Option Unchecked [On/Off]

    If the Option is present, follow its setting, otherwise default to the compiler setting (/removeintchecks). The Option applies only within its own *.vb file (like any other Option).

    2 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. New usage for Do: Do ... End Do

    A popular trick among VB programmers is:

    If True Then
    Dim myAutoVar1
    Dim myAutoVar2
    ' etc.
    ' ...
    ' All done, dispose of myAutoVar*
    End If

    This is done to have temporary variables for specific moments that are then immediately deallocated when each moment concludes.

    It works, but looks goofy. I'm proposing:

    Do
    Dim myAutoVar1
    Dim myAutoVar2
    ' etc.
    ' ...
    ' All done, dispose of myAutoVar*
    End Do

    The End Do would work about the same as Loop Until True. Indeed the added benefit is that Exit Do and Continue can still be legitimate, so that one could exit…

    1 vote
    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 →
  17. Remove "doesn't return a value on all code paths" Warning for Enum

    When creating a Function or a Property's Get method, it is not unusual to use a Select statement to return a value based on a variable that is of an Enum type. Because an Enum type has a finite (and usually small) number of possible values, it is not uncommon to have a Case for each one. If there is a Case for each one, and each one returns a value, there is no need for a Case Else or other Return statement, yet Intellisense gives a Warning saying that the method does not return a value on all code…

    0 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 →
  18. I would like to make a application for the Boston accent

    I would like to make a Boston accent speak application for all iPhone and Android users in the Northeast

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    closed  ·  0 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  19. Return Value within IIF (IIF(x =0, Return True, Return False)

    Would be nice, when it would be possible to write a single line, instead of a multiline Code.
    Example:

    Public ReadOnly Property HasErrors As Boolean
    Get
    If myErrorList.Count = 0 Then
    Return False
    Else
    Return True
    End If

    End Get
    End Property

    Would be more readalbe, when it Comes to:

    Public ReadOnly Property HasErrors As Boolean
    Get
    IIf(myErrorList.Count = 0, Return True, Return False)
    End Get
    End Property

    THX

    3 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 →
  20. Allow the Dim keyword to be optional.

    For example, instead of:

    Dim a As Integer
    Dim b As Double
    Dim c As CustomType

    allow this syntax:

    a As Integer
    b As Double
    c As CustomType

    VB code would be cleaner and less verbose. (Possibly the compiler/parser could use the As keyword to recognise that a variable is being declared?).

    18 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 →
← Previous 1 3 4 5 8 9

Feedback and Knowledge Base