Hi Will,
NCrunch sources its list of projects from the solution file, and will also expand its project list to include those projects that exist outside the solution but are referenced from within it. So basically, you get everything in the whole tree regardless of whether VS has the project loaded or not. Unloading and reloading projects dynamically to save resources doesn't work well with NCrunch because NCrunch is both a build-time and run-time tool that cannot produce sensible results unless all dependencies are resolved. Unloading projects also causes problems with retaining important state (such as coverage information), since once a project is gone, we are left with the question of whether or not the details it contained are still relevant. These issues make NCrunch quite different from something like an IDE, where non-resolution patterns can be more sensibly handled and results are usually not as expensive to recalculate/reproduce if they are thrown away.
It's possible to selectively choose which projects are loaded by NCrunch using the
Ignore this component completely NCrunch configuration setting. Note that doing this on projects further down your project tree will result in dependency resolution and build errors.
If you're seeking to keep projects unloaded to try and keep NCrunch's resource consumption in the IDE down, note that this may not be very worthwhile. NCrunch stores an absolute minimal amount of data inside the IDE - only details critical to rendering a functional UI. All the actual storage and processing of project information happens inside the NCrunch engine process, where it is highly optimised. Improvements in system-wide performance and resource efficiency are usually better achieved by being more selective about which tests are run automatically by the engine, and by how many execution threads are used on the local machine (distributed processing is a huge help).