We recently released the CTP2 for Visual Studio “14”. Through this blog post we wanted to inform you and solicit feedback about a change we have made in the way building C++ apps for down-level platforms is handled. Everything mentioned below is relevant only for Windows Store and Windows Phone apps. There are no changes for Desktop apps.
To provide some context, you would probably remember that in Visual Studio 2013, the primary development scenarios (for Store and Phone apps) are targeted towards the latest version of the platform (i.e. Windows 8.1 and Windows Phone 8.1). This means that the latest tools for designing, packaging, debugging etc. are available only if you are building 8.1 apps. This includes the latest compiler and libraries features. The new C++ compiler and libraries toolset features in VS 2013 are available only for 8.1 apps. On the other hand, the development of 8.0 apps is by default handled using the older (VS2012) compilers and libraries toolset. This means that we actually shipped both the old (VS2012) and the new toolsets in VS2013. This substantially increases the download/install time and the required space on disk. It also poses interesting update challenges if the older toolset is already installed on the machine through an existing installation of VS2012.
In Visual studio "14" we are sticking to the policy of using the older toolset (which is now VS2013) for older platforms (which is now 8.1). However in this CTP, we are making an important change in the way the older toolset is installed on the machine. And this is where we are looking for feedback. Instead of including the older C++ toolset in Visual Studio "14", we actually want to recommend that developers who are interested in using Visual Studio "14" for doing 8.1 app development should install Visual Studio 2013 side-by-side with Visual Studio "14". For the purpose of Store and Phone development it would suffice to install Microsoft Visual Studio Express 2013 for Windows with Update 2. This is of course if you already don’t have it installed on your machine. Once you have this product installed, you can still use the C++ toolset from VS2013 to build 8.1 apps even while working in Visual Studio "14". This is enabled through the C++ multi-targeting feature. The end-result is an experience very similar to what we had in VS2013 for 8.0 apps.
While most things related to down-level platform targeting work, please do remember this is still a CTP so a few things are still work in progress :) and will be fixed in future:
Just to emphasize once again, none of the above changes impact the experience for building Desktop apps. For all supported desktop platforms, Visual Studio "14" CTP2 will always use the latest C++ toolset only. These changes are relevant only for Store and Phone apps. We are keen to hear your feedback about this change and how this will impact your experience building apps for down-level platforms. Feel free to post your comments on this post or write an email directly to me at email@example.com
This is consistent with Desktop apps and it prevents installing old stuff that I don't need, so I think it's a good thing.
I guess my questions are,
1. Does this prevent us from using the newest c++11/14 features implemented in VS 14?
2. How does this effect the security of my applications when you have made bug/security fixes to the latest compilers?
3. Will this allow compiling to Win 8.0 Store Apps?
4. Would it be better to provide an installer for just the target you need?
It remains to be seen how the adoption of the next version will go, but I have the sneaking suspicion that those that have already upgraded to 8.1 will be the ones to upgrade, while those that haven't won't, or will skip 8.1 altogether, though IANAMR. However, as long as Windows 8.1 can still run 8.0 apps, the common denominator may make it reasonable to target just the one platform, or the least and the latest only.
@Bill D Strong
> 1. Does this prevent us from using the newest c++11/14 features implemented in VS 14?
Why the need for it? Clearly the Visual C++ team has no plans for us to be able to use standard C++ code for writing Modern apps. Yes, yes, you could (and should) separate logic/models/core stuff and have them all done with standard C++ code, but hahahaha that's like them giving you both milk and orange juice to drink.
It's pretty ironic with Microsoft's current strategy of having their apps and services on all devices and platforms, while they still wall garden their own developers with these tiny things called non-standardization and non-portability. Seriously, if you want your devs, especially us C++ devs, to be happy, stop being such 90s Softies guys and GIVE US STANDARD-COMPATIBLE WAYS OF DOING STUFF!
Please don't make me say you guys are being hypocrites. I really don't like saying such things to people.
If 8.1 is the old platform now, what is the current one? Did I miss a Windows release?
The need for a full side-installation is one of my biggest gripes about the current C++ multi-targeting solution for desktop applications. Hard-drive space on SSD's is very limited, so having to keep Visual Studio 2010 2012 and 2013 all installed on my work machine has been a big waste of space considering I only use 2013 for development. Luckily I was just able to remove 2008 in the last year to free up some space.
If you are going to go this route, please consider offering the previous C++ compiler toolchain as either a standalone install, or as part of the installer for the current versions of visual studio with the option to select which versions of the compiler to install side-by-side.
That seems a bit silly and inefficient to me. Not to mention it contradicts your statement that you are trying to reduce things like required disk space. Just my two cents. For whatever it is worth.
> This substantially increases the download/install time and the required space on disk.
That doesn't sound right. Doesn't the web installer only download/install the things actually required? Requiring a full VS2013 install seems silly.
@Marcel: This is not quite the same thing as Desktop. It is different in the sense that for Store apps we are using different toolsets for different platform versions. However it is somewhat similar in the sense that with one version of VS we ship only one toolset, which is what we have always done for Desktop apps since the same toolset supports all platform versions for Desktop apps.
@Bill D Strong: The new C++11/14 features in Dev14 toolset can not be used with Win8.0/8.1 apps. If there are any bug/security fixes to VC12 toolset, you will receive them.
@Ughh..: Thanks for the feedback!
@James: The size savings will be realized for people who don't need to have down-level targeting capability at all. For those who need it, SxS install solution is as good as actually including the old toolset in new VS.
Why on earth would you have a policy to make compiler versions specific to Windows 8.1 Store apps?? Each new Xcode / clang release for example can always build for all versions of iOS. This is a powerful feature in that as clang adopts c++14 features those work in apps that also need to continue running in older versions of the OS.
Because they can't handle what apple and google can..they can't let you develop Windows phone 8 app on Windows 7. They will continue this route to make you pay for each of their new os and vs version. They with their greed will eventually lose it all. Microsoft was known for backward compatibility for old hardware and software. Internet Explorer team dumped on the idea, vc team followed and now this new regime has even cuter plan: Sell it all out.
Its really hard to be msft fan these days ..
Things fall by their own weigh. As Microsoft ignores customers, who in turn ignore Microsoft, no deal happens. Microsoft is laying off a record number of employees. Good job.