Announcing PostSharp 2.0 Update 5

by Gael Fraiteur on 26 Apr 2011

We just published the fifth maintenance release of PostSharp 2.0, correcting 29 bugs, mostly minor. The most significant improvement of this update is a solution to the number-one problem of PostSharp 2.0: its failure to load dependencies to C++ assemblies. The reason of the problem is that the CLR cannot load C++ assemblies when it is “hosted” (PostSharp hosts the CLR as SQL Server does). The solution proposed in this release is to load such assemblies for metadata only, i.e. do not load it with the CLR. This should be enough most of the time.

Even if you had no problem with previous versions of PostSharp, you may want to update to this version because it addresses an important run-time performance defect with OnExceptionAspect: the binding code was erroneously generated out of the catch block, so it was executed even when the aspect was not invoked. This issue is now solved.

This release is therefore a recommended upgrade for anyone.

Here’s the complete list of fixed issues:

  • Add possibility to specify the location of ILASM
  • Added support for Aspect.AspectPriority in Silverlight
  • AnnotationValue.FromObjectConstruction does not respect module translation
  • AnnovationValue.ToObjectConstruction does handle constructor arguments properly
  • Aspect MethodImplementationAspect missing from Silverlight build
  • Aspects inherited across assemblies are not visible in the Visual Studio Extension
  • AspectTypeDependencyAttribute does not work on Silverlight
  • Assemblies loaded by the native host may be given insufficient permissions
  • Assembly-level MulticastAttribute does not respect AttributeTargets=Struct/Delegate/Enum/...
  • AssemblyLoadException when loading mixed-mode assemblies, even when not required by PostSharp
  • Comparing method signatures ignores the method arity
  • Exception thrown on invalid lexical scopes
  • Expose the method Platform.LoadAssemblyFromFile to PostSharp.dll
  • Extension for VS2010 installed in wrong directory if VS is installed in non-default location
  • Generic parameter constraints are not loaded properly when lazy loading is enabled
  • Incorrect behavior when an IAspectProvider provides an invalid ObjectConstruction
  • Invalid code generation when IInstanceScopedAspect has explicit (private) implementation
  • IValidableAnnotation not executed if no aspect is included in the project
  • MulticastAttribute: symbols < and > in regular expressions are incorrectly escaped
  • NullReferenceException when introducing a method with custom attributes on parameters
  • OnExceptionAspect generates suboptimal code
  • PostSharp 2.0 is not side-by-side compatible with PostSharp 2.1 when a project references both versions
  • PostSharp emits PE32+ headers instead of PE32.
  • PostSharp.Aspects.Arguments implements IList
  • Sample database not included with the ContactManager example
  • Several issues with ExternalAspects in Silverlight
  • System.InvalidCastException: Unable to cast object of type PostSharp.Hosting.DotNet.ManagedDotNet40Platform' to type 'PostSharp.Hosting.NativeDotNetPlatform'.
  • Update check process throws exception on build servers
  • With MSIL serialization, system properties of MulticastAttributes are serialized, but should not

Next milestone: PostSharp 2.1 CTP 2.

Happy PostSharping!

-gael