Regarding MSVC building problems:
Fortunately, I now understand the problems I was seeing with MSVC builds, although I'm a little embarrassed to learn that I was the cause.
My previous theory was that I was launching the wrong command prompt to start the build process. This proved incorrect. Launching an MSBuild prompt results in an immediate error:
Error: Unable to detect build environment. Configure script failure.
and not the problems I was seeing before. Other command prompts, like x86 native tools, actually worked OK once I knew what the issue was.
The issue is that running "configure" and "configure VSSolution" are mutually exclusive operations. If you run one command for a given output folder, you can't run the other or it will screw up ninja (I'm not sure if it also screws up the solution files or not). Also, I would generally run configure directly from the reactos folder, and in both cases, the output folder that configure.cmd generates is the same.
This is how I had some intermittent success early on, by following advice on IRC and deleting that folder. However, it would always just be a matter of time before I wanted to generate the VS solutions to navigate the code. Having no idea these solutions couldn't live in the same folder, I always put them there. Well, configure.cmd put them there, I just let it do it's thing.
Also, the errors aren't consistent. If you run "configure && configure VSSolution" then run ninja, you will see
[1/1] Re-running CMake...
and the project will build for a while until you see that CMake is re-running again, going on indefinitely. However, if you run "configure VSSolution && configure" and run ninja, you will see:
ninja: fatal: CreateProcess: The parameter is incorrect.put.dir\mycomput.rc.res
Maybe needing separate folders for each case is obvious to most everyone, and I should have known better. After digging into configure.cmd and learning the tiniest bit about how CMake works, I'm pretty sure this is a limitation-by-design as a result of CMake. In fact, the issue is mentioned specifically in the wiki already, on the deprecated page: https://reactos.org/wiki/Building_with_MSVC
I just didn't see that or read the entire page before (since it's clearly labeled as deprecated).
Whether the solution should have been obvious or not, I've edited configure.cmd to make it more fool-proof and submitted the changes to my GSoC branch. I also made a couple of small changes based on my experience and expectations. I hope these changes get patched into the trunk soon, so nobody else will have to suffer like I did!