Changes in v3.18

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

-----------------------------------------------------------------
NEW FEATURES
-----------------------------------------------------------------

Added a detailed HTML timeline report to the console tool that dumps internal information around core load usage and the tasks
being executed by the console tool over the run.

Removed the experimental toolbar button reordering on the tests window in favor of an extra button that lets you disable buttons
on the toolbar to create more space.

Added a new project-level configuration setting, 'Custom build properties'. This setting can be used to specify properties
that NCrunch will pass into MSBuild when projects are built and loaded. This is a useful way to override build behaviour
without needing to make changes to project files.

Added the ability to override the 'TargetFramework' and 'TargetFrameworks' build properties using the new 'Custom build properties'
configuration setting.

Improved the command-line parser for the console tool so that it is now possible to inject more complex settings into the tool
(such as GridServerReferences and CustomEnvironmentVariables).

Added a message to the TeamCity output that shows which grid node executed a test

Added a menu option to the Tests Window Toolbar to collapse and expand the tests in the tree.

Added a new optional column to the Tests Window for 'Last Run/Build Date'. This is intended for manual execution scenarios where
just knowing the time of the last execution isn't enough, you actually need the date too.

-----------------------------------------------------------------
PERFORMANCE IMPROVEMENTS
-----------------------------------------------------------------

The console tool will now always set the 'Fast Lane Threads' setting to zero, even if this is specified in a configuration file.
The only way to override this behaviour is to provide it to the tool using the command line.

Adjusted the grid node's work request system so that when dealing with multiple client connections, the grid node will now request
tasks from each client in larger chunks than previously. This should help to improve the 'ramp up' time associated with using
shared nodes in high capacity grids.

Adjusted the prioritisation of build and analysis tasks so that when using a Pipeline Optimisation Priority of Throughput (the
default setting for the console tool), these tasks will receive a 100x priority boost, ensuring they are executed above tests.
This should resolve certain long-tail scenarios by allowing longer running tests to be kicked off earlier in the run.

-----------------------------------------------------------------
COMPATIBILITY IMPROVEMENTS
-----------------------------------------------------------------

Added a new system to resolve netcoreapp dependency data for NCrunch's built-in assemblies. Previously, this was being handled
purely through pre-compiled resources packaged with the NCrunch install files, which was creating dependency issues when working
in some environments with newer versions of .NET Core (i.e. 2.1). NCrunch will now resolve its own dependency data dynamically
in your own environment when it encounters a version of .NET Core that it doesn't have dependency data for. This should improve
stability in .NET Core test environments and also provides a level of forwards compatibility with future versions of .NET Core.

Fixed an issue where exceptions thrown inside the dispose methods of Xunit class fixtures were not being detected by NCrunch.

Changed the TeamCity integration in the console tool to report NCrunch Errors as build problems. This prevents potential problems
from hiding unnoticed in the logs.

Changed the integration with TeamCity in the console tool to not report Explicit tests as ignored. Furthermore Explicit tests will
no longer count in setting the exit status to TestsNotRun.

Adjusted the NCrunch project load system so that the ProjectName, AssemblyName and ProjectFileName properties will be set to the
correct name of the project rather than the NCrunch temp file. This should help to enable better compatibility with customised
build systems.

NCrunch will now capture output from NUnit3's progress stream in the test's trace output.

Disabled SourceLink when working under NCrunch to prevent the build from failing inside NCrunch workspaces.

Fixed MSTest async test methods broken in .NET Core 2.1.

Adjusted the rendering of coverage markers so that these are now aligned with the bottom of the line position, rather than the top.
This should resolve issues with misaligned marker positions under some lines of code with CodeLens enabled.

Added support for MSTest's DynamicData attribute. When the Framework Utilisation Type for MSTest is set to DynamicAnalysis, NCrunch
will report dynamic data test cases individually as unique tests provided their parameter data is constructed using primitive types.
When using StaticAnalysis or the parameter data contains complex types, NCrunch will collapse the test and report its results in
aggregate form in the same manner as VSTest. Thus the experience when using this attribute under NCrunch can in many cases be a
considerable improvement over VSTest or default MSTest.

-----------------------------------------------------------------
BUG FIXES AND MINOR ADJUSTMENTS
-----------------------------------------------------------------

Fixed an issue where NCrunch was not always correctly transferring the encoding for open non-code files in the IDE to remote
grid nodes. This could result in noise errors being thrown up by remote nodes or files being corrupted when written to
workspaces on remote nodes.

Renamed 'Core Load' to 'Engine Core Load' in the status icon tooltip window.

Adjusted the tooltip wording on the Reset button to give a better description of what this button does.

Adjusted the NCrunch grid node so that it stores its hash cache in a separate location to the console tool or VS plugin.
This should help to resolve any issues with concurrent access to this file on machines that use both a grid node and the
console tool (i.e. CI servers).

Fixed an issue where the target framework was not being correctly appended to a test's name in the UI.

Fixed an issue where the columns in the test list popup window could not be resized.

Adjusted the test list popup to make it slightly more compact.

Fixed an issue that could cause NCrunch to crash the IDE in certain situations when the VS layout was reset with the Tests Window
open (such as when attaching/detaching a debugger)

Fixed an issue where NCrunch was incorrectly caching context menu items between instances of the context menu. This could cause
strange behaviour when working with tests in multi-targeted scenarios.

Fixed an issue where sometimes NCrunch would not correctly interpret new results for previously failing tests after churn mode
was recently disabled.

Fixed text running off the edge of the corner popup window when working with grids using at least 100 task processors.

Adjusted the internal representation of the execution times and dates inside the Tests Window, so that these are now handled as
TimeSpan and DateTime objects with formatted rendering, rather than just strings. This should improve the CSV export experience
while also better enabling sorting on these fields.

Fixed noisy 'Resetting ping' log messages accidently released with v3.17.