We've had an internal discussion on this after a deep look at what is happening here.
We cannot support code contracts under .NET Core. The system wasn't designed for background testing and will always terminate the test process when a condition fails. There are no hooks in this process for us without performing memory hacks on the platform, which would unacceptably risk destabilising things.
Under .NET Framework, there were build options available to deactivate code contracts, which is how we implemented the NCrunch config options to turn it off. Unfortunately, under .NET Core these options no longer appear to exist in any useful state, with the system itself baked into the platform.
This means the only way we could get NCrunch to work at all on a project using code contracts would be to scan every built user assembly at IL-level and forcefully remove the references to code contracts types in the system. This scanning would be expensive and would decrease the engine's performance for everyone, regardless of whether they used code contracts or not. Given that we care very much about the performance of the engine, this really isn't a workable solution for us.
Thus the only option here is for you to not use code contracts with NCrunch. If you need to use this feature, place it behind a facade that you control and put the contracts calls inside '#if !NCRUNCH' blocks to make sure they never get executed under NCrunch.