Peter, Shane. Good point. Good conversation.
From WDK team’s side we absolutely need the type of “isolation” that Peter looks for.
WDKs SxS: It is painful if you need to build against old WDKs and new WDKs on the same machine. There are some fundamental limitations that makes it hard to achieve what Peter needs with just installing a bunch of WDKs on top of each other. Essentially some of the files in the SDK and WDK are ‘shared’ and there can at any given time only be one version of those files on a machine at a time. To add to this fundamental limitation we have also over the last few years been burned by a number of subtle MSI authoring rules that we got wrong. Sorry.
WDKs in containers: Peter’s suggestion is another way to get isolation. Very exciting. I believe the concept works fine, but there will be problems that the container OS (a server core variant I believe) does not provide capabilities a few of the WDK tools needed. For example I remember API Validator does not work because it is missing a runtime component. It is possible I have my wires crossed and it is possible the issues are easy to resolved. We should investigate. We probably will take a look soon and if we learn anything meaningful we will report back.
EWDK: Internally we use the EWDK for a light weight and fairly solid isolation. We absolutely love it. We have discussed with SDK team to extend the app build capabilities in EWDK, so Peter if you can let us know more about what you would need from the EWDK, then we’ll take a look. There will be limits to what can be incorporated in the EWDK, but perhaps we can get enough in to help you.
Long term: We are discussing more fundamental approaches to provide isolation that does not require the EWDK style and integrate well with Visual Studio. We don’t have more to share yet, but we consider the type of problem Peter is experiencing absolutely important to address.
Best,
Jakob