MiniProfiler for .NET Documentation Go to the repo

Release Notes

This page tracks major changes included in any update starting with version 4.0.0.3

Unreleased

  • New:
    • Support for strict CSP (dynamic inline styles removed) (#634 - thanks rwasef1830)
    • Moved .NET Core to net8.0 with no Newtonsoft.Json dependency (#641 & #679)
    • Add support for additional client-side headers in custom implementations (#669 - thanks Breederveld)
  • Fixes/Changes:
    • Upgraded MongoDB driver, allowing automatic index creation and profiler expiration (#613 - thanks IanKemp)
    • Fixed #652: Respect PopupDecimalPlaces in all cases (#655)
  • Removed:
    • Support for rarely used providers (#679)
      • MiniProfiler.EFC7
      • MiniProfiler.Providers.RavenDB
      • MiniProfiler.Providers.SqlServerCe

Version 4.3.8

  • New:
    • Added an option to control SpacesAfterCommas to InlineSqlFormatter and SqlServerFormatter (#549 - thanks Turnerj)
    • Performance improvement: caching assembly names to reduce allocations during stack trace snippet generation (#605 - thanks benbryant0)
    • Added MiniProfiler.Minimal headless package with is a standalone bare-bones build with no depdencies and no UI, useful for mass scale applications that are viewing the results elsewhere (#636)
    • Add Nullable Reference Type annotations to the entire codebase (#640)
    • Add MiniProfilerOptions.TimingInstrumentationProvider allowing to hook when Timings are created, e.g. to drive Activity if desired (#650 - thanks m0sa)
  • Fixes/Changes:
    • Fixed /results-index ordering (should be newest to oldest) (#550 - thanks spaduret)
    • Fixed nonce attribute propagation to generated <link> style element for full CSP support (#565)
    • Changed popup to show 2 decimal places for timings by default, with a new PopupDecimalPlaces option to control this (present everywhere settings are) (#580)
    • Fix for time duration precision on Linux (#602 - thanks benbryant0)
    • Fixed #578: Making SQLite data types compatible for more use cases (#582 - thanks MarkZither)

Version 4.2.22

  • Minor fixes to build versioning

Version 4.2.1

  • New:
    • Added RavenDB Storage provider (#483 - thanks @lillo42!)
    • Added <script nonce="..." /> to rendering for CSP support (#465)
    • Added dark and “auto” (system preference decides) color themes, total is “Light”, “Dark”, and “Auto” (#451)
    • Generally moves to CSS 3 variables, for easier custom themes as well (#451)
    • Added SqlServerFormatter.IncludeParameterValues for excluding actual values in output if desired (#463)
    • Added “debug” mode (via .EnableDebugMode) that outputs stack dumps for every timing (expensive/heavy, and not intended for normal operation - #482)
    • Added .OnInternalError API to options (Action<Exception>), for logging when an exception during a MiniProfiler occurs (#486).
      • This also means save errors are “swallowed” now (and accessible via this API when desired).
    • (.NET Core only) Added MiniProfilerOptions.ResultsAuthorizeAsync and MiniProfiler.ResultsAuthorizeListAsync (#472)
    • (.NET Core only) Added profiling to all diagnostic events (views, filters, etc. - #475 & #482)
      • New options around this are in the ASP.NET Core docs on the left.
  • Fixes/Changes:
  • MySQL Storage:
    • Updates MySqlConnector to 0.60.1 for misc fixes (#432 - thanks @bgrainger!)
  • Redis Storage
    • Moves from StackExchange.Redis.StrongName to StackExchange.Redis 2.1.30 (#473)

Version 4.1.0

Version 4.0.0

  • ASP.NET Core 2.0+ support (MiniProfiler.AspNetCore and MiniProfiler.AspNetCore.Mvc packages)
  • ASP.NET (non-Core) support (MiniProfiler and MiniProfiler.Mvc5 packages)
  • Entity Framework Core (EFCore) support: MiniProfiler.EntityFrameworkCore
  • Full async support (correct timings)
  • Multi-threaded access support (goes with async)
  • netstandard1.5 and netstandard2.0 support
  • All libraries are strongly named
  • Client timings added to main UI for visual breakdown of requests
  • Storage providers (optional - for persistent storage of MiniProfilers) added and updated:
  • Major version breaking changes
    • UI templating has been removed. The share and includes templates are now much more optimized code. Given the very few people customizing these, they certainly weren’t worth the performance tradeoffs. The includes are now much smaller.
    • CSS class prefixes are now mp- instead of profiler- for fewer conflicts in styling.
    • A Name field has been added to all SQL storage providers.
    • Dropped .NET 4.5 support, due to lack of the framework bits needed to really make async profiling work correctly.
    • MiniProfiler.Step() and MiniProfiler.StepIf() methods now return Timing (the same previous underlying type) instead of IDisposable.
    • IProfilerProvider replaced with IAsyncProfilerProvider (which adds StopAsync(bool discardResults)).
    • IStorage replaced with IAsyncStorage (which adds ListAsync, SaveAsync, LoadAsync, SetUnviewedAsync, SetViewedAsync, and GetUnviewedIdsAsync).
    • ProfiledDbCommand, ProfiledDbConnection, and SimpleProfiledCommand no longer implement ICloneable.
    • MiniProfiler.Settings.(AssembliesToExclude|TypesToExclude|MethodsToExclude) changed from IEnumerable<string> to HashSet<string> (for performance).
    • MiniProfiler.ToJson(MiniProfiler profiler) is now profiler.ToJson() (instance method)
    • [Obsolete] methods removed:
      • IProfilerProvider.Start(ProfileLevel level, string sessionName = null)
      • MiniProfiler.Settings.ExcludeStackTraceSnippetFromSqlTimings
      • MiniProfiler.Settings.UseExistingjQuery
      • MiniProfilerExtensions.Inline<T>(this MiniProfiler profiler, Func<T> selector, string name, ProfileLevel level)
      • MiniProfilerExtensions.Step(this MiniProfiler profiler, string name, ProfileLevel level)
    • More information about v4.0 decisions can be found in Issue #144.