Setup Changes in Visual Studio 2015 Affecting C++ Developers

As mentioned in the Visual Studio 2015 IDE blog post, the setup experience of the product now provides more control to the user, for what does and doesn’t get installed.  That blog post also talks about the rationale for this change and future direction for Visual Studio install experience.  C++ is one of the features which is available as an optional install (not on by default).  This ensures that non-C++ developers don’t have to pay the setup time and disk-space price for installing C++ bits that they don’t need. At the same time, C++ developers can still get the pieces they need.

A Note from Steve Carroll, VC++ Dev Manager

We’ve gotten a lot of feedback on this change and I wanted to address some common questions and concerns.

The most common question is why is only C++ being made optional. The C++ team made several engineering improvements over the course of the VS2015 release to improve our setup and so we were able to get our packages, compilers, and libs factored out in less time than other parts of Visual Studio. C++ is also very large because of the size of the libraries that we ship across many architectures and their matching PDBs. C++ also requires the installation of a Windows SDK. Many non-C++ developers don’t need any of this very large payload and so the overall VS install experience is significantly improved by this change.

The plan of record as mentioned in the IDE blogpost is to move most of Visual Studio to optional as we move forward. This is the first piece of that ongoing work. I want to reassure C++ developers that there is no de-emphasis of C++ development intended by this change whatsoever. Our telemetry and research tells us that C++ development usage in VS and the industry is accelerating, not shrinking. We continue to invest heavily in C++.

Did I mention we are hiring?

Thanks!
Steve

What’s Different

In Visual Studio 2015, C++ tooling is no longer installed by default.  Instead, the C++ compiler, libraries, and project templates have been moved into an optional feature. Upon launching setup, you can choose a “Typical” or “Custom” install:

If you choose “Typical”, then you can’t use Visual Studio to develop in C++, because only managed languages and web development tools will be installed. To install the various components needed for desktop and mobile development in C++, you must choose “Custom” and manually select those items:

Note that the “Visual C++” node under “Programming Languages” is divided into three parts, so that you can opt not to install the tools you don’t need. We recommend that you read all the selectable items carefully before proceeding. Specifically:

  • “Common Tools for Visual C++ 2015” includes the C++ compiler/linker toolset, libraries, and desktop (Win32) project templates.
  • “Microsoft Foundation Classes for C++” includes the libraries and project templates required for building applications that use MFC. Note that this selection also includes support for MFC’s multi-byte character sets (MBCS), which replaces the separately downloadable installer that was required in Visual Studio 2013.
  • “Windows XP Support for C++” includes the Windows 7.1 SDK, which can be used to build applications targeting XP with the v140_xp platform toolset.

A Note about Windows 8.1 and Windows Phone 8.0/8.1 Support

XAML compilation for Windows 8.1 and Windows Phone 8.0/8.1 has a dependency on “Common Tools for Visual C++ 2015” that is not automatically checked when selecting the Windows 8.1 and Windows Phone 8.0/8.1 option.  If “Common Tools for Visual C++” is not already selected (we are looking at options to fix this in the short term), please do so when selecting the Windows 8.1 and Windows Phone 8.0/8.1 option.

Selecting Visual C++ Features from the Command Line

In order to support installation of optional features from the command line, the /InstallSelectableItems parameter has been added to the Visual Studio 2015 Community, Professional, and Enterprise SKUs.
/InstallSelectableItems takes a semi-colon separated list of identifiers that correspond to optional features in the setup dialog.

For unattended installation scenarios, such as deployment to a build lab, the following command line will install all options under the “Visual C++” node in the optional features dialog:

vs_enterprise.exe /q /norestart /InstallSelectableItems NativeLanguageSupport_Group

The example uses the Enterprise SKU installer (vs_enterprise.exe). This would, of course, need to be adjusted for Professional or Community.

Here’s the full list of optional features & identifiers in Visual Studio 2015 RTM that can be used to install C++ features.

Optional Feature in VS Setup (Command Line Identifier) Description
Common Tools for Visual C++ 2015
(NativeLanguageSupport_VC )
v140 Compiler Toolset, C++ desktop application project templates, and libraries.
Microsoft Foundation Classes for C++
(NativeLanguageSupport_MFC)
MFC libraries for Visual C++. Requires Common Tools for Visual C++ 2015.
XP Targeting for C++
(NativeLanguageSupport_XP )
XP Targeting support for Visual C++. Requires Common Tools for Visual C++ 2015.
Visual C++ [parent node]
(NativeLanguageSupport_Group)
Selects all three of the above options
Windows 8.1 and Windows Phone 8.0/8.1 Tools (ToolsForWin81_WP80_WP81) Includes Visual C++ compiler toolsets (v120 and v110), libraries, and templates for building & maintaining Windows 8.1 and Windows Phone 8.0/8.1 applications. Note: this option is not specific to Visual C++.

What If I Did Not Install Visual C++?

We understand that Visual Studio users might not have selected all the tools and libraries that they need during the initial installation, so we have modified the behavior of Visual Studio to accommodate such scenarios. Of course, you can also directly launch setup again using “Add or Remove Programs” in the Windows Control Panel.

Creating New Projects

For convenience, in the New Project window, we have inserted placeholder templates that will launch the installer for the components needed to develop those types of applications:

 

For example, selecting the above template would launch the installer for the tools needed for developing MFC applications:

 


 

Opening Existing Projects

When you attempt to open a project you haven’t opened before and it requires components that are not yet installed, Visual Studio will let you know about the missing components and, if you choose, start setup to install them:

If you skip the installation, Visual Studio will keep those projects unloaded. Attempting to reload will result in the same prompt. You can also directly launch setup through right clicking the unloaded project and selecting “Install Missing Feature(s)”:

 

Customized Projects

If you have edited the project file and moved identifying information to .props files or .targets files, then automatic setup is not supported for that project. In these situations, pay attention to the output window, which lists the set of packages that you need to install for projects with missing dependencies.

If you have any questions or concerns, please feel free to write directly to Daniel Griffing Daniel.Griffing@microsoft.com.