Today we're excited to announce the general availability of PostSharp 6.0. You can download PostSharp 6.0 from our web site, from Visual Studio Marketplace, or from the stable channel of

While the list of new features seems modest, PostSharp 6.0 is actually the biggest refactoring since the 2.0 version released in July 2010. Most of the work went into supporting .NET Core 2.0 the right way, i.e. natively, without the dirty and increasingly unstable tricks we used in previous versions. This refactoring opens the road to running PostSharp on non-Windows platforms, but this will be for a future version.

We also aligned our versioning and support policies with the ones of Microsoft to cope with the faster release pace of the technologies we're building on (especially .NET Core and Visual Studio). PostSharp 6.0 is meant to replace PostSharp 5.0, so PostSharp 5.0 will stop being supported on September 9th, 2018. PostSharp 4.3 has been marked an LTS release and will be supported one year after the next LTS is released. Note that PostSharp 6.0 is not yet considered an LTS release.

New Platforms

Support for .NET Core 2.0-2.1 and .NET Standard 2.0 - PostSharp now runs natively under .NET Core 2.0 or later, which means that .NET Core projects are no longer cross-compiled from .NET Framework. Note that PostSharp 6.0 will still build only under Windows.

Support for Portable PDB - We now support portable PDB files as well as "embedded" portable PDBs. 

Support for C# 7.2 - The new in parameters and ref struct types are now properly handled. Note that the latest C# version (7.3) is not supported because it was released too shortly before our RC.

Support for CPS-based project systems in Visual Studio - The new project systems, which work with simpler project files and include built-in support for NuGet package references, are now properly supported.

New Features

Robust logging - A defect in the logging feature (whether in your code, in PostSharp, or in the logging framework) will not cause a failure of your application. By default, exceptions open the circuit breaker of the logging subsystem, therefore disabling logging for the rest of the application lifetime. See the documentation of this feature for details.

Flexible logging initialization - It is no longer necessary to initialize PostSharp.Patterns.Diagnostics before the first logged type is hit.

Cache locking - You can prevent concurrent executions of the same methods with the same arguments using the new cache locking facility. We provide an implementation for local (in-process) locking, and an open API to implement distributed locking. See the documentation for details.

Versioning hell solved - Different projects of a solution can now reference a different builds of PostSharp within the same major version, as long as "referencing" projects use a higher PostSharp version than "referenced" projects. We added a test battery to verify structural backward compatibility (compatibility of public APIs and serialization details).

GDPR compliance - We no longer: require your name and email address to register a trial or free license; use non-resettable device ids in our CEIP program; transfer data over unsecure HTTP; transfer personally-identifiable information when we open the web browser from Visual Studio or from our UI. (More work was done on our website to ensure GDPR compliance.)

Deprecated Platforms

Deprecation of support for Visual Studio 2012 - Please update to VS 2013 or later.

Deprecation of support for .NET Core SDK 1.1 - You can still build projects targeting .NET Core 1.1, but using .NET Core SDK 2.0 or later.


We're confident that the future of .NET resides in .NET Core and .NET Standard, and we're excited to say that with PostSharp 6.0 we've finally really caught up and we're ready to keep pace with Microsoft much better than before.

Happy PostSharping!


P.S. Oops, it seems the ducks started the release party without us.

Hot from the oven! Today we’re thrilled to announce that PostSharp 6.0 RC (previously numbered 5.1) is finally out after months and months of preparation and baking. PostSharp 6.0 is available for download from our website and from NuGet Gallery (remember to enable pre-releases).

PostSharp 6.0 is the biggest refactoring since the 2.0 version released in July 2010. For a good cause: PostSharp 6.0 now runs natively in .NET Core 2.0. Previous versions of PostSharp executed only under .NET Framework at build time and the support for .NET Core was achieved by using a load of hacks that ended up being unmaintainable, warranting this big refactoring.

Let’s have a look at the new features of PostSharp 6.0 :

  • Support for .NET Core 2.0-2.1 and .NET Standard 2.0.
  • Support for Portable PDB.
  • Support for C# 7.2.
  • Ending the PostSharp versioning hell side-by-side: backward compatibility within the same major version.
  • Logging: robustness to faults in the logging subsystem.
  • Logging: no need to initialize before the first logged method is hit.
  • Caching: preventing concurrent execution (locking).
  • Visual Studio tooling: support for the new CPS-based project systems.
  • GDPR compliance: we no longer collect your name and email for trial, nor use unsecure HTTP, nor use non-resettable user id hashes.

For a detailed description of all new features, see What’s New in PostSharp 6.0 in the reference documentation.

Additionally, we have updated our Support and Lifecycle Policies to put them in line with the modern Microsoft policies. We also updated our list of Supported Platforms and removed support for Visual Studio 2012 and old operating systems.

As the RC maturity level means all known bugs have been fixed, it’s a good time for you to try to update your projects to PostSharp 6.0, commit the changes in a separate branch, and report any issue you may encounter.

Happy PostSharping!


As the next version of PostSharp is getting closer to RC, we took the decision to change the version number from 5.1 to 6.0. This decision is purely technical and has no financial impact on customers since our licensing is not bound to the version number.

PostSharp respects semantic versioning, which means that we promise not to do breaking changes within the same major version. Since we had to introduce breaking changes, we had to increase the major version too. This seems fair, since PostSharp 6.0 is the biggest refactoring of our compiler internals in 8 years because we now run natively on .NET Core (PostSharp is now essentially a .NET Standard component). The good news are that there are almost breaking change at source code level, so, most probably, all you have to do is to update your packages.

We also decided to take the "PostSharp versioning hell" problem seriously, so you will now be able to reference several versions of PostSharp in the same solution. We've developed an internal tool that verifies the compatibility of our APIs with the previous version, including some details like serializable types and shared internals. 

Happy PostSharping!