We have a custom debug engine that can debug HLSL and GLSL shaders. When debugging we open these files in a custom editor because we also support splitting the file side-by-side, modifying the file, etc to support edit & continue and seeing the diffs.
This works fine across VS 2010, 2012, and 2013 (and VS 2008, although we don't technically support it anymore). However, in VS 2015 breakpoints can no longer be set. It seems to be something related to the editor because IDebugEngine2::CreatePendingBreakpoint is never called.
Looking for differences in registration and trying random things, I've noticed that in the registry under Languages\File Extensions\[extension] (eg, .glsl), if I add a DWORD called HLSLFile and set its value to 1, everything works again. I don't understand why this would make a difference. I would rather not rely on this as a workaround as we don't always know what extensions people use for their files.
Another example where this reproduces is we set a breakpoint in an .hlsl file (which has HLSLFile in the registry) and hit the breakpoint, then step in to an .fxh file (which does NOT have HLSLFile in the registry). In this case the .fsxh file opens, but it fails to step in and it also opens the Source Not Found page.
Any ideas why adding this HLSLFile DWORD makes a difference? Any ideas on how we can get this to work as it does with the last several versions of Visual Studio?