Changes in v3.7

***** 
	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.
*****


Added support for .NET 4.7.

Reverted a change to the .NET 4.6.2 detection that was introduced in v3.6.  It seems that this change was made 
based on misleading information and it has been causing NCrunch to think that .NET 4.6.2 is installed on system 
where it actually isn't.

Fixed SEH exceptions being thrown in the test environment.

Implemented a time-sliding synchronisation buffer intended to clean up NCrunch's handling of multiple changes being 
made to the solution simultaneously.  Events occurring from changes made to the file system and projects held in 
IDE memory will now be held in this buffer and batched together, then de-duplicated and released into the engine 
at the same time.  This should have the following affects:
- When changes are made to CPS/.NETCore projects in the IDE, NCrunch should only reload the project once, instead 
 of many times
- NCrunch should be able to better handle source control actions by aligning with changes made to the file system 
 in one step, rather than trying to synchronise every individual file change when it happens
- There should be a much lower chance of NCrunch finding its way into a broken state as a result of large-scale 
 refactoring or Nuget package updates
- Overall performance should be improved

Redesigned NCrunch's project synchronisation system to allow it to respond to in-memory changes made to shared 
projects.

Adjusted the NCrunch configuration system so that multi-targeted projects now have separate configuration files 
for each target.  This should make it possible for NCrunch to be configured to ignore specific target frameworks 
that may not be supported by the engine.

Fixed an issue that could cause IL-comparison hash inconsistencies between clients and grid nodes.

Fixed an issue that was causing impact detection inconsistencies when referencing 
Microsoft.VisualStudio.QualityTools.UnitTestFramework from the GAC and using distributed processing.

Redesigned NCrunch's handling of impact detection around compiler generated code.  The new approach should give 
much greater reliability and should resolve many problems, especially around inline lambdas and async code blocks.

Fixed an impact detection hole related to constructor and static constructor coverage not being properly tracked 
if inline lambdas were initialised early in the class structure.

Fixed an impact detection hole inside compiler generated code (async/await).

Fixed an impact detection issue where async/await blocks could cause NCrunch to think tests were impacted when 
they actually weren't.

Fixed an issue where NCrunch was interfering with some debugger stepping actions around async blocks.

Fixed an issue where specifically queuing large groups of tests for high priority execution was causing the engine 
to recycle the task runner over and over, reducing the efficiency of the test run.

The NCrunch console tool will now explode with an error and self-terminate if instructed to use an engine mode 
that does not exist in the configuration set.

Messages passed to NUnit3's Assert.Inconclusive method will now be written to the trace output by NCrunch.

Added several biztalk msbuild item types to NCrunch's auto dependency resolution system.

Fixed several type conversion issues when dealing with MSTest DataRow tests.

Added handling for the DisplayName property in MSTest DataRow tests.

Fixed an issue where NCrunch was not correctly synchronising with on-disk changes made to unloaded projects.

Fixed an issue where adding a new .NET Core project to the solution would cause the project to be stuck in a broken 
state, because of the late creation of the project.assets.json file by VS.

Adjusted NCrunch's file system integration so that changes made to build import files on disk will cause NCrunch 
to automatically reload affected projects.

Adjusted MSTest integration so that when confronted with multiple versions of MSTest used simultaneously, NCrunch 
will always use the latest referenced version.

Added a documentation link to NCrunch's error when it encounters .NET Standard test projects, as the error message 
has been confusing people.

nCrunch.TestRuntime.DotNetCore is now a signed assembly.

Fixed an issue where NCrunch could throw an exception downstream from attempting to load .NET Core projects that 
couldn't be loaded.  This would cause the engine to seize up and not report earlier more relevant problems.

Adjusted NCrunch's creation of its VS output window so that this will only happen if the "Log to output window" 
setting is enabled.  This is because the act of adding an output window to VS can take considerable time/CPU 
and to do this every time can increase IDE startup times.

Fixed an issue where NCrunch's Gallio cache was not being correctly cleaned up on grid nodes.  This could cause 
a build-up of small cache xml files over time.

Adjusted the cleanup of NCrunch's Gallio cache so that this is performed on engine initialisation rather than 
IDE startup, in case this action increases IDE startup times.

Resequenced some initialisation tasks to be performed on-demand rather than during IDE startup, to avoid 
increasing IDE startup times.

Fixed an issue where custom attribute data for interface implementation instances was being stripped out by 
NCrunch instrumentation.  This could then result in compile time issues for referencing projects.

Adjusted the NCrunch console tool so that this will now attempt to execute "msbuild /t:Restore" on projects 
when running on a machine with VS2017 installed.

Introduced a speculative workaround to try and resolve a problem where the NCrunch console tool sometimes explodes 
with a 'The parameter is incorrect' exception during its initialisation.

Fixed an issue where recursive method calls inside compiler generated methods could cause NCrunch's IL change 
detection system to explode with stack overflows.

Fixed files stored under the VS2017 install path being included in NCrunch workspaces when they shouldn't be.

Fixed content files under the user's nuget packages directory being included in NCrunch workspaces when they 
shouldn't be.

Introduced a speculative fix to resolve problems with CustomAfterMicrosoftCommonTargets resolution issues at 
build time.

Fixed an issue where CPS-based .NET classic projects could encounter runtime assembly load issues with Nuget 
assembly references.

Fixed an issue where the NCrunchCacheStoragePath setting was failing to load where an environment variable was 
used for the entirety of this setting's value.