First, some words to Windows 8.1: All annoyances that affect me are still present, like what Microsoft calls "Modern UI" and switching around between that "Modern UI" and the desktop. I couldn't find a method to show the seconds in the clock (must be quite complicated to program *fg*), extra-complicated way just to view the current IP addess and many more. I am tired to count all of them - would Microsoft change anything? No, they wouldn't. At the beginning, I used Internet Explorer, but on blogger.com I got so many errors that I decided to install Firefox.
On the other side, Visual Studio 2013 Preview makes me delighted. Unfortunately, I never had the time to test VS 2012, so what I actually see are the differences between VS 2010 and VS 2013. The first thing that attracted my attention was C++/CX (component extensions) that enables you writing C++ programs targeting Windows Runtime. Unfortunately, in FILE | New | Project... there is no template for C++/CX console applications. I found a template for that, but it doesn't work in VS 2013 Preview:
Figure 1: Error message when trying to install CxxWinRTTemplate
However, it isn't that difficult to write C++/CX console applications. In the "New Project" dialog, select Visual C++ / Win32 / Win32 Console Application. Click "Next" various times, it's okay to leave the settings or change them as needed. Now we tell Visual Studio that we want to program against CX, so we open the project's properties page and navigate to "Configuration Properties", "C/C++", "General" and change "Consume Windows Runtime Extension" to "Yes". Next, we navigate to "All options" and set "Enable Minimal Rebuild" to "No". Last but not least we change "Additional using# Directories" to
C:\Program Files (x86)\Windows Kits\8.1\References\CommonConfiguration\Neutral;C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\Microsoft.VCLibs\12.0\References\CommonConfiguration\neutral;%(AdditionalUsingDirectories)
This website was helpful for that. You need the using# staff in order to include Windows.winmd and Platform.winmd.
Then you can start writing your first C++/CX console program. :-) Of course, mine was to the traditional "Hello World" program:
#include "stdafx.h"
//#using
#using <Platform.winmd>
using namespace Platform;
[MTAThread]
int main(Platform::Array
{
Platform::String^ message("Hello");
message = Platform::String::Concat(message, " World!");
Platform::Details::Console::WriteLine(message);
return 0;
}
Of course, C++/CX offers many more possibilities and allows a modern programming style that let the borders between C# und C++ melt. If I find something that I like very much, I'll report it.