Ahh, I didn't know about the GetAllAssemblyLocations method, brilliant!
FWIW, it's not the new version of NCrunch that made this start happening. I can run a different branch of the same solution that hasn't been upgraded to Asp.NET Core 3.1 and it works fine. The solution is a bit odd in that it has two websites and about 40 class library projects.
One website is new and based on .net core and the other is legacy and based on classic asp.net MVC 4. They both depended on EF 6, so we were targeting the NET Framework with both websites and all class libraries. With NETStandard 2.1 now supporting EF 6, we went ahead an updated all the class libraries to multi-target netstandard2.1 and net48. The old asp.net project remained as it was, and the new asp.net core project got upgraded to netcoreapp3.1.
This works great, but for some reason NCrunch started behaving differently. I think we are just confusing it though. We have a shared test framework class library that multi-targets, and two other test projects.
One that exercises the legacy site which is still using net48 target and another that exercises the asp.net core site and it targets netcoreapp3.1. The one that targets the net core site is the one that started acting differently.
Thanks for your help!