Changes in v2.11

New Features:
--------------------------------------------------

Implemented the ability to host the NCrunch engine outside of the IDE process (devenv.exe). This removes a huge
amount of memory utilisation and traffic from the IDE, greatly improving performance and stability while also
providing the engine with a higher memory ceiling. This feature is enabled by default, and is controlled by the
'Engine Hosting Strategy' global configuration setting with the following options:
x86SatelliteProcess - Engine will be hosted in an x86 process (i.e. nCrunch.EngineHost453.x86.exe)
x64SatelliteProcess - Engine will be hosted in an x64 process (i.e. nCrunch.EngineHost453.x64.exe)
HostInIDE - Engine will be hosted inside devenv.exe as prior to v2.11

Introduced support for VS2015.

Added sortable columns to the test list popup window.

Added a column to the test list popup window allowing you to see the execution time of each test by line of code.

Integrated with Xunit 2 beta 5.

Adjusted NCrunch's task runner EXEs so that their names now represent the work they perform:
nCrunch.BuildHost.*.exe - This EXE is responsible for invoking MSBuild and performing all build actions
nCrunch.TestHost.*.exe - This EXE is responsible for test execution and running user code
nCrunch.EngineHost.*.exe - This EXE hosts the core engine when the engine is configured to run outside the IDE

Adjusted the console tool to display the version of NCrunch at the beginning of the console run.

Adjusted the risk/progress bar so that it will now show progress details when unprocessed build or analysis tasks
are in the queue.



Fixes, Performance and Compatibility Improvements:
--------------------------------------------------

Fixed several problems related to custom debug metadata being stripped from PDBs during NCrunch's instrumentation.
Resolution of these problems should fix issues such as local variable data being unavailable when debugging
iterator/async blocks.

Fixed an issue that could cause test fixtures to be hung in a running state if their child tests were renamed
during an execution run.

Introduced a workaround for a problem in which VS was stealing the focus away from newly opened NCrunch popup
windows, causing them to immediately close on opening.

Fixed a performance problem that could cause heavy drag on the engine when many changes are being made on the
file system under project/solution directory paths.

Adjusted the data handling of the metrics window to prevent it from annihilating core engine performance when a
coverage filter is active.

Tweaked the code coverage handling to improve performance and reduce memory consumption.

Adjusted the metrics tree calculation algorithm to improve performance and reduce drag on the engine with the
Metrics Window open.

Fixed a compatibility issue where NCrunch was unable to run tests held within a .NET 4.5.2 assembly.

Fixed NCrunch task runner processes making small usage of CPU while running.

Fixed an issue that was causing NCrunch to unnecessarily break up some groups of tests into smaller execution
tasks than it should, under certain conditions.

Adjusted the NCrunch configuration files so that these are now saved to disk in unicode. This is necessary
because the persistence of some configuration data in UTF8 was resulting in data loss and strange behaviour.

Adjusted the handling of NUnit tests with invalid category names so that NCrunch will now report these as
analysis errors, instead of ignoring them.

Fixed an issue where the culture being used for writing NCrunch configuration was not always the same as the
one used for reading the configuration. This could create config load/save problems on some machines.

Fixed an issue that could cause the tree grid column chooser context menu to fall out of sync with the columns
on the tree grid.

Fixed several error reporting issues when running the console tool under Team City.

Fixed several toolbar DPI scaling issues.

Fixed an issue where FSharp test assemblies making use of type providers were failing to build when using
Xunit V1 / Gallio.

Fixed an issue where NCrunch was not correctly resolving inherited tests when using Static Analysis with XUnit V2.

Improved the handling of errors occurring during copying of resource files between projects in the workspace at
build time.

Implemented a workaround to a bug/feature in NUnit that would automatically declare a fixture with only
inconclusive theory cases as failing. This method of handling inconclusive theory cases doesn't work for NCrunch
as it interferes with the 'Consider inconclusive tests as passing' setting and can produce inconsistent results
when theory cases are executed in isolation. NCrunch will now detect this situation and infer the 'correct'
inconclusive fixture result.

Adjusted the HTML export report so that the description of build results in this report is aligned with the
details shown in the Tests Window.

Improved the handling of situations where NCrunch is unable to locate NUnit tests during an execution run.
A meaningful message will now be displayed giving information on what can cause this problem and how to solve it.

Improved the handling of error situations caused by distributed processing with solutions containing projects
spread across multiple drives.

Improved the handling of certain error scenarios that were not being reported correctly and/or causing instability

Fixed Distributed Processing Window visual state not being saved between sessions.

Removed the context menu option from the Metrics Window solution row, since it doesn't apply in this situation.

Fixed a race condition that could cause test tasks to hang under certain conditions.

Fixed risk/progress bar not adjusting to size changes.

Fixed an issue where the risk/progress bar was not saving/loading its layout between sessions.

Fixed an issue that could cause the Tests Window viewable area to skip around strangely under some conditions.

Fixed a code coverage merging issue that was preventing some lines of code from being correctly updated with new
execution time data.

Fixed an issue that was causing the Tests Window to list failing/passing grid node names incorrectly when
presenting conflicting build results.

Improved the handling of grid node errors encountered while trying to execute tests. Previously, these errors
were causing the tests to hang in an incomplete state on the client side. Errors occurring during test execution
on nodes will now fail gracefully without leaving the client in a corrupt state.

Fixed an issue where XUnit V2 ClassFixture constructors were being called twice during test execution.

Fixed an issue where NCrunch was not renaming project configuration files when projects were renamed.

Fixed error noise on project rename.

Introduced a workaround for a win32 anomaly that was causing incorrect scaling of Tests Window toolbar images
under high DPI on Windows 10.

Fixed the cancel button on the Test Filter Builder Window - it was applying filter changes when it shouldn't have
been.

Fixed an issue where suddenly disconnecting from a grid node while it is executing tests would result in test
fixtures being stuck with a running status.

Fixed an issue where trying to queue the same test for multiple grid nodes would result in NCrunch only executing
the test on the node it was last queued for.

Increased the size of the text boxes inside the engine mode customisation window.

Fixed an issue that was causing noisy error messages to be kicked around grids when clients attempted to connect
to nodes with protocol inconsistencies.

Added the WiX project type to NCrunch's auto ignore list, as NCrunch cannot make use of these projects.

Fixed an issue that could prevent NCrunch from correctly communicating with grid node servers running on machines
set with a different language/culture.

Adjusted NCrunch's handling of file system changes to assembly references so that no action will be taken if the
O/S reports a file as changed when it hasn't been. This should prevent dysfunction caused by disruptive virus
scanners and other tools that trigger file system changes erroneously.

Fixed an issue that could prevent the corner popup window from being correctly brought to front in some situations.

Fixed several issues related to the use of the ignore/unignore options on categories in the Tests Window.

Adjusted the internal handling of code coverage to improve engine efficiency.

Fixed an issue where it was possible to add a new grid node configuration entry specific to a solution while no
solution in VS was open.

Introduced a workaround for an issue that could cause NCrunch coverage popup windows to fail to open the first
time they are opened with a negative X location (which can happen on some multi-monitor layouts).