Changes in v3.10

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.

Implemented preliminary handling for the latest preview release of VS2017.15.3, along with .NET Core v2.0. It's
expected that both of these platforms will likely change prior to their upcoming RTM release, and things may
break if they do.

Fixed an issue that was preventing NCrunch from detecting projects newly added to a solution under VS2017 15.3

Fixed an impact detection hole that would prevent NCrunch from detecting an impacted fixture currently under
execution under specific circumstances.

Implemented support for MSpec under .NET Core.

Added a new NCrunch.Framework attribute, 'AtomicAttribute'. When applied to a fixture, all tests within the
fixture become interdependent and will always be run together in one group. Any attempt made to run a single
test under an atomic fixture will result in all tests in the fixture being run in the same execution task.
This should be useful for sequence dependent tests and tests with very high fixture setup times.

Fixed an issue where the NCrunch client could incorrectly disconnect from a remote grid node during transfer of
large files.

Fixed an issue where NCrunch was not correctly mapping exception markers for tests that were under execution
while source code was changed.

Fixed an issue where NCrunch was not correctly grid synchronising Nuget packages that were newly added to a

Moved the 'PreviouslyBuiltSuccessfully' setting into the NCrunch .cache file. NCrunch will no longer add this
setting to project config files, though if it already exists in these files, the config system will not remove
it. The XML element can now be safely removed from the config files and the engine won't re-add it.

Expanded the text in the bug report submission form to give a clearer picture of the contents of NCrunch bug

Fixed an issue that could cause the filters on the Tests Window to become desynchronised with the engine when
switching solutions.

Implemented a speculative fix to try and resolve startup problems on some systems.

Fixed an issue that was causing the engine mode customisation window to give popup errors when two engine modes
existed with the same name but a different scope (which is actually allowed).

Fixed an issue that was preventing NCrunch from compiling .NET Standard projects on machines that had never
tried to build a netcoreapp project before.

Fixed inconclusive test results settings not being properly respected when inconclusive exceptions were thrown
in MSTest TestInitialize methods.

Added handling for NUnit's TestContext output. This will now be written to the test's trace output by NCrunch.

Fixed an issue where the NCrunch console tool would fail to create an HTML report for projects containing
multi-targeted projects.

Added non-internal errors to the HTML results report.

Adjusted the formating of warnings in the HTML results report so that the line breaks are properly included.

Adjusted NCrunch's handling of duplicate named NUnit3 tests so that when these are detected, the engine will
treat them as the same physical test. Results from the multiple tests are collected and stored against the
single test. Warnings about duplicate test names will still be shown as technically this is still not a
supported use case under NCrunch.

Adjusted the NCrunch.Framework Nuget package so that this is now properly multi-targeted. This means you should
now be able to use this package for .NET Core and netstandard projects. This will now also be installed into
two locations under the NCrunch install directory (net35 and netstandard1.5).

Fixed an issue that was preventing NCrunch from correctly negotiating project references from some classic
.NET projects to multi-targeted CPS based projects.

Fixed an issue where NCrunch was not considering NUnit3's explicit attribute when this was applied at fixture

Fixed an issue where projects using the 'InternalsVisibleTo' attribute were not having their referenced projects
recompiled when internal types were changed.

Implemented handling for IDisposable on MSTest fixtures.

Fixed an issue where including a space in the TargetFrameworks element for multi-targeted projects would create
problems for NCrunch.

Implemented a speculative fix to try and resolve problems with multiple coverage bars appearing after files are
renamed in VS2017.

Disabled data compression on all grid network communication. Tests have shown that the CPU required to compress
the data was creating a bottleneck and actually reducing the speed of data transmission while increasing the
resources required. Considering that most users are probably working with reasonably high speed connections to
grid nodes and are not sitting on the beach using mobile connections (as much as we might wish otherwise), this
should give a significant performance improvement when working with large solutions over a grid.

Fixed an issue where partially out of sync or corrupted Nuget packages on grid nodes were not being correctly
updated from grid clients.

Improved the error handling of NCrunch's parsing of CPU core descriptors from config files, so when these are
invalid values they shouldn't cause the engine to explode.

Added a warning regarding AutoFixture incompatibility.

Fixed the intermittent 'System.ComponentModel.Win32Exception: The parameter is incorrect' issue that could
sometimes appear when the NCrunch console tool was executed.

Fixed broken C# compiler constants under CPS based projects.

Adjusted the handling and merging of .NET Core .deps files to resolve some dependency problems with the
AspNet.TestHost library.

Fixed an issue where Xunit test name generation was being performed in a culture-sensitive manner. This was
causing problems when trying to distribute Xunit tests across grid nodes with different localities.

Introduced a workaround for an IL hash comparison issue caused by FSharp expressions that embed the full file
path of the source file in the compiled assembly.

Added a discovery cache layer inside of xunit test execution processes to try and improve the handling of tests
with unstable parameters.

Restructured NCrunch's code coverage capturing system to provide better handling of .NET Framework test projects
referencing netstandard projects.