It's been six days since Microsoft released Windows 10 build 17704 with a ton of new features, and if you haven't noticed the pattern yet, that means that it's time for a new SDK Preview with the same build number.
The main new features in the Redstone 5 SDK are MSIX support and MC.exe. MSIX is a sort of hybrid between MSI and APPX, allowing developers a new packaging solution. They work on Windows 10 build 17682 or higher, and you can't submit them to the Store yet, or use them with the App Certification Kit. This will be changed when we get close to the Redstone 5 release.
This preview can run side-by-side with previous Windows 10 SDKs, so you should be able to run it in a production environment. You just can't compile your apps to target the build, since Microsoft isn't accepting Store certifications for it yet. Also, this build will only install on a Windows 10 Insider Preview.
There are also some known issues to be aware of:
The SDK headers are generated with types in the “ABI” namespace. This is done to avoid conflicts with C++/CX and C++/WinRT clients that need to consume types directly at the ABI layer. By default, types emitted by MIDL are *not* put in the ABI namespace, however this has the potential to introduce conflicts from teams attempting to consume ABI types from Windows WinRT MIDL generated headers and non-Windows WinRT MIDL generated headers (this is especially challenging if the non-Windows header references Windows types).
To ensure that developers have a consistent view of the WinRT API surface, validation has been added to the generated headers to ensure that the ABI prefix is consistent between the Windows headers and user generated headers. If you encounter an error like:
5>c:\program files (x86)\windows kits\10\include\10.0.17687.0\winrt\windows.foundation.h(83): error C2220: warning treated as error – no ‘object’ file generated
5>c:\program files (x86)\windows kits\10\include\10.0.17687.0\winrt\windows.foundation.h(83): warning C4005: ‘CHECK_NS_PREFIX_STATE’: macro redefinition
(41): note: see previous definition of ‘CHECK_NS_PREFIX_STATE’
It means that some of your MIDL generated headers are inconsistent with the system generated headers.
There are two ways to fix this:
- Preferred: Compile your IDL file with the /ns_prefix MIDL command line switch. This will cause all your types to be moved to the ABI namespace consistent with the Windows headers. This may require code changes in your code however.
- Alternate: Add #define DISABLE_NS_PREFIX_CHECKS before including the Windows headers. This will suppress the validation.
To download Windows 10 SDK Insider Preview build 17704, you can find it here.