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!

TL;DR If you use .NET Standard or .NET Core, you must now upgrade to PostSharp 5.1 even if it is not RTM.

We’re happy to announce that the first preview of PostSharp 5.1 is now ready for download on NuGet Gallery (make sure to enable the “include pre-release” option) and on our website.

PostSharp 5.1 will focus on providing support for .NET Standard 2.0 and .NET Core 2.0. Our objective is to port the PostSharp compiler itself to .NET Standard 2.0 so that we can compile .NET Standard and .NET Core applications natively, without cross-compilation. PostSharp 5.1 will still only support Windows as the only build platform.

PostSharp 5.1 comes after months of increasing instability of PostSharp 5.0. Initially, we tried to implement support for .NET Standard 2.0 and .NET Core 2.0 as bug fixes on the top of PostSharp 5.0, but it proved impossible to do without a significant refactoring of our type binding logic. We decided that, in respect to our .NET Framework users, we could not afford to destabilize PostSharp 5.0 any more, and therefore that any effort to support .NET Standard and .NET Core would go into a new version.

For the same reason, we will no longer solve bugs in .NET Standard 1.* and .NET Core 1.* in our PostSharp 5.0, but only in PostSharp 5.1.

PostSharp 5.0 was significantly destabilized by the release of .NET 4.7.1 and VS 15.5. We did not anticipate the breaking changes, as Microsoft seemed to be more careful with that in the past. At this moment, we realized we passed the breaking point of our type binding component and needed a complete refactoring to isolate us from what Microsoft may deem as implementation details.

We understand that several customers are not allowed to use pre-RTM releases of a product and our decision may push them in a difficult situation. We sincerely apologize. We’re going to push hard to move PostSharp 5.1 to RTM quality as soon as possible. Currently, we consider PostSharp 5.1 to be more stable than PostSharp 5.0, but it lacks testing in the field and customer feedback.

Happy PostSharping!