Changes in v4.7

-----------------------------------------------------------------
Release notes for 4.7.0.5 since version v4.6.0.3
-----------------------------------------------------------------

*****
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 a workaround for a platform issue that seemed to somehow be causing access violation exceptions sometimes when working under .NET5.

Added a graphical map of hyperlinks in the Test Trace Output, this allows for quick navigation to hyperlinks.

NCrunch will now attempt to parse the TargetFramework and TargetFrameworks properties from directory.build.props files that exist upwards from a project while it is being loaded. This should improve compatibility for solution structures that declare these frameworks at a higher level in the directory structure.

When the TargetFramework/TargetFrameworks properties are derived from other build properties, NCrunch will now throw a meaningful error instead of failing downstream with an obscure exception. Presently, we don't support such a structure. Hopefully this error should help people to quickly find a workaround if they are making use of it.

Changed the reporting of package restore problems for setting up test environments from an error to a warning when reporting under TeamCity.

Added a new shortcut key (CTRL m + comma) to show the popup menu for the current coverage marker.

Adjusted NCrunch's tracking of file dependencies so that a meaningful error will now be thrown when the tracking of file dependencies is being performed on code making use of security critical platform features, such as IsolatedStorage.

Adjusted the processing queue window so that this now uses the same text output control as the Tests Window. This should improve UI consistency and performance.

When working with a pipeline optimisation priority of Throughput (the default mode for the console tool), tasks making exclusive use of resources will now receive a significant priority boost relative to other tasks in the queue. This should allow the engine to behave more intelligently when working with solutions containing many constrained tests.

Fixed a potential thread safety issue that could cause exceptions to occur when connecting to grid nodes.

Fixed the log on the processing queue window not always being positioned correctly.

Improved error reporting when running the console tool under TeamCity when a license is not specified or expired.

Checked that all projects are built before attempting to export the OpenCover report, if not all projects are built a message is shown.

Introduced a speculative fix to try and resolve an exception thrown by NCrunch's AspNetMvcTestHost compatibility system that could appear under certain multi-targeted solution structures.

Fixed an issue when failing to correctly load a project, NCrunch will sometimes continue to try to reload the project again and again, causing annoying flickering and frustration.

Improved error reporting when detecting an inconsistent test set between NUnit discovery and the actual test run.

Improved the error handling for .NET Core/5+ test projects. Where the task runner process fails to initialise, NCrunch will now redirect the trace output from the process failure and will provide error information in the Tests Window.

Improved the IpcConnectionClosed error so that this now contains a documentation link with instructions to help with troubleshooting.

Fixed a serialization bottleneck that was greatly reducing the responsiveness of the Tests Window when working with large numbers of tests containing trace output.

Fixed a problem when loading documents during the optimised instrumentation.

Fixed the error reporting when MSTest initialiser methods have an incorrect signature.

Fixed an issue where targeting a specific revision of the .NET framework would cause NCrunch to hand the targeting value down into the runtime. This would result in the test process failing to initialise as the platform tries to find references that likely aren't installed on the system.

Fixed NUnit timeout enforcement for TimeoutAttribute specified at the assembly level.

Completely replaced NCrunch's existing logging system with a new shared memory system to improve performance. Log data is now correlated into a shared buffer in real time, instead of being piped between processes through IPC channels. This gives a more consistent and coherent log and should reduce overall CPU waste related to the logging system in general. Benefits include:

- A new configuration setting (Build log verbosity) that controls the verbosity of build logs separate from the NCrunch Log Verbosity setting. This should make it much easier to troubleshoot build problems under NCrunch, as these logs will be piped straight to the processing queue window.

- Grid nodes will now adhere to client configuration when reporting task log down the wire. This means that a grid node can report logs with detailed verbosity into a client's processing queue window even though the grid node has its own logging disabled or set to summary.

- Log data is no longer batched with other task results when working locally. This should improve local build and test task processing times under NCrunch.

Fixed a performance issue where rapid changes to fast building projects could drag on the VS UI while the Tests Window was open.