none
How to use the Windows 10 SDK in Visual Studio 2013 ?

    Question

  • Hi

    I have Visual Studio 2013 Professional running on Windows 10, and i want to use the Windows 10 SDK because i need to write a small D3D12 path in my app. You might ask : Why would you need D3D12 immediately ?

    I have developed a Software Video Recorder kinda like OBS ( Open Broadcaster Software ), but far more advanced. It took 3 years of developement and will be released in an open beta in 1-2 months. My App works with games in all D3D modes ( well nearly all ... ), all bit depths and all window modes. You can even switch between Desktop and Games while recording ( similar to OBS ), the app captures everything that is on screen no matter what app in whatever state is on screen ( thats something OBS cant as it needs Borderless Window setting ingame for the Desktop Duplication API ).

    The point is i need to write some D3D12 rendering paths here and there to make the app work with DX12 Games ( which currently begin to come in; Battlefield 5 in autumn for example ). I installed the Targeting Pack for NET 4.6 so i can build apps targeting that framework. But when i install the Windows 10 SDK the default SDK and so the include path stays the same ( Windows 8.1 SDK ).

    I know that in VS 2015 you can select the target SDK like described here :

    https://msdn.microsoft.com/de-de/library/mt186161.aspx

    Since we dont have this option in VS 2013 we have to use a property sheet i guess and set all the includes by hand. I found this blog post which describes it for targeting the Windows 8 SDK :

    https://blogs.msdn.microsoft.com/vcblog/2012/11/23/using-the-windows-8-sdk-with-visual-studio-2010-configuring-multiple-Projects/

    I already started writing my own property sheet and setting the include paths but they are different to Windows 8 SDK of course and so its kinda messy ( searching for the correct paths/files in Windows Explorer ).

    I would have bought VS 2015 if the launch price wouldnt be that high as it always is in Germany ( 600-700 Euro ). I am realy wondering why there is no upgrade solution offered by Microsoft. There are already a lot of negative ratings on the official Visual Studio website because of this, and there are also some rants here and there over at Stackoverflow about this. I just bought VS 2013 Professional for 600 Euros 16 months ago and now i would have to pay it again just because there is no upgrade path.

     @ Microsoft : Please give us some help on how to use the Windows 10 SDK in older Visual Studio versions.

    If someone else knows an easier way than using a property sheet please let us know.

    Regards,

    co0Kie


    Wednesday, May 04, 2016 12:09 PM

Answers

  • Hi co0Kie,

    There is a blog post regarding Windows 10 SDK which also has the props available as download:

    https://blogs.msdn.microsoft.com/chuckw/2015/07/30/windows-10-sdk-rtm/

    With kind regards,

    Konrad

    • Marked as answer by Francis Grave Wednesday, May 04, 2016 3:25 PM
    Wednesday, May 04, 2016 12:29 PM
    Moderator
  • Thank you Konrad

    I must be blind as i know that site already. Somehow i overlooked the link for the Zip file down there.

    In the meantime i solved the problem using the link from my first post. Its very simple :

    ->

    1) In the Property Manager right click on the project and add a new Property Sheet.

    2) Double click that Property Sheet and under User-Macros add the following macros

        1. Name = WindowsSDK10_Directory

            Value = $(ProgramFiles)\Windows Kits\10

        2. Name = WindowsSDK10_ExecutablePath

            Value = $(ProgramFiles)\Windows Kits\10\bin\x86;

                        $(ProgramFiles)\Microsoft SDKs\Windows\v10.0A\NETFX 4.6 Tools

        3. Name = WindowsSDK10_IncludePath

            Value = $(ProgramFiles)\Windows Kits\10\Include\10.0.10586.0\um;

                        $(ProgramFiles)\Windows Kits\10\Include\10.0.10586.0\shared;

                        $(ProgramFiles)\Windows Kits\10\Include\10.0.10586.0\winrt

        4. Name = WindowsSDK10_LibraryPath_x86

            Value = $(ProgramFiles)\Windows Kits\10\lib\10.0.10586.0\um\x86

        5. Name = WindowsSDK10_LibraryPath_x64

            Value = $(ProgramFiles)\Windows Kits\10\lib\10.0.10586.0\um\x64

    3) Now replace the necessary macros under VC++ Directories like this :

        Executable Paths =

        replace $(WindowsSDK_ExecutablePath) with $(WindowsSDK10_ExecutablePath)

        Include Paths =

        replace $(WindowsSDK_IncludePath) with $(WindowsSDK10_IncludePath)

        Library Paths =

        replace $(WindowsSDK_LibraryPath_x86) with $(WindowsSDK10_LibraryPath_x86)

        Exclude Paths =

        replace $(WindowsSDK_IncludePath) with $(WindowsSDK10_IncludePath)

    ->

    The macros set under point 3 are for an x86 app. Of course you have to use the $(WindowsSDK10_LibraryPath_x64) macro when you want to build x64. You can set a checkmark on a user defined macro to make it build wide available, regardless of x86 or x64 ( so you only have to add a macro once ).

    And thats it. Well there is the WindowsSDK_MetadataPath left on WinRT Paths, but hey it works at the moment so i dont care. The metadata path seem to be different from older SDK's to the new one. Maybe someone could clarify this.

    Regards,

    co0Kie















    Wednesday, May 04, 2016 3:24 PM

All replies

  • Hi co0Kie,

    There is a blog post regarding Windows 10 SDK which also has the props available as download:

    https://blogs.msdn.microsoft.com/chuckw/2015/07/30/windows-10-sdk-rtm/

    With kind regards,

    Konrad

    • Marked as answer by Francis Grave Wednesday, May 04, 2016 3:25 PM
    Wednesday, May 04, 2016 12:29 PM
    Moderator
  • Thank you Konrad

    I must be blind as i know that site already. Somehow i overlooked the link for the Zip file down there.

    In the meantime i solved the problem using the link from my first post. Its very simple :

    ->

    1) In the Property Manager right click on the project and add a new Property Sheet.

    2) Double click that Property Sheet and under User-Macros add the following macros

        1. Name = WindowsSDK10_Directory

            Value = $(ProgramFiles)\Windows Kits\10

        2. Name = WindowsSDK10_ExecutablePath

            Value = $(ProgramFiles)\Windows Kits\10\bin\x86;

                        $(ProgramFiles)\Microsoft SDKs\Windows\v10.0A\NETFX 4.6 Tools

        3. Name = WindowsSDK10_IncludePath

            Value = $(ProgramFiles)\Windows Kits\10\Include\10.0.10586.0\um;

                        $(ProgramFiles)\Windows Kits\10\Include\10.0.10586.0\shared;

                        $(ProgramFiles)\Windows Kits\10\Include\10.0.10586.0\winrt

        4. Name = WindowsSDK10_LibraryPath_x86

            Value = $(ProgramFiles)\Windows Kits\10\lib\10.0.10586.0\um\x86

        5. Name = WindowsSDK10_LibraryPath_x64

            Value = $(ProgramFiles)\Windows Kits\10\lib\10.0.10586.0\um\x64

    3) Now replace the necessary macros under VC++ Directories like this :

        Executable Paths =

        replace $(WindowsSDK_ExecutablePath) with $(WindowsSDK10_ExecutablePath)

        Include Paths =

        replace $(WindowsSDK_IncludePath) with $(WindowsSDK10_IncludePath)

        Library Paths =

        replace $(WindowsSDK_LibraryPath_x86) with $(WindowsSDK10_LibraryPath_x86)

        Exclude Paths =

        replace $(WindowsSDK_IncludePath) with $(WindowsSDK10_IncludePath)

    ->

    The macros set under point 3 are for an x86 app. Of course you have to use the $(WindowsSDK10_LibraryPath_x64) macro when you want to build x64. You can set a checkmark on a user defined macro to make it build wide available, regardless of x86 or x64 ( so you only have to add a macro once ).

    And thats it. Well there is the WindowsSDK_MetadataPath left on WinRT Paths, but hey it works at the moment so i dont care. The metadata path seem to be different from older SDK's to the new one. Maybe someone could clarify this.

    Regards,

    co0Kie















    Wednesday, May 04, 2016 3:24 PM
  • Hi co0Kie,

    I am glad that you solved your problem and thank you for sharing the details.

    With kind regards,

    Konrad Neitzel

    Edit: I marked your reply as answer again, because from my perspective this summary of your solution includes details that might be of interest for others, too. I hope you do not see this action as abusive (feel free to unmark it again if you do not agree!)


    Wednesday, May 04, 2016 3:37 PM
    Moderator