Changes in v4.12

-----------------------------------------------------------------
Release notes for 4.12.0.4 since version v4.11.0.2
-----------------------------------------------------------------

*****
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 to a VS2022 preview issue that was inhibiting correct project synchronisation with NCrunch about 50% of the time.

Updated the initialisation progress jellybean so that it now counts down the number of seconds until the engine is fully initialised. As initialisation time depends on many factors, we estimate this based on the time it took to initialise the engine the last time it was opened for the same solution.

Updated the initialisation progress reporter so that it now shows the number of background threads running across the initialisation tasks using the spinners.

Added a jellybean reporting the status of the engine while it is shutting down.

Added a jellybean to the Tests Window which is shown when the engine is performing large refreshes of the data being shown there.

Added a jellybean to the termination of test tasks via the kill button on the Tests Window. Sometimes when many tasks are executing over a grid, it can take a few seconds to kill them all. This makes the kill button feel unresponsive, so having some visible measure of progress greatly improves this experience.

Updated the NCrunch license agreement to clarify that it is not permitted to purchase a named user license only to have the cost of this reimbursed by another party (such as an employer).

Implemented a speculative fix for an issue that could cause the engine to fail to correctly update the cache file on exit.

Added improved handling for PostSharp assembly resolution when working under .NET Core/NET5+. Previously, PostSharp would fail to find the NCrunch.TestRuntime.DotNetCore assembly which would cause PostSharp build steps to fail when working with assemblies instrumented by NCrunch. Now, NCrunch will detect the presence of PostSharp and will inject this assembly into PostSharp's internal configuration so that the file can be found without messy workarounds required.

Fixed an issue that was causing the engine to throw exceptions if it was restarted 10 times during a single session.

Moved the NCrunch engine host up to .NET Framework v4.8 when running under VS2022.

Restructured the inbound network handling for grid connections to improve reliability and efficiency.

Fixed an issue that could cause stability problems when working with files over 2.1GB.

Optimised serialisation buffering to improve performance.

The NUnit and Raw XML exports from the console tool will now export tests in alphabetical order, instead of the order in which they are stored in the internal data model.

Replaced the internal serialization buffering system with specialised components to significantly improve engine performance and reduce memory traffic.

Adjusted internal buffering to improve performance.

Adjusted the handling of internal NCrunch errors so that these are now piped to the Tests Window for the affected tests, rather than being swallowed in the internal error handling and the tests being left in a 'running' state.

Adjusted the handling of test trace output hashing to improve performance when constructing datasets during Tests Window refresh.

Fixed an issue that was causing the engine to trigger internal refreshes of areas of the UI when the user settings file was updated. This was degrading engine performance in response to certain activities, such as changing Tests Window filters.

Adjusted the threading around updates to the engine core utilisation monitor to provide more accurate updates when the engine is overloaded.

Adjusted NCrunch's handling of source generator projects so that the nCrunch.TestRuntime.DotNetCore.dll instrumentation dependency is injected into the build system as an analyzer dependency for projects that depend on source generator projects. This allows source generators to run under NCrunch even when they are instrumented.

Fixed Tests Window not always correctly updating the status of recently loaded projects.

Added several fallbacks to the resolution of the install path of dotnet, as some systems seem to have a strange dotnet install state where NCrunch is unable to find it on grid nodes, leading to downstream issues.

Fixed an issue that could cause InvalidProgramExceptions when working with solutions containing user declarations of System.Runtime.CompilersServices.IsExternalInitAttribute.

Fixed a refresh issue in the processing queue window where the output pane would not correctly update itself when focusing on a queue item without any output text.

Introduced a speculative fix to resolve problems where grid nodes are unable to resolve critical system libraries when processing projects on behalf of some client machines.

Implemented a speculative fix to try and solve problems where MSBuild redirections were not being consistently applied in some environments.

Improved the rendering of the Timeline export when a node doesn't run tasks in parallel.