- Added support for running the NCrunch console tool directly using dotnet build, in theory without VS needing to be installed on the machine. Note that the platform under dotnet may still require VS depending on the nature of the projects being built, but at least NCrunch no longer directly requires it to be installed. This can be used by running 'ncrunch.exe /VS dotnet'.
- Fixed an issue that was causing the engine to unnecessarily run builds when resource files were opened (in an unchanged state) in the IDE.
Fixed an issue that could cause resource file encoding to be set incorrectly for files that were open in the IDE.
- Fixed an issue where NCrunch's MSTest adapter was not correctly executing tests that returned an async task but were not marked with async.
- Restructured the engine's watching of files and directories on disk so that this is now piped through a central service that orchestrates all file system watchers to reduce redundancy. This should improve performance for solutions with projects containing overlapping dependencies, as file system events are consolidated and processed together rather than through many subscriptions to events at platform level. File system events are now also piped through a dedicated thread responsible for their processing, which should prevent I/O completion ports on the system from jamming up and impacting system-wide performance.
- Tweaked path/directory handling to improve internal performance.
- Implemented a range of performance optimisations to reduce the drag of the engine when processing a large number of source file changes underneath foreground project directories.
- Fixed an exception that could be thrown when loading a corrupt hash cache, degrading the efficiency of the engine.
- Fixed a potential Visual Studio crash issue that could happen if manually removing a breakpoint created by NCrunch and detaching the debugger or running the test to completion so it would detach.
- Internally changed the handling of coverage data so that when coverage data is requested from the coverage database for tests or source files that aren't in the database, the system will return empty coverage instead of throwing an error. This should help to improve engine stability when dealing with rare edge cases or when operating downstream from other issues.
- Piped the test navigation points so that they are now backed by the coverage database rather than using static test entry points returned from the build system. This should provide better stability when navigating between tests on code that is changing often.
- Fixed RDI progress indicator not always shown the first time an RDI overlay is opened in a given editor window
- Adjusted the handling of Tests Window options so that when executing commands (such as run test) on a namespace, the scope of the command will be limited to tests that exist under the parent rows inside the view. This means that queuing all tests within a namespace under a multi-targeted project will result in only executing tests that target this particular platform. This also has an equivalent effect for running tests grouped by category.
- Fixed inability to specify IPv6 addresses in the grid management window
- Fixed cancel link in RDI loading jellybean not working under Rider
- Adjusted the error message around unexpected process termination to make it more helpful
- Fixed Tests Window not resizing all content correctly sometimes when snapping or maximising it as a floating tool window under Rider.
- Fixed an issue that could cause the engine to crash when switching solutions under Rider
- Fixed an issue where dragging the mouse over an RDI data point could cause exceptions to be thrown in the NCrunch engine
- Adjusted thread handling to fix potential race conditions around RDI data value popups
- Fixed a range of threading issues that could cause exceptions under Rider related to the tracking of open editor windows
- Implemented a speculative fix to try and resolve crash issues that can appear when switching solutions in Rider
- Fixed RDI coverage index exceptions thrown on startup when the coverage database fell out of sync with the source code while the engine was offline
- Adjusted the handling of Rider shared memory buffer switching to make the system more resilient in the event of buffer life cycle problems
- Fixed a deallocation issue that was causing shared memory to be leaked and re-used incorrectly between the NCrunch backend and the Rider frontend, causing instability and wasted resources
- Implemented a speculative fix for an exception that could appear while navigating between RDI scope frames into unopened source files under Rider
- Fixed Tests Window report export options throwing exceptions under Rider
- Fixed incorrect handling of open source files being moved in Rider, which would cause the engine to become unstable.
- Implemented a speculative fix for an issue where null document paths in a PDB file could cause NCrunch to throw exceptions when running under the console tool
- Fixed an issue where Xunit3 integration would fail to correctly resolve Xunit dependencies when the Copy Referenced Assemblies To Workspace setting was enabled
- Rider: Adjusted the tool window showing commands so that when an NCrunch tool window is already visible, hitting the tool window shortcut will activate the window and bring it into focus. Unfortunately, full keyboard control will not be transferred to the window until it is actually clicked with the mouse, as the JetBrains wormhole system that underlies our tool windows does not seem to support direct keyboard activation, so most likely this is of limited use.
- Fixed a noise exception that could be thown sometimes when closing RDI overlays in Rider.
- Fixed a new issue under VS2022 17.12 where referencing a specific version of the Windows SDK in project build config would cause NCrunch to fail to start the runtime environment to discover or execute tests.
- Fixed an issue that could cause unstable behaviour when opening RDI scopes in Rider.
- Switched NCrunch.Framework from netstandard1.5 to netstandard2.0. This should hopefully resolve some of the security warnings people are receiving when making use of this package.
- Fixed an issue that could cause RDI to throw exceptions when executing async blocks under tests with EnableRdi(false).