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. 安装了visual studio 2017以后让我让我的c盘空间变得更小了,我建议能够更新这方面的问题

    安装了visual studio 2017以后让我让我的c盘空间变得更小了,我建议能够更新这方面的问题

    1 vote
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  2. Intellisense Support for C++ XML Comments at Function Definition (Modules)

    Visual studio currently supports intellisense for C++ functions commented with the XML syntax used for C# only if the comments are over the function declaration. This would be better if intellisense could also pull the information from comments over the function definition. Including comments within the declaration of class (in my opinion) is quite messy. I appreciate that this may not currently be feasible but when modules become a reality it will be a necessity as the function specification may not be communicated with a header.

    6 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  3. Speedup the C++ build system

    Speedup C++ builds using checks cache.
    See https://github.com/cristianadam/cmake-checks-cache for details.

    Ninja is nice for one machine.

    If you can enable distributed caching and distributed builds as well, please.

    2 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  4. Make the Compile button part of the default Build toolbar

    Every time I start a new solution I end up adding the Compile button to the build toolbar... why on earth is it not there all the time. It is the button I use the most often.

    2 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  5. Intelisense speed

    It is terrible slow. Please speed it up in C++.¨
    Why is it parsing couple of minutes again and again moment after moment?
    Why goto definition/declaration take so long?
    Etc. etc.
    It is often unusable.

    3 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  6. c/c++ compiler option to enforce single declaration per statement

    I often have to explain pointer usage in C/C++ to newcomers, and I find the biggest obstacle that newcomers have to overcome is invariably a result of the clumsy pointer declaration that has become (for reasons that confound) generally accepted of late:

    datatype *pointer = address;

    Obviously the declaration is criminally wrong in its spirit, but does partially fix the historical problem of multiple declarations of mixed types: 'datatype variable, *pointer;'

    It would seem logical as well as highly desirable that a C/C++ compiler
    provides some way of breaking compilation if multiple declarations
    are being made in a single statement.

    1 vote
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  7. Make C++ compiler to evaluate right order of compilation of C++ module units

    C++ translation units are independent and can be compiled in any order and in parallel.
    Unlike translation units C++ module units may depend on each other and may spread across several translation units. Undefined order of compilation leads to compilation errors.
    The second problem is that when changes are made in the code only the updated translation units are rebuilt. It's not enough for C++ modules. If changes are made in the module interface when all the dependent modules must be rebuilt.

    6 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  8. Change DoDataExchange to use a tooltip

    With DoDataExchange, when using a CComboBoxEx it uses a nice tooltip to tell the user that the data is not numeric.

    But for validation, it uses popup message box. I think it would be nicer to show a tooltip like in the other example with the information.

    Can this be considered please?

    1 vote
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  9. Shut up about "C++ Intellisense information may be out of date, generate CMake cache to refresh"

    The highlighted yellow bar is distracting me. I don't need the Intellisense, but I really want to dismiss that line, clicking Generate doesn't help because there are some errors that I don't care, and clicking settings to ask it never generate doesn't work out either.

    32 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  10. Header generated for .tlh and .tli files

    The Microsoft C++ compiler currently generates a header like this one when importing from an external .tlb or .dll.

    // Created by Microsoft (R) C/C++ Compiler Version 14.13.26129.0 (6ddc810e).
    //
    // c:\workspace\development\bridgenet\application\bridgenet.compiler\release\probeenvsrvr.tlh
    //
    // C++ source equivalent of Win32 type library probeenvsrvr.tlb
    // compiler-generated file created 03/26/18 at 14:04:41 - DO NOT EDIT!

    There's not much purpose to having a file include a path to itself in the header. If i ever open this file to view its content, then I already know where the file is located. (And if I don't, the Visual Studio IDE will tell me anyway.)

    1 vote
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  11. include what you use

    Include What you use.. but for Visual Studio not just Clang

    See: https://include-what-you-use.org/

    Essentially, it optimises your include headers and uses forward declaration where it can to speed up your compile times. This only works with Clang right now - so can Microsoft work on something similar for Visual Studio C++ users?

    2 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  12. integrate vcpkg into IDE

    You should, and maybe must, integrate the vcpkg into visual studio.
    I really love it.
    So, please integrate it into the IDE.

    13 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  13. Warn on missing field initializers

    eg.:

    struct Foo{
    int a, b;
    bool c;
    };
    int main()
    {
    Foo foo{1,2};
    return 0;
    }

    I'd like a warning for when I do aggregate initialization but forget to initialize one of the variables (C++ states they'll be default initialized, but this can cause bugs...).

    6 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  14. Add Macro ${buildRoot} to tasks.vs.json

    I am using Visual Studio 2017 to build a cross platform project with CMake and the "Open Folder" feature.
    This project has dependencies that needs to be installed so I add a task to my tasks.vs.json in order to install them into my CMAKE_BINARY_DIR which corresponds to the macro ${buildRoot} of the file CMakeSettings.json. But the problem is that there is no way of accessing this macro from tasks.vs.json. I have to hardcode the path for every configuration so I need also to create tasks for every configuration. If I had access to ${buildRoot} I only need one task for…

    20 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  15. Enable placing header comment blocks at the end method signatures on the ends of lines instead of only before the lines.

    Instead of only allowing function/method documentation comments to be placed above the function signature enable us to place them on the same line as the signature at the end of the line. Providing some way to insert new line characters into the comment would be ideal for this.

    1 vote
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  16. Optimimize the use of 'bool' type to that of an 'int' type.

    There is an average of 40% increase in machine instructions generated for 'bool' type over the equivalent use as an 'int' type, and performance blows. Say you have an operator that returns 'bool' and it tests for an enum (flag set) with one of its enum values. The generated instructions shifts the enum value to bit 0, then tests if the resulting register's bit 0 is 1. Using an 'int' simple tests the bit. A difference of 3 instructions and no unnecessary shift occurs.

    1 vote
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  17. CMake - Automatically Add Sources and Headers to a VAR in a .cmake file

    Request:
    Auto-generate and maintain a .cmake file for CMake projects which holds nothing but a list of sources and headers as auto-generated variables. This will eliminate the extremely tedious need for developers to add/remove/move files in visual studio, and then manually add/remove/move them in a CMake file.

    For example:

    SET(my_project_name_SOURCES
    <source1.cpp>
    <etc...>
    )
    SET(my_project_name_HEADERS
    <source1.h>
    <etc...>
    )

    In Visual Studio projects, when you add a source or header file, it's automatically added to your project files because that's an obvious thing to do. It currently doesn't do this for CMake projects. It's understandable, as doing this automatically and intelligently in…

    18 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  18. In case of daubt i prefeur my performance. SO no performance sacfrifice for more safety, because absolutely safety is an illusion.

    I took part on the contest, which the market makes with more and more fast Computers and Software which Needs the fast Computers. Now i have a very fast Computer Double core 2x 3GHz. SO i want the full Performance. The Software Needs more and more resources as newer it is. But I use only the same functions, which the older Software also had, im private user, which doesn't Need all the new functions from the last years. I bought the new faster Computer only for better Performance. And now i want use this better Performance. It was not my…

    1 vote
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  19. the stdafx

    add the stdafx.h in VC++6.0 to the VS to make the developer more convenient

    1 vote
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  20. Improve constexpr in C++ by adding an equivalent to GCC/Clang's ''__builtin_constant_p'

    Clang and GCC both support '__builtin_constant_p(e)`, which returns, as a constant expression, 0 or 1 depending on if the expression provided to it results in a value known to the compiler at compile-time or not - you could write a vector4 class with it which checks if the member variables 'x, y, z, w' are compile-time known, and if they are, use them in plain constexpr C++, otherwise you could use SSE2 or AVX intrinsics which would otherwise violate constexpr.

    It's also useful for generating things like compile-time and run-time-derived string/hash tables.

    This is very useful for extending constexpr further,…

    4 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →

Feedback and Knowledge Base