Changes in v1.45

New Features:

Introduced a new configuration option, 'Sliding build delay (in ms)'. This option allows you to add an
artificial delay to NCrunch's build triggering, forcing the engine to wait for a certain period after the
solution has changed before it will enqueue any build tasks. This setting can be useful for situations where
NCrunch is being used on under-spec hardware or on very large projects with high build times.

Adjusted the code coverage suppression comment parsing so that it is now possible to add comments at the end
of them - for example: //ncrunch: no coverage start - Because I said so.

Fixes and Compability Improvements:

Upgraded NUnit support to 2.6.2, with support for async NUnit tests.

Tightened NCrunch's handling of MSTest tests that make use of private methods for Initialize/Cleanup/Test
operations. NCrunch will now fail the test if these methods are detected as private.

Fixed an issue where default(IntPtr) values assigned to method parameters could cause NCrunch's instrumentation
to explode with an exception.

Added support for the next upcoming version of JustMock, which is expected to work with NCrunch using elevated

Fixed an issue that was preventing NCrunch from discovering Xunit tests in nested classes when using static

Fixed an issue that could cause NCrunch to forget license details that had been previously entered.

Fixed a mapping issue that could cause the loss of code coverage information when processing code coverage
data for unopened source files modified on the file system.

Strengthened handling of edge case mapping situations to reduce or eliminate possible coverage mapping issues.

Adjusted the metrics view so that files without any code will be shown with an empty cell in the
'Code Coverage %' column - where this previously was shown incorrectly as 100%.

Fixed an issue where MSpec specifications containing '_s' would fail to execute under NCrunch.

Added support for the $(SolutionName) MSBuild property.

Added automatic detection/handling of code analysis custom rulesets and custom dictionaries.

Adjusted the code coverage popup dialogs so that they no longer appear in the windows taskbar.

Fixed an issue that could cause inefficient grouping/prioritisation of tests newly added to long running

Added a new project-level configuration option, 'MSTest thread apartment state', which can be used to set the
apartment state of threads used for the execution of MSTest tests. This setting is required because the only
mechanism that can normally change this is within the MSTest .testsettings file, which isn't supported by

Improved the error handling around invalid/corrupt application .config files. The configuration exception
will now be shown in the trace output of each applicable test, rather than an obscure message saying that the
test wasn't run.

Added a popup warning when attempts are made to change configuration for projects or solutions that have a
read-only configuration file.

Added support for the 'ExcludeFromCodeCoverage' MSTest attribute.

Added a test output message for when a test does not throw an expected exception under MSTest.

Fixed an issue that could cause InvalidProgramExceptions to be thrown during the execution of certain F# code.

Added support for custom MSBuild reference paths as defined in .proj.user files.

Added Azure ServiceDefinition and ServiceConfiguration project items to NCrunch's dependency discovery system.

Added support for custom MSTest category attributes when using a framework utilisation type of
'Dynamic Analysis'.

Added a warning for projects that contain custom MSTest category attributes that are using a framework
utilisation type of 'Static Analysis'.

Added a new project-level configuration option, 'Build process CPU architecture', which can be used to control
the CPU architecture of the process used to build the project. Normally this will be x86 (which is the Visual
Studio norm), although this setting can be used to boost the available memory for the build process or to add
support for custom x64 based build tasks.

Adjusted the configuration wizard so that it won't prompt for an engine mode if an existing custom engine mode
has been already selected.

Fixed an issue that made it impossible to uninstall NCrunch after Visual Studio has been uninstalled.

Fixed an issue where trying to include the project directory using the 'Additional files to include'
configuration setting would create an invalid expression ('\**.*') that would cause NCrunch builds to fail.

Added a warning about adding 'Additional files to include' with a value of '**.*', as this can cause files to
be included in the NCrunch workspace that shouldn't be there.

Fixed an issue that was causing the scrollbar of the configuration pane to jump around annoyingly every time
a setting was changed.

Fixed an issue that could cause inconsistent cross-assembly build behaviour when modifying public methods
making use of parameter defaults.

Fixed an issue that could cause Code Analysis errors during build time when processing assemblies referencing
methods in other assemblies that made use of generic default parameters.

Fixed an issue where NCrunch was not correctly handling and synchronising the renaming of projects in the IDE.

Fixed an issue that could cause NCrunch's instrumentation to mangle the stack traces of exceptions thrown in
methods altered by other IL manipulation tools (such as Microsoft Code Contracts).

Fixed an issue where NCrunch was leaving behind resolution cache files in the 'obj' directory of a project
during initialisation. Over time this could build up to a large number of small useless files.

Added support for the automated detection of BlendEmbeddedFonts.

Fixed an issue where renaming a project would result in a loss of NCrunch configuration for the project, and
the NCrunch configuration file would be left behind under the wrong project name.

Made the (N) product icons prettier.