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. 12,075 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    9540 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →

    We have read all of the comments on this thread and I’d like to thank you for providing your constructive feedback on this issue. Instead of merely repeating our support and migration guidance that has been laid out on http://msdn.com/vbrun, I’d like to address some of your specific comments here.

    To play back the feedback themes we’re hearing:
    - VB6 is awesome
    - VB6 needs to be brought forward and maintained: in a new release or OSS

    VB6 was and still is without a doubt awesome. VB6 made developers incredibly productive building a breadth of applications and as a result we have a wealth of applications and passionate developers to this day in 2014. One way I see our mission in developer tools is to empower developers to solve problems. This includes both today’s problems AND the problems of tomorrow. VB6, as you all have stated repeatedly in this…

  2. Provide a Visual Basic 6 Community edition - to allow free download of the VB6 programming language

    Make a Visual Basic 6 Community edition free download of the Microsoft VB6 programming language and IDE available.
    Microsoft already have a VS2013 community edition and also a free download of Expression Web.
    Now please allow a 'Community Edition' of VB6.

    1,742 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    546 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →

    We have no plans to release a new incarnation of the Visual Basic 6 IDE, either as an incremental update or a free “Community Edition”. Some of you have expressed concerns that without such a product it would be difficult or impossible to maintain your existing Visual Basic 6 applications using a licensed version of the product. Please note that Visual Studio Community has a license that restricts use for enterprise development and as such a Community Edition of the Visual Basic 6 IDE would not actually address that concern. Additionally, your original license for VB6 is perpetual so provided that you still have the license key you may continue to install the product for current and future use. Lastly, the Visual Basic 6.0 IDE is available to all MSDN subscribers and can be downloaded at any time from the subscriber downloads section and installed. A generic subscriber key…

  3. VB6 Programming - Create a utility to convert VB.Net to VB6

    With the news of the decline of C# and .Net, Microsoft should create a utility that converts VB.Net code to VB6.

    http://t.co/doKJ712Kqm

    148 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    declined  ·  98 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  4. Add support to the Forms Interop Toolkit for Visual Studio 2012

    Currently the Forms Interop Toolkit plugin http://www.microsoft.com/en-us/download/details.aspx?id=3264 is supported up to Visual Studio 2010.

    My company is currently migrating our flagship product from VB6 to VB.NET and we wanted to use the Forms Interop Toolkit to help us do this gradually however we want to use Visual Studio 2012 which is currently not supported by the Forms Interop Toolkit plugin.

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

    I want to personally thank you for taking the time to share this suggestion. Since the suggestion you raised has not gathered many votes, the Visual Studio team is prioritizing other suggestions and closing it at this time.

    If you would like us to reconsider this, please create a new suggestion. Again, thank you for sharing with us!

    Paul Chapman
    Program Manager, Visual Studio

  5. Introduce Shared Class like in c#

    This should be equivalent to the static class in c# (support for extension methods, enforces to make each member Shared) and make it possible to write extension methods without Modules.

    Why not use modules?

    They have the big disadvantage that there is no way to enforce callers to write the ModuleName explicitly. This leads to poorly readable code and does not fit into OO principles.

    That's why I only use them for extension methods. For all other needs I try to emulate the c# static class like this:

    Public NotInheritable Class Example
    Private Sub New()
    End Sub

    ' Shared members …

    39 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 →
  6. Allow Type inference on class variables

    Make programming with types more easy.

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

    Hey Gijs,

    I just responded to a similar suggestion on function return types but the response applies equally to class variables so I’ll give you the same response (again, everything I write for functions applies the same for class variables (aka fields) because of initializer expressions).

    The language design teams are very reluctant to enable type inference at the member level; it’s just too costly. It’s more an implementation thing than anything but sometimes implementation rules.

    So here’s roughly how the compilers work – they parse all of the source files in a project. Then they scan over all of the source code looking for top-level declarations like types and namespaces and adds them to a table of names somewhere. Once we have that information anywhere else the compiler sees a type name written in source it can know which type it is (even if it doesn’t know what Customer…

  7. Allow functions to have an implicit return type

    This is primarily something that I find is a problem when using Linq. eg.

    Function GetCustomersForDisplayInGrid( Customers as IQueryable(Of Customer))
    Return (from c in Customers Select c.ID, c.Name, c.ContactName, c.Address1, c.Postcode, c.Tel1)
    End Function

    I have a problem, because I don't have any way to define the return type of that function. I could create a class/structure and select each result into that, but if I am using Linq to SQL and I then query the results of this function further in SQL - I'd have to get them to memory first, which is not efficient.

    What would be really…

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

    Hey Martin,

    It is unfortunate that LINQ gives us these great anonymous types without any real way to pass them around across method boundaries in a strongly typed way. The language design teams are pondering ways we could accomplish this but none them really include type inference at the member level; it’s just too costly. It’s more an implementation thing than anything but sometimes implementation rules.

    So here’s roughly how the compilers work – they parse all of the source files in a project. Then they scan over all of the source code looking for top-level declarations like types and namespaces and adds them to a table of names somewhere. Once we have that information anywhere else the compiler sees a type name written in source it can know which type it is (even if it doesn’t know what Customer is it knows there is one and where it is).

  8. All future versions of VB.Net should use same keywords as C#

    This seems like a no-brainer to me, dunno why this wasn't done from .Net 1.0. Kind of ******** having two languages that are virtually identical but then deliberately using different keywords.

    Guess the horse has bolted though.

    Wish C# and VB could have been amalgamated over time - having two functionally identical languages - line for line - just seems so pointless to me.

    5 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    declined  ·  6 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  9. As in C # to the spelling of the variables are divided into VB.

    As in C # to the spelling of the variables are divided into VB.

    example:

    dim MyArray as new Integer(){}
    dim myArray as new String(){}

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

    Klaus,

    As others have mentioned VB is very intentionally not a case-sensitive language. In some ways that’s one of its strengths and inline with its design philosophy. Though there may be conventions on when to choose what case, as there are in English, also like English the casing of a word doesn’t create a completely independent entity or concept, by design. That insensitivity is easier for new programmers, more productive for intermediate and advanced developers, and allows for a far more forgiving IntelliSense experience. In all my time using the both languages I’ve never seen a situation where case-sensitivity would be of any benefit. Even when looking at C# the most common usage is differentiating properties from their backing fields and in VB the _ prefix is far more common, especially now that this convention is enshrined via auto-props. It would add a tremendous amount of complexity and virtually nonexistent…

  10. Allow C#-style Lambda Expression Syntax in VB.NET

    While I'm a great fan of LINQ, both with the Query syntax and the Fluent syntax, I do feel that VB.NET's implementation of Lambda Expression syntax feels a lot clunkier than C#.

    Compare:

    db.People.Where(Function(p) p.LastName = "Smith")

    versus:

    db.People.Where(p => p.LastName = "Smith")

    While it's a minor cosmetic change in the example above, it adds to when you chain multiple lambda expressions together when building a query in the fluent syntax:

    db.People.Where(Function(p) p.LastName = "Smith").Select(Function(p) p.Mother).Select(Function(m) m.Birthdate)

    versus:

    db.People.Where(p => p.LastName = "Smith").Select(p => p.Mother).Select(m => m.Birthdate)

    Could we please get some syntactic sugar in VB.NET to allow us to…

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

    Hey Mike,

    Thanks for taking the time to reach out. I’m curious from your example why you’d use the lambda syntax at all in this case. It’s important to note that once you introduce a single .Where call it’s always shorter to have written a query:

    Dim smiths = db.People.Where(Function(p) p.LastName = “Smith”)

    ’ Remember the final Select in VB is optional unless you’re selecting something other than the range variable(s) in scope.
    Dim smiths = From p In db.People Where p.LastName = “Smith”

    And yes, this effect compounds over time with each additional call

    Dim birthdays = db.People.Where(Function(p) p.LastName = “Smith”).Select(Function(p) p.Mother).Select(Function(p) p.BirthDate)

    ’ All valid
    Dim birthdays = From p In db.People Where p.LastName = “Smith” Select p.Mother Select Mother.BirthDate
    Dim birthdays = From p In db.People Where p.LastName = “Smith” Select p = p.Mother Select p.BirthDate
    Dim birthdays = From p In db.People Where p.LastName = “Smith”…

  11. Delete objects from the Object class

    When you use several objects in a method or in a class, you delete objets so:
    br=nothing: fs=nothing: sr=nothing, etc...

    I want may to delete objetcs (when are several) so:
    Object.SetNothingFor(sr,fs,br...)

    So, SetNothingFor would be a shared method of object and parameters it's an paramarray list of objects.
    Don't care if then in compiler time, the code was same what actual, but save time for to write and it's more readable.

    4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    declined  ·  2 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  12. A new block statement conception

    It's a bit long but very easy to understand.
    The following block statements would have members as well as the objects:
    If
    Select
    While
    Do
    For
    For Each
    Try

    First of all, some simple examples...
    - the Exit and the Continue block-member-statements:
    For i = 0 To 99
        Select Case i
            Case x
                For.Exit
            Case y
                For.Continue
        End Select
    Next

    - an example to control the outer For loop:
    For i = 0 To 99
        For j = 0 To 99
            Select Case j
                Case a
                    Select.For.For.Exit
                Case b
                    Select.For.For.Continue
            End Select
        Next
    Next

    - same with short qualification:
    For…

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

    Hey Robert,

    Thanks for the suggestion. You’ve got an interesting idea. You’re welcome to explore the concept further by prototyping with a fork of the recently open sourced VB.NET compiler (http://roslyn.codeplex.com) In a way it looks like a merge between the current language and the syntax APIs we expose on top of the compiler.

    Having said that the feature as described currently feels like a massive departure from the way the language works today. It adds a lot more conceptual weight. This is not the direction we’re planning on taking the languages in and not really the kind of changes we’d consider for an established mature language, particularly without a fantastically important reason.

    Regards,

    Anthony D. Green, Program Manager, Visual Basic & C# Languages Team

  13. 4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    declined  ·  4 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  14. How about a community enhanced version of VB.NET on codplex?

    I was wondering if VB.NET could have a community source page released on codeplex. This would be similar to TorqueCV (The community enhanced version of torque). I thought it should be called VBX.NET since the purpose to make it as reliable and easy as VB6. The advantages would:
    1. You could implement a function that Microsoft has failed to do so or just has not had the time to do so.
    2. No more waiting for VB6 or support to come implement functionality needed now and share with people.
    3. The files will have source shared so improvements can be…

    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 →

    Hey everyone,

    If you hadn’t heard already last week at BUILD we Open Sourced VB.NET (along with C#) as part of the “Roslyn” project. It’s on CodePlex and you can check it out today @ http://roslyn.codeplex.com/

    Anyone is more than welcome to clone it, fork it, and fiddle with ideas now. We’re all actually excited to see what cool things the community comes up with so if you come up with something great let us know – maybe we’ll fold it back into the main language. I’m marking this suggestion “declined” only because we’re not going to create the CodePlex project but you all should feel empowered to (if it hasn’t been done already).

    We also announced the PUBLIC release of a Preview of the next version of the Visual Basic language and code editing experience powered by “Roslyn”. You can download this preview and install it on top…

  15. Using Between operator in the Select Case statement

    Select Case sLastName
    ....Case "Brown" >< "Lee"

    ....Case Else

    End Select

    Select Case dteCreate
    ....Case dte1 >< dte2

    ....Case Else

    End Select

    Select Case dblX
    ....Case 0.4 >< 0.5

    ....Case 0.5 =>< 0.6 ' ** for considering **

    ....Case 0.8 ><= 0.9 ' ** for considering **

    ....Case Else

    End Select

    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 →

    Hey Robert,

    It’s worth mentioning that VB Case statements already have limited support for range expressions with the To keyword:

    Select Case dblX Case 0 To 0.4 Case 0.4 To 0.5 Case 0.5 To 1.0 End Select

    It’s an inclusive check though so it’s really seeing if dblX >= 0.0 And <= 0.4 which means that the second case will never run if the value is actually the lower bound (effectively making subsequent cases lower-bound exclusive). An alternate way of writing it to be a little clearer is to use < for the ranges:

    Select Case dblX Case Is <= 0.4 Case Is < 0.5 ’ Necessarily > 0.4 Case Is < 0.6 ’ Necessarily >= 0.5 Case Is <= 0.8 Case Is <= 0.9 ’ Necessarily > 0.8 End Select

    The VB Select Case statement is pretty powerful, and we’re actively looking at ways to improve it but more…

  16. Make keywords "ReadOnly", "WriteOnly" and "Optional" optional

    At work, I sadly have to write some VB.NET code from time to time, and as a C# developer, some keywords are highly questionable.

    Of course I know that VB.NET adds some useless keywords to make things clearer or "more defined" for basic developers, but they should be at least optional, since the compiler can automatically recognize the need for them and they just make VB.NET code more busy than it already is.

    - ReadOnly and WriteOnly
    These can be automatically recognized by looking at existing Get and Set blocks of the property. Additionally, auto-implementend properties should be able to…

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

    Hey PacMani,

    Thanks for taking the time to submit this suggestion.

    Though VB does value readability highly (and they help with that), the ReadOnly and WriteOnly modifiers aren’t simply there for documentation purposes. They also inform the IDE whether and how to automatically generate the End Property construct and a Get or Set blocks. That’s a particular IDE experience that when you type ReadOnly Property P As T and hit a template for a ReadOnly property is generated (because ReadOnly properties require a body). In 2015 we’re actually dialing that experience back a little because we’re introducing ReadOnly auto-implemented properties in VB. That means that ReadOnly alone isn’t enough to signal the user intention to provide or not provide a body. In which case the function of the modifier isn’t to change the editing experience but to signal to the compiler whether or not the auto-prop is read-write or read-only.…

  17. Make "Call" statement in VB REALLY "optional"

    I'd like to be able to do the following:

    (new myclass).dosomething()

    because I dont like, if it needs to look like:

    Call (new myclass).dosomething()

    In C# the first syntax is no problem, in VB I'm forced to use the ugly duck ("Call") ...
    If the compiler is clever enough to notice, that a line MUST continue even if there is no "_" to explicitely tell it to him, why can't the compiler be clever enough to insert a "call" (in the background) when the developer doesn't put one in?

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    declined  ·  1 comment  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  18. Avoid nesting levels for Namespaces in VB and C#

    In VB (and C#) if I want to create nested namespaces I have to use syntax like the following...
    Namespace Foo
    Namespace Bar
    End Namespace
    End Namespace

    This adds two extra nesting levels to the file, which I find annoying, because I try to keep within 80-100 columns for readability.

    I actually like the Java package syntax for this, and it would fit well with VB, because the Option and Imports keywords already work at this level.

    Namespace Foo.Bar

    Including the line at the top of the file (after Imports and Options) would cause the rest of the file to…

    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 →

    Hey Justin,

    Thanks for the suggestion. I can understand how horizontal screen estate is at a premium. In your example you used two nested namespace declarations but in both VB and C# you can combine these into a single namespace block:

    Namespace Foo.Bar

    Class C End Class

    End Namespace

    This still adds a single level of indentation but that’s a lot better than 2 or more. In C# this is the standard level of indentation by default but in VB most classes don’t require a namespace declaration by default due to the project-level Root namespace property. Given that namespace declarations are already pretty well-understood and the marginal benefit saving a few whitespace characters would grant for the tradeoff of adding another mechanism to the language we’re going to decline this suggestion and return your vote back to you to use for other suggestions.

    Regards,

    Anthony D. Green, Program Manager, Visual…

  19. In vb.net replace addressof with @functionname

    Rather than using a long address of, allow @functionname

    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 →

    Hey pm,

    Thanks for the suggestion. The thing about VB is that keywords are generally preferred from a language design standpoint to cryptic symbols and implication. functionname really doesn't convey much to the reader unless they're already very familiar with the VB syntax. I'm not saying AddressOf is wildly better but it does make a better jumping off point for doing a reference search or discussing the right terms with other developers (you can ask a chatroom or forum about AddressOf or bing "AddressOf" and get help - it's much harder to search for "". Combined with the fact that it’s been in the language since VB5 (so 6+ releases now) it feels like something that’s pretty baked. While I’m not saying we’d never add a new syntax to the language purely for the sake of brevity or cosmetics there are certainly higher priority and more common statements and…

  20. Improve VB Editor

    VB editor is slow specially if there are many errors in code. The reason seems to be that the code is permanently analyzed in background. It would be fine if the behavior of the VB editor would be adjusted to the behavior of the C# editor which is much faster.

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    declined  ·  2 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
← Previous 1

Feedback and Knowledge Base