NCrunch v3.4 is now the first version of NCrunch to officially support Microsoft's new .NET Core framework. If you happen to be using .NET Core right now, you'll know that this is a really big deal.
.NET Core support has been in the works in some form or another for nearly 2 years now. It's been a requested feature for a very long time, beating every other request in user votes by a factor of 4. I want to thank everyone for their patience here, as this has not been an easy feature to deliver. Over its development, .NET Core has encountered many scope changes and u-turns. Several attempts were made to add NCrunch support for it earlier in its development, but the shifting sands just resulted in months of wasted development and frustration. The good news is that the dust now seems to be settling and the core platform seems to have stablised.
Support for this platform has been no small task. This included cross-compiling all runtime components of NCrunch under .NET Core, finding workarounds for all the compatibility holes, rebuilding the entire assembly referencing and dependency management system and making many changes to NCrunch's build integration.
Because of the sheer size of this new domain, I expect it will be a few months before we reach 100%, though my own tests suggest we are now in quite a stable state and early feedback from a test build released last week has also been very positive.
There are still a few outstanding issues due to limitations in the underlying framework:
- xproj/project.json based .NET Core projects are not supported by NCrunch. This is because the entire
tool system behind this structure has been deprecated by Microsoft. This means you must be running VS2017
to use NCrunch with .NET Core.
- Background exceptions thrown in the test environment cannot yet be caught by NCrunch, as .NET Core
does not yet have a global exception handler. MS are expected to release this with .NET Core v2.0 later
this year. This means you'll see intrusive process exception messages if background exceptions occur within
- Test projects compiled to x86 cannot be run on 64-bit versions of Windows. This is because of a bug
in .NET Core's handling of x86 console applications where it tries to load them with the wrong processor
There are also a couple of areas still being worked on:
- MSpec support is not yet available for .NET Core. I'll be assessing whether it is feasible to add this.
- 'Shared' projects have some synchronisation issues still being worked out. If you encounter these, just
tell NCrunch to reload the project encountering the problem.
Go grab v3.4!