Changes in v2.20

This version of NCrunch introduces changes to the grid protocol. This means that grid node servers must be updated
before they can be used with the new version.

Deactivated existing/legacy DNX integration which was causing problems with Nuget3 and some new project types.

Fixed an issue that could cause the tests window to throw exceptions and become desynchronised with the engine when
non-default sort orders were used.

Fixed a regression introduced in 2.19, where tests queued with high priority that would normally be excluded from
passive execution could be unexpectedly removed from the queue under certain change conditions.

Adjusted the handling of coverage marker ToolTips to significantly reduce memory traffic in the IDE. This should greatly
improve the performance of the IDE when using NCrunch on solutions with high coverage density and many code documents
open at one time.

Added a new optional column to the Tests Window - 'Exception Message'. This column will show the message of the first
exception relevant to a failing test.

Fixed an issue that was causing NCrunch to unnecessarily wipe the processing queue clear of tests when a project was

Introduced a fallback into the NUnit2 and NUnit3 integration to detect situations where multiple tests were being reported
under the same name. Where this is detected, NCrunch will now automatically try to prefix the affected tests with their
source method name. This should resolve situations where TestCaseSource properties using .SetName are being re-used across
multiple test methods.

Fixed an issue that was preventing the risk/progress bar from showing data when no tests were in the processing queue.

Adjusted the NCrunch task runners so that these are now compiled as standard windows applications, rather than console
applications. This removes the dependency on conhost.exe, freeing up resources and reducing clutter.

Fixed an issue that would cause the engine to hang when working in grid-only mode with a sliding build delay.

Fixed an issue that was causing NCrunch to fail to uniquely identify parameterized test fixtures under NUnit3.

Fixed an issue that was causing the corner popup window to steal focus from the IDE when it appeared. This was particularly
annoying when triggering tests to run manually using keyboard shortcuts, as it would be impossible to continue typing in
the IDE without manually reselecting it using the mouse.

Added a new global configuration setting, 'Project load timeout'. This setting controls the length of time NCrunch will
wait for all projects to be reported by the IDE during initialisation. The default value is 60 seconds. If you are
working in solutions with unloaded projects, it may be advantageous to reduce the timeout to improve startup times.

Fixed a performance issue that was causing the engine to stall for several seconds when a project was updated.

Introducing a differencing algorithm to better preserve code coverage data when changes are made to source files not
open in the IDE, or when NCrunch is offline.

Fixed an issue where unsupported project types were being loaded by NCrunch when they were added to an existing solution.

Fixed an issue where the configuration options for unsupported/external projects were not available in the NCrunch
Config Window when these projects were being referenced by other supported projects in the solution.

Fixed test names containing HTML messing up NCrunch's HTML report.

Adjusted data piping behind the Tests Window to improve performance.

Fixed a race condition that could cause the corner spinner to become desynchronised while the NCrunch engine was shutting

Fixed exception thrown sometimes when showing data in the Tests Window while test source files are renamed.

Fixed mapping errors being kicked up sometimes when project source files were renamed.

Rewired the handling of test Impact status to solidify this status and better handle certain edge cases.

Fixed an internal exception that could be thrown when processing the build results from a project that had just been

Fixed an issue that could cause momentary loss of code coverage data when making changes to a fast-building project and
using distributed processing.

Fixed an issue that could cause the NCrunch engine to fall out of sync with the foreground solution when changes were made
to project files while NCrunch was initialising.

NCrunch will now include project.nuget.props and project.nuget.targets files automatically in project workspaces.

Fixed the NCrunch test runner crashing when attempting to execute an Xunit2 theory test case with an invalid structure.

Fixed an issue that could cause downstream problems when trying to synchronise with many rapid project file changes.

Fixed the grid node filter being internally cleared/desynchronised in the processing queue window when the engine is

Fixed grid nodes truncating test trace output according to the wrong pass/fail limit for passing fixtures with failing
child tests.

Fixed possible exception thrown when trying to view performance data for a test that has not yet been run.

Fixed an issue that was preventing NCrunch from detecting MSpec behaviors being referenced between test assemblies when
using static analysis.

Fixed an issue that could sometimes cause exceptions to be thrown when attempting to run or debug a test via a UI command.

Fixed an issue preventing NCrunch from establishing the status of ignored generic test fixtures under NUnit3.

Added automatic detection of stylecop.json file as used by StyleCop.Analyzers.

Added support for environment variables inside the NCrunch cache storage path setting.

Adjusted the NCrunch cache storage path setting so that it is now possible to specify absolute directory paths.

Fixed test fixtures not being marked as passing after all their failing child tests had been removed.

Fixed an issue that could cause NCrunch's code navigation points to fall out of sync, with background exceptions thrown.

Fixed an issue that could cause code coverage inconsistencies where project XML was changed with tests running in
the background.

Optimised the data refresh code in the NCrunch tree grids to improve performance and reduce drag on the UI.

Fixed exceptions thrown inside the engine after certain project change sequences are reported by VS.

Fixed 'noise' exceptions being kicked up sometimes when NCrunch is being disabled.