Visual Studio IDE

Announcement: This forum has been migrated to provide our customers one convenient and responsive system for all feedback. You can now suggest new ideas, browse and vote on existing ideas in the Visual Studio Developer Community. To learn more about the migration to Visual Studio Developer Community please check out the release blog post.

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. Improve IntelliSense/Refactoring for C++

    This suggestion is migrated to Developer Community. Please use below link to view the current status.
    https://developercommunity.visualstudio.com/content/idea/351429/improve-intellisenserefactoring-for-c.html
    Visual Studio is still missing a lot of features for C++. This requires a lot of developers and companies to depend on external tools like ReSharper or Visual Assist.

    Things that should be improved include:

    1. Refactoring tools: Visual Studio in my opinion does not offer a lot of useful refactoring tools for C++. ReSharper did this right.

    2. IntelliSense speed: In large projects, IntelliSense is not a big help at all. Having to wait several seconds till a file gets analysed or…

    27 votes
    Vote
    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      Signed in as (Sign out)
      You have left! (?) (thinking…)
      under review  ·  1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
    • Add OpenMP 4.5/5 to next VS version

      Please consider adding latest version of OpenMP to next release of Visual Studio. There has been no new development on C++ AMP in the last 3-4 years and PPL is just not as useful.

      27 votes
      Vote
      Sign in
      Check!
      (thinking…)
      Reset
      or sign in with
      • facebook
      • google
        Password icon
        Signed in as (Sign out)
        You have left! (?) (thinking…)
        0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
      • Add freestanding compilation mode

        Compiler generates implict calls to CRT (this includes C library calls like memcpy or memset but also compiler specific helpers like lldiv, llrem, llshl and friends). This is a request for a freestanding mode of compilation where compiler does not generate implict calls to CRT.

        Alternative solution could be to make the implictly used portion of CRT a separate, self-contained library released under more permissive license or clearly document the required calls.

        Lack of this feature makes it particularly hard to build a BIOS, embedded application or unikernel using Visual Studio compiler.

        While this may not be simple for C++…

        26 votes
        Vote
        Sign in
        Check!
        (thinking…)
        Reset
        or sign in with
        • facebook
        • google
          Password icon
          Signed in as (Sign out)
          You have left! (?) (thinking…)
          1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
        • Add a built in precompiled macro to VC++ that points to the VC Tools version, like "14.10.25017"

          In some header files we need to include particular Microsoft VC++ header files by path. To do it, we need to point to the directory that contains Microsoft VC++ header files.
          With Microsoft Visual Studio 2015 and older, we can use the relative path, like “../VC”.
          Starting from Microsoft Visual Studio 2017 the includes directory name contains full VC Tools version number, so we need a way to reference it somehow in a header file, so that Microsoft Visual C++ preprocessor could understand it.
          In other words, the usage scenario is the following:
          1. User runs cl.exe passing some files…

          26 votes
          Vote
          Sign in
          Check!
          (thinking…)
          Reset
          or sign in with
          • facebook
          • google
            Password icon
            Signed in as (Sign out)
            You have left! (?) (thinking…)
            1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
          • Add Intellisense support for CUDA

            Add Intellisense support for CUDA (recognize triple-bracket syntax, keywords, etc).

            25 votes
            Vote
            Sign in
            Check!
            (thinking…)
            Reset
            or sign in with
            • facebook
            • google
              Password icon
              Signed in as (Sign out)
              You have left! (?) (thinking…)
              0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
            • Implement more C++ TS (Filesystem is great!, now Concepts!!) You get the edge over gcc and clang

              Technical specifications greatly improve c++ usability. Filesystem is amazing. You can surpass gcc and clang in implementation.
              C++ needs a bigger and bigger library

              25 votes
              Vote
              Sign in
              Check!
              (thinking…)
              Reset
              or sign in with
              • facebook
              • google
                Password icon
                Signed in as (Sign out)
                You have left! (?) (thinking…)
                0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
              • Support std::experimental::source_context

                Support std::experimental::source_context or provide equivalents to gcc __builtin_{FILE,LINE,FUNCTION} functions.

                23 votes
                Vote
                Sign in
                Check!
                (thinking…)
                Reset
                or sign in with
                • facebook
                • google
                  Password icon
                  Signed in as (Sign out)
                  You have left! (?) (thinking…)
                  1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                • Allow programmers to get special object's mangled name

                  MSVC should allow programmers to get special object's mangled name,which may be very useful when loading a cpp-export dll dynamically.
                  For example,
                  namespace AA{
                  extern const a = 1;
                  }
                  const char *p = get_mangled_name(AA:a);//?a@AA@3XX_XX

                  22 votes
                  Vote
                  Sign in
                  Check!
                  (thinking…)
                  Reset
                  or sign in with
                  • facebook
                  • google
                    Password icon
                    Signed in as (Sign out)
                    You have left! (?) (thinking…)
                    2 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                  • Add fmemopen, open_memstream, and open_wmemstream from ISO/IEC TR 24731

                    As far as I can tell, these APIs are available everywhere except Windows. funopen and/or fopencookie would be nice, too, but I realize they aren't specified in a TR yet.

                    22 votes
                    Vote
                    Sign in
                    Check!
                    (thinking…)
                    Reset
                    or sign in with
                    • facebook
                    • google
                      Password icon
                      Signed in as (Sign out)
                      You have left! (?) (thinking…)
                      1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                    • Mixed mode assemblies on Linux and C++/CLI support

                      C++/CLI enables replacing non-performing managed code with high performance code written in C++ with support for full utilization of the operating system SDK. It is one of outstanding features that makes .NET able to things currently not possible with any other programming language.

                      In order to fully utilize the power of C# on the Linux platform, we therefore need supported for mixed mode assemblies on Linux and support for C++/CLI development for this platform.

                      22 votes
                      Vote
                      Sign in
                      Check!
                      (thinking…)
                      Reset
                      or sign in with
                      • facebook
                      • google
                        Password icon
                        Signed in as (Sign out)
                        You have left! (?) (thinking…)
                        0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                      • warn_unused_result attribute

                        Add the possibility to mark functions/methods with an attribute that creates a compiler warning if its result is unused by the caller.

                        This allows to write much cleaner and safer code.

                        Clang or GCC offer this possibility with the following attributes:

                        [[gnu::warn_unused_result]]

                        __attribute__((warn_unused_result))

                        22 votes
                        Vote
                        Sign in
                        Check!
                        (thinking…)
                        Reset
                        or sign in with
                        • facebook
                        • google
                          Password icon
                          Signed in as (Sign out)
                          You have left! (?) (thinking…)
                          4 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                        • 21 votes
                          Vote
                          Sign in
                          Check!
                          (thinking…)
                          Reset
                          or sign in with
                          • facebook
                          • google
                            Password icon
                            Signed in as (Sign out)
                            You have left! (?) (thinking…)
                            0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                          • show sizeof mouse hover

                            When hovering over a type or identifier, VS right shows the corresponding type. It would be nice to show the sizeof() of the type as well.
                            Since sizeof(.) sometimes is not what one expects due to padding, for projects where memory/perf is important
                            it would be nice to have that information handy.

                            21 votes
                            Vote
                            Sign in
                            Check!
                            (thinking…)
                            Reset
                            or sign in with
                            • facebook
                            • google
                              Password icon
                              Signed in as (Sign out)
                              You have left! (?) (thinking…)
                              0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                            • Please continue to develop standard types and operations for __int128, __int256, ... c++ types

                              Please continue to develop standard types and operations for __int128, __int256, ... c++ types

                              21 votes
                              Vote
                              Sign in
                              Check!
                              (thinking…)
                              Reset
                              or sign in with
                              • facebook
                              • google
                                Password icon
                                Signed in as (Sign out)
                                You have left! (?) (thinking…)
                                1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                              • Optionally permit to check case in file path in #include directive (o swith to force the compiler to be case sensitive)

                                So, obviously, the Windows OS and FileSystem isn't case sensitive for file names and paths.. But when you write code on a windows system, you may want to write cross-compatible code.

                                Small problems I tend to run into often is case "typo" in #include directives on code written on a Windows box built on a Linux one.

                                So, it would be nice to make either the editor "case aware" if not case sensitive. Maybe optionally (to not automatically break code of people that don't care about case in their code), or to have a switch that could make the compiler…

                                20 votes
                                Vote
                                Sign in
                                Check!
                                (thinking…)
                                Reset
                                or sign in with
                                • facebook
                                • google
                                  Password icon
                                  Signed in as (Sign out)
                                  You have left! (?) (thinking…)
                                  0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                                • Support GCC's __INCLUDE_LEVEL__ preprocessor macro

                                  GCC's __INCLUDE_LEVEL__ macro gives you the current nesting level of the include file you're in.

                                  In my project, I have internal header files intended only to be included in source files and not in any header files so I'm using:

                                  #if __INCLUDE_LEVEL__ != 1
                                  #error Don't include this file in a header file
                                  #endif

                                  as a sanity check. It would be nice if MSVC supported this.

                                  20 votes
                                  Vote
                                  Sign in
                                  Check!
                                  (thinking…)
                                  Reset
                                  or sign in with
                                  • facebook
                                  • google
                                    Password icon
                                    Signed in as (Sign out)
                                    You have left! (?) (thinking…)
                                    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                                  • 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
                                    Check!
                                    (thinking…)
                                    Reset
                                    or sign in with
                                    • facebook
                                    • google
                                      Password icon
                                      Signed in as (Sign out)
                                      You have left! (?) (thinking…)
                                      1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                                    • Allow C++ makefile projects to compile single files

                                      With normal Visual C++ projects, there's an option in the build menu to compile an individual file. This can be very useful for many reasons I shan't go into here.

                                      When using makefile projects, this option can't be used - building is limited to the 'build', 'rebuild' and 'clean' commands that can be specified in the project options.

                                      I would like there to be another 'compile file' command which can call the external build tool with the file path as an argument, or perhaps that file path could be substituted into the command somehow.

                                      19 votes
                                      Vote
                                      Sign in
                                      Check!
                                      (thinking…)
                                      Reset
                                      or sign in with
                                      • facebook
                                      • google
                                        Password icon
                                        Signed in as (Sign out)
                                        You have left! (?) (thinking…)
                                        0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                                      • Fix "decorated name length exceeded, name was truncated" warning

                                        Having a few nested std::map's triggers this warning which is pretty lame. I know it's probably a big change internally but it'd be nice if you could schedule this in as C++11/14 just make the decorated names longer and longer as additional features are used.

                                        19 votes
                                        Vote
                                        Sign in
                                        Check!
                                        (thinking…)
                                        Reset
                                        or sign in with
                                        • facebook
                                        • google
                                          Password icon
                                          Signed in as (Sign out)
                                          You have left! (?) (thinking…)
                                          0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                                        • 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
                                          Check!
                                          (thinking…)
                                          Reset
                                          or sign in with
                                          • facebook
                                          • google
                                            Password icon
                                            Signed in as (Sign out)
                                            You have left! (?) (thinking…)
                                            1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →

                                          Feedback and Knowledge Base