What's New in PostSharp 6.3
This release contains the following improvements:
- Support for building on Linux and MacOS
- PostSharp Tools for Visual Studio improvements
- Support for Deterministic Build
- Free ordering of OnMethodBoundary aspects without OnYield/OnResume advices on async methods
- Contracts: ability to customize the type of thrown exceptions
Note that we've updated our platform requirements. See Breaking Changes in PostSharp 6.3 for details.
It is now possible to build .NET Core projects on Linux and MacOS. All distributions officially supported by .NET Core have been tested.
Performance improvements. We now use all asynchronous APIs of Visual Studio SDK, and we've rewritten some old WinForms controls into WPF.
Support for shared and multi-target projects. When editing a source file shared by several projects or targets, and if different aspects were used (e.g. using conditional compilation), the code adornments and tooltips now accurately reflect the aspects applied for the current project and/or target. The Aspect Explorer has been updated as well. Previously, PostSharp Tools for Visual Studio did not differentiate assemblies of the same name.
Support for per-monitor awareness of DPI.
Redesign of the Code Action manager dialog, which is now available as a page under the Options dialog box.
PostSharp should now respect the -deterministic compiler option. When this option is enabled, subsequent builds with the exact same input will result in the exact same output.
It is now possible to freely order an OnMethodBoundaryAspect before or after a MethodInterceptionAspect, but only if the OnMethodBoundaryAspect does not implement the OnYield(MethodExecutionArgs) or OnResume(MethodExecutionArgs) advices.
Note that ordering is still limited for iterator methods.
In previous versions, it was possible to customize the exception messages, but not the exception types itself. We now use a factory pattern to instantiate exceptions, so you can now completely customize the exceptions thrown by standard contracts. See Customizing Contract Exceptions for details.