coverlet.msbuild
Coverlet is a cross platform code coverage library for .NET, with support for line, branch and method coverage.
10.0.1
257M downloads/mo
#223 most downloaded on NuGet
coverlet-coverage/coverlet
What this package is like to depend on
Last release 3 months ago
18 May 2026
Release timing varies
gaps range from 3 weeks to 13 months
Some releases are documented
notes for 19 of 42 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
42 releases · first in 2018
4 releases in the last 12 months
see the full history below
Release timeline
42 releases · Mar 2018 to May 2026Releases
latest 42-
10.0.118 May 2026Release notes
Open source →Improvements
- Coverlet with MTP 2 doesn't show test coverage statistic in console #1907
- Avoid unnecessary testhost restarts #1912 by https://github.com/mawosoft
Fixed
- Fix inconsistent paths in cobertura reports #1723
- Fix when using "is" with "and" in pattern matching, branch coverage is lower than normal #1313
- Fix Coverlet flagging a branch for an async functions finally block where none exists #1337
- Fix Coverlet Tracker Missing CompilerGeneratedAttribute #1828
Maintenance
-
10.0.017 Apr 2026Release notes
Open source →Improvements
- Unique Report Filenames (coverlet.MTP and AzDO) #1866
- Add
--coverlet-file-prefixoption for unique report files #1869 - Introduce .NET 10 support #1823
Fixed
- Fix [BUG] Wrong branch rate on IAsyncEnumerable for generic type #1836
- Fix [BUG] Missing Coverage after moving to MTP #1843
- Fix [BUG] No coverage reported when targeting .NET Framework with 8.0.1 #1842
- Fix [BUG] Behavior changes between MTP and Legacy (msbuild) #1878
- Fix [BUG] Coverlet.MTP - Unable to load coverlet.mtp.appsettings.json #1880
- Fix [BUG] Coverlet.Collector produces empty report when Mediator.SourceGenerator is referenced #1718 by https://github.com/yusyd
- Fix [BUG] Crash during instrumentation (Methods using LibraryImport/DllImport have no body) #1762
Maintenance
Release notes
Open source →Improvements
- Unique Report Filenames (coverlet.MTP and AzDO) #1866
- Add
--coverlet-file-prefixoption for unique report files #1869 - Introduce .NET 10 support #1823
Fixed
- Fix [BUG] Wrong branch rate on IAsyncEnumerable for generic type #1836
- Fix [BUG] Missing Coverage after moving to MTP #1843
- Fix [BUG] No coverage reported when targeting .NET Framework with 8.0.1 #1842
- Fix [BUG] Behavior changes between MTP and Legacy (msbuild) #1878
- Fix [BUG] Coverlet.MTP - Unable to load coverlet.mtp.appsettings.json #1880
- Fix [BUG] Coverlet.Collector produces empty report when Mediator.SourceGenerator is referenced #1718 by https://github.com/yusyd
- Fix [BUG] Crash during instrumentation (Methods using LibraryImport/DllImport have no body) #1762
Maintenance
- Add comprehensive async method tests and documentation for issue #1864
- Replace Tmds.ExecFunction Package in coverlet.core.coverage.tests #1833
- Add net9.0 and net10.0 targets #1822
Release date 2026-03-17
Packages
-
8.0.117 Mar 2026Release notes
Open source →Fixed
- Fix [BUG] TypeInitializationException when targeting .NET Framework #1818
- Fix [BUG] coverlet.MTP build fails with CS0400 due to developmentDependency=true #1827
Improvements
- Additional improvements needed for .NET Framework instrumentation type import #1825
Release notes
Open source →Fixed
- Fix [BUG] TypeInitializationException when targeting .NET Framework #1818
- Fix [BUG] coverlet.MTP build fails with CS0400 due to developmentDependency=true #1827
Improvements
- Additional improvements needed for .NET Framework instrumentation type import #1825
Release date 2026-02-15
Packages
-
8.0.014 Feb 2026Release notes
Open source →Special Thanks: A huge thank you to @Bertk for driving the majority of the work in this release! 🎉
Fixed
- Fix System.CommandLine 2.0 release is available #1776
- Fix Excluding From Coverage bad defaults from given example #1764
- Fix branchpoint exclusion for sdk 8.0.407 #1741
- Fix missing copyright information in NuGet #1794
- Fix bad default values in documentation #1764 by https://github.com/cboudereau
Improvements
- Coverlet MTP extension feature #1788
- Generate SBOM for nuget packages #1752
- Use multi targets projects for coverlet.collector, coverlet.msbuild.tasks packages #1742
- Use .NET 8.0 target framework for coverlet.core and remove Newtonsoft.Json #1733
- Use latest System.CommandLine version #1660
- Upgraded minimum required .NET SDK and runtime to .NET 8.0 LTS (Long Term Support) (Breaking Change)
- Use xunit.v3 for tests and example code
Release notes
Open source →Special Thanks: A huge thank you to @Bertk for driving the majority of the work in this release! 🎉
Fixed
- Fix System.CommandLine 2.0 release is available #1776
- Fix Excluding From Coverage bad defaults from given example #1764
- Fix branchpoint exclusion for sdk 8.0.407 #1741
- Fix missing copyright information in NuGet #1794
- Fix bad default values in documentation #1764 by https://github.com/cboudereau
Improvements
- Coverlet MTP extension feature #1788
- Generate SBOM for nuget packages #1752
- Use multi targets projects for coverlet.collector, coverlet.msbuild.tasks packages #1742
- Use .NET 8.0 target framework for coverlet.core and remove Newtonsoft.Json #1733
- Use latest System.CommandLine version #1660
- Upgraded minimum required .NET SDK and runtime to .NET 8.0 LTS (Long Term Support) (Breaking Change)
- Use xunit.v3 for tests and example code
Release date 2025-01-20
Packages
-
6.0.419 Jan 2025Release notes
Open source →Fixed
- Fix empty coverage report when using include and exclude filters #1726
Release notes
Open source →Fixed
- Fix empty coverage report when using include and exclude filters #1726
Release date 2024-12-31
Packages
-
6.0.330 Dec 2024Release notes
Open source →Fixed
- Fix RuntimeConfigurationReader to support self-contained builds #1705 by https://github.com/pfeigl
- Fix inconsistent filenames with UseSourceLink after .NET 8 #1679
- Fix hanging tests #989
- Fix coverlet instrumentation becomes slow after installing dotnet sdk 8.0.200 #1620
- Fix upgrading v6.0.1 to v6.0.2 increases instrumentation time #1649
- Fix Unable to instrument module - NET 8 #1631
- Fix slow modules filtering process #1646 by https://github.com/BlackGad
- Fix incorrect coverage await using in generic method #1490
Improvements
Release notes
Open source →Fixed
- Fix RuntimeConfigurationReader to support self-contained builds #1705 by https://github.com/pfeigl
- Fix inconsistent filenames with UseSourceLink after .NET 8 #1679
- Fix hanging tests #989
- Fix coverlet instrumentation becomes slow after installing dotnet sdk 8.0.200 #1620
- Fix upgrading v6.0.1 to v6.0.2 increases instrumentation time #1649
- Fix Unable to instrument module - NET 8 #1631
- Fix slow modules filtering process #1646 by https://github.com/BlackGad
- Fix incorrect coverage await using in generic method #1490
Improvements
- Cache the regex used in InstrumentationHelper #1693
- Enable dotnetTool integration tests for linux #660
Release date 2024-03-13
Packages
-
6.0.213 Mar 2024Release notes
Open source →Fixed
- Threshold-stat triggers error #1634
- Fixed coverlet collector 6.0.1 requires dotnet sdk 8 #1625
- Type initializer errors after updating from 6.0.0 to 6.0.1 #1629
- Exception when multiple exclude-by-attribute filters specified #1624
Improvements
- More concise options to specify multiple parameters in coverlet.console #1624
Release notes
Open source →Fixed
- Threshold-stat triggers error #1634
- Fixed coverlet collector 6.0.1 requires dotnet sdk 8 #1625
- Type initializer errors after updating from 6.0.0 to 6.0.1 #1629
- Exception when multiple exclude-by-attribute filters specified #1624
Improvements
- More concise options to specify multiple parameters in coverlet.console #1624
Release date 2024-02-19
Packages
-
6.0.120 Feb 2024Release notes
Open source →Fixed
- Uncovered lines in .NET 8 for inheriting records #1555
- Fix record constructors not covered when SkipAutoProps is true #1561
- Fix .NET 7 Method Group branch coverage issue #1447
- Fix ExcludeFromCodeCoverage does not exclude method in a partial class #1548
- Fix ExcludeFromCodeCoverage does not exclude F# task #1547
- Fix issues where ExcludeFromCodeCoverage ignored #1431
- Fix issues with ExcludeFromCodeCoverage attribute #1484
- Fix broken links in documentation #1514
- Fix problem with coverage for .net5 WPF application #1221 by https://github.com/lg2de
- Fix unable to instrument module for Microsoft.AspNetCore.Mvc.Razor #1459 by https://github.com/lg2de
Improvements
- Extended exclude by attribute feature to work with fully qualified name #1589
- Use System.CommandLine instead of McMaster.Extensions.CommandLineUtils #1474 by https://github.com/Bertk
- Fix deadlog in Coverlet.Integration.Tests.BaseTest #1541 by https://github.com/Bertk
- Add coverlet.msbuild.tasks unit tests #1534 by https://github.com/Bertk
Release notes
Open source →Fixed
- Uncovered lines in .NET 8 for inheriting records #1555
- Fix record constructors not covered when SkipAutoProps is true #1561
- Fix .NET 7 Method Group branch coverage issue #1447
- Fix ExcludeFromCodeCoverage does not exclude method in a partial class #1548
- Fix ExcludeFromCodeCoverage does not exclude F# task #1547
- Fix issues where ExcludeFromCodeCoverage ignored #1431
- Fix issues with ExcludeFromCodeCoverage attribute #1484
- Fix broken links in documentation #1514
- Fix problem with coverage for .net5 WPF application #1221 by https://github.com/lg2de
- Fix unable to instrument module for Microsoft.AspNetCore.Mvc.Razor #1459 by https://github.com/lg2de
Improvements
- Extended exclude by attribute feature to work with fully qualified name #1589
- Use System.CommandLine instead of McMaster.Extensions.CommandLineUtils #1474 by https://github.com/Bertk
- Fix deadlock in Coverlet.Integration.Tests.BaseTest #1541 by https://github.com/Bertk
- Add coverlet.msbuild.tasks unit tests #1534 by https://github.com/Bertk
Release date 2023-05-21
Packages
-
6.0.021 May 2023Release notes
Open source →Fixed
-Could not write lines to file CoverletSourceRootsMapping - in use by another process #1155
-Incorrect coverage for methods returning IAsyncEnumerable in generic classes #1383
-Wrong branch coverage for async methods .NET Standard 1.x #1376
-Empty path exception in visual basic projects #775
-Align published nuget package version to github release version #1413
-Sync nuget and github release versions #1122Improvements
-Migration of the project to .NET 6.0 #1473Breaking changes
New parameter ExcludeAssembliesWithoutSources to control automatic assembly exclusion #1164. The parameter InstrumentModulesWithoutLocalSources has been removed. since it can be handled by setting ExcludeAssembliesWithoutSources to None.
The default heuristics for determining whether to instrument an assembly has been changed. In previous versions any missing source file was taken as a signal that it was a third-party project that shouldn't be instrumented, with exceptions for some common file name patterns for source generators. Now only assemblies where no source files at all can be found are excluded from instrumentation, and the code for detecting source generator files have been removed. To get back to the behaviour that at least one missing file is sufficient to exclude an assembly, set ExcludeAssembliesWithoutSources to MissingAny, or use assembly exclusion filters for more fine-grained control.Release notes
Open source →Fixed
- Could not write lines to file CoverletSourceRootsMapping - in use by another process #1155
- Incorrect coverage for methods returning IAsyncEnumerable in generic classes #1383
- Wrong branch coverage for async methods .NET Standard 1.x #1376
- Empty path exception in visual basic projects #775
- Align published nuget package version to github release version #1413
- Sync nuget and github release versions #1122
Improvements
- Migration of the project to .NET 6.0 #1473
Breaking changes
- New parameter
ExcludeAssembliesWithoutSourcesto control automatic assembly exclusion 1164. The parameterInstrumentModulesWithoutLocalSourceshas been removed. since it can be handled by settingExcludeAssembliesWithoutSourcestoNone. - The default heuristics for determining whether to instrument an assembly has been changed. In previous versions any missing source file was taken as a signal that it was a third-party project that shouldn't be instrumented, with exceptions for some common file name patterns for source generators. Now only assemblies where no source files at all can be found are excluded from instrumentation, and the code for detecting source generator files have been removed. To get back to the behavior that at least one missing file is sufficient to exclude an assembly, set
ExcludeAssembliesWithoutSourcestoMissingAny, or use assembly exclusion filters for more fine-grained control.
Release date 2022-10-29
Packages
-
3.2.029 Oct 2022Release notes
Open source →Fixed
- Fix TypeLoadException when referencing Microsoft.Extensions.DependencyInjection v6.0.1 #1390
- Source Link for code generators fails #1322
- Await foreach has wrong branch coverage when method is generic #1210
- ExcludeFromCodeCoverage attribute on local functions ignores lambda expression #1302
Added
- Added InstrumentModulesWithoutLocalSources setting #1360 by @TFTomSun
Release date 2022-02-06
Packages
-
3.1.206 Feb 2022 -
3.1.130 Jan 2022Release notes
Open source →Fixed
- Fix wrong branch coverage with EnumeratorCancellation attribute #1275
- Fix negative coverage exceeding int.MaxValue #1266
- Fix summary output format for culture de-DE #1263
- Fix branch coverage issue for finally block with await #1233
- Fix threshold doesn't work when coverage empty #1205
- Fix branch coverage issue for il switch #1177
- Fix branch coverage with using statement and several awaits#1176
- Fix
CopyCoverletDataCollectorFilesto avoid to override user dlls fordotnet publishscenario #1243
Improvements
- Improve logging in case of exception inside static ctor of NetstandardAwareAssemblyResolver #1230
- When collecting open the hitfile with read access #1214 by https://github.com/JamesWTruher
- Add CompilerGenerated attribute to the tracker #1229
Release date 2021-07-19
Packages
-
3.1.019 Jul 2021Release notes
Open source →Fixed
- Fix branch coverage for targetframework net472 #1167
- Fix F# projects with
unknownsource #1145 - Fix SkipAutoProps for inline assigned properties #1139
- Fix partially covered throw statement #1144
- Fix coverage threshold not failing when no coverage #1115
- Fix partially covered
await foreachstatement #1107 by https://github.com/alexthornton1 - Fix
System.MissingMethodException(TryGetIntArgFromDict) #1101 - Fix ExcludeFromCodeCoverage on props #1114
- Fix incorrect branch coverage with await using #1111 by https://github.com/alexthornton1
Added
- Support deterministic reports #1113
- Specifying threshold level for each threshold type #1123 by https://github.com/pbmiguel
Improvements
- Implementation of Npath complexity for the OpenCover reports #1058 by https://github.com/benjaminZale
Release date 2021-02-21
Packages
-
3.0.321 Feb 2021Release notes
Open source →Fixed
- Fix code coverage stops working if assembly contains source generators generated file #1091
Release date 2021-01-24
Packages
-
3.0.224 Jan 2021Release notes
Open source →Fixed
- Fix multi-line lambda coverage regression #1060
- Opt-in reachability helper to mitigate resolution issue #1061
Release date 2021-01-16
Packages
-
3.0.116 Jan 2021Release notes
Open source →Fixed
- Fix severe loss in coverage #1043 by https://github.com/daveMueller
Release date 2021-01-09
Packages
-
3.0.009 Jan 2021Release notes
Open source →Fixed
- Attribute exclusion does not work if attribute name does not end with "Attribute" #884 by https://github.com/bddckr
- Fix deterministic build+source link bug #895
- Fix anonymous delegate compiler generate bug #896
- Fix incorrect branch coverage with await ValueTask #949 by https://github.com/alexthornton1
- Fix switch pattern coverage #1006
Added
- Skip autoprops feature #912
- Exclude code that follows [DoesNotReturn] from code coverage #904 by https://github.com/kevin-montrose
CoverletReportMSBuild variable containing coverage filenames #932 by https://github.com/0xced- Add Visual Studio Add-In #954 by https://github.com/FortuneN
- Remove workaround for deterministic build for sdk >= 3.1.100 #965
- Allow standalone coverlet usage for integration/end-to-end tests using .NET tool driver #991
- Support .NET Framework(>= net461) for in-process data collectors #970
Release date 2020-05-30
Packages
-
2.9.030 May 2020Nothing published for this version
-
2.8.102 Apr 2020Nothing published for this version
-
2.8.003 Jan 2020Nothing published for this version
-
2.7.022 Sep 2019Nothing published for this version
-
2.6.301 Jul 2019Nothing published for this version
-
2.6.206 Jun 2019Nothing published for this version
-
2.6.108 May 2019Nothing published for this version
-
2.6.004 Mar 2019Nothing published for this version
-
2.5.117 Jan 2019Nothing published for this version
-
2.5.020 Dec 2018Nothing published for this version
-
2.4.028 Nov 2018Nothing published for this version
-
2.3.219 Nov 2018Nothing published for this version
-
2.3.116 Oct 2018Nothing published for this version
-
2.3.007 Sep 2018Nothing published for this version
-
2.2.111 Aug 2018Nothing published for this version
-
2.1.116 Jul 2018Nothing published for this version
-
2.1.006 Jul 2018Nothing published for this version
-
2.0.112 Jun 2018Nothing published for this version
-
2.0.017 May 2018Nothing published for this version
-
1.2.002 May 2018Release notes
Open source →Added
- Add log to tracker #553
- Exclude by assembly level System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage #589
- Allow coverlet integration with other MSBuild test strategies#615 by https://github.com/sharwell
Fixed
- Fix and simplify async coverage #549
- Improve lambda scenario coverage #583
- Mitigate issue in case of failure in assembly loading by cecil #625
- Fix ConfigureAwait state machine generated branches #634
- Fix coverage overwritten if the project has multiple target frameworks #636
- Fix cobertura Jenkins reporter + source link support #614 by https://github.com/daveMueller
- Fix pdb file locking during instrumentation #656
Improvements
- Improve exception message for unsupported runtime #569 by https://github.com/daveMueller
- Improve cobertura absolute/relative path report generation #661 by https://github.com/daveMueller
Release date 2019-09-23
Packages
-
1.1.117 Apr 2018Nothing published for this version
-
1.1.016 Apr 2018Release notes
Open source →Added
- Output multiple formats for vstest integration #533 by https://github.com/daveMueller
- Different exit codes to indicate particular failures #412 by https://github.com/sasivishnu
Changed
- Skip instrumentation of module with embedded pdb without local sources #510, with this today xunit will be skipped in automatic way.
Fixed
- Fix exclude by files #524
- Changed to calculate based on the average coverage of the module #479 by https://github.com/dlplenin
- Fix property attribute detection #477 by https://github.com/amweiss
- Fix instrumentation serialization bug #458
- Fix culture for cobertura xml report #464
<!-- markdownlint-configure-file { "MD022": false, "MD024": false, "MD030": false, "MD032": false} -->
-
1.0.202 Apr 2018Nothing published for this version
-
1.0.126 Mar 2018Nothing published for this version
-
1.0.021 Mar 2018Nothing published for this version