Hi Ed,
Thanks for posting!
Yes - you will need to move your test projects into your main solution in order to see the code coverage information.
NCrunch treats loaded and referenced projects very differently to referenced assemblies. If your code is referencing a DLL outside the solution, NCrunch will consider this to be 3rd party code and it won't instrument it or try to analyse code coverage over it. Projects that are inside your solution and are referenced using the MSBuild ProjectReference tag are considered to be your code, and NCrunch will analyse it and give you data related to it.
It is possible to have a test project that uses ProjectReference tags (rather than DLL Reference tags) to your production code, and have this loaded inside a separate solution without your production code. When the test solution is open, NCrunch will detect the project references and will load the production code as though it were part of the same solution. This means that you could potentially view code coverage information for the production code without needing to have a solution containing both the production projects and the test projects. However, in practice this would be fairly useless, as the VS IDE itself wouldn't load the production projects or have them visible in the solution explorer. This means that even though you may have code coverage information, you'd still have no way to easily edit the projects because VS won't have considered them.
.. So the only practical solution is to have a master solution that contains all relevant test and production projects. If you're concerned about build times, you can also switch off the build of your test projects (inside the VS configuration manager). In this way, NCrunch will still build the projects and run your tests, but Visual Studio will only build your production code when you ask it to perform a build.
I hope this helps.
Cheers,
Remco